diff --git a/gin_ops/.gitignore b/gin_ops/.gitignore new file mode 100644 index 0000000..45333e2 --- /dev/null +++ b/gin_ops/.gitignore @@ -0,0 +1,10 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +.DS_Store +/data +/tmp \ No newline at end of file diff --git a/gin_ops/LICENSE b/gin_ops/LICENSE new file mode 100644 index 0000000..192b8a6 --- /dev/null +++ b/gin_ops/LICENSE @@ -0,0 +1,11 @@ +MIT 许可证 + +版权所有 (c) [年份] [版权所有者] + +特此免费授予任何获得本软件和相关文档文件(以下简称“软件”)副本的人,不受限制地处理本软件的权限,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件的副本,并允许获得本软件的人在接受以下条件的前提下行使这些权利: + +1. 没想好 + +上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。 + +本软件按“原样”提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是因合同、侵权或其他原因引起的,还是与本软件或使用本软件相关的。 \ No newline at end of file diff --git a/gin_ops/def_config/config_temp.yaml b/gin_ops/def_config/config_temp.yaml new file mode 100644 index 0000000..fd8c3d8 --- /dev/null +++ b/gin_ops/def_config/config_temp.yaml @@ -0,0 +1,29 @@ +web: + host: "127.0.0.1" + web_port: "8080" + tls: false + cert_private_path: "" + cert_public_path: "" + +database: + type: "mysql" # mysql or sqlite + path: "" # sqlite path + host: "" # mysql host + port: "" + name: "" + user: "" + pass: "" + +user: + cookie_timeout: 604800 + pass_hash_type: "md5" #密码哈希类型 text md5 + def_avatar_save_path: "/data/avatar/" #头像保存的真实位置 + def_avatar_ginrouter_path: "/avatar/" #gin 路由的路径 + def_avatar_path: "/static/avatars/def.png" + +warehouses: + repos_per_page: 12 #每页显示多少个仓库 + repo_items_per_page: 10 #每个仓库的每页显示多少个物品 + + +configed: false diff --git a/gin_ops/def_config/error_codes.json b/gin_ops/def_config/error_codes.json new file mode 100644 index 0000000..2ee6138 --- /dev/null +++ b/gin_ops/def_config/error_codes.json @@ -0,0 +1,20 @@ +{ + "api_ok":0, + "user_name_dup":1, + "user_name_nofind":2, + "user_password_err":3, + "user_api_error":4, + "user_no_sign":5, + "file_save_err":6, + "file_type_err":7, + "file_get_err":8, + "file_size_err":9, + "file_mime_err":10, + "json_error":11, + "gin_error":12, + "path_error":13, + "email_error":14, + "warehouses_api_err":15, + "warehouses_name_err":16, + "warehouses_id_err":17 +} \ No newline at end of file diff --git a/gin_ops/go.mod b/gin_ops/go.mod new file mode 100644 index 0000000..8ac7c2a --- /dev/null +++ b/gin_ops/go.mod @@ -0,0 +1,62 @@ +module saas + +go 1.24 + +toolchain go1.24.2 + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/gabriel-vasile/mimetype v1.4.9 // indirect + github.com/gin-contrib/sessions v1.0.3 // indirect + github.com/gin-contrib/sse v1.1.0 // indirect + github.com/gin-gonic/gin v1.10.0 // indirect + github.com/glebarez/go-sqlite v1.22.0 // indirect + github.com/glebarez/sqlite v1.11.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.26.0 // indirect + github.com/go-sql-driver/mysql v1.9.2 // indirect + github.com/goccy/go-json v0.10.5 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/context v1.1.2 // indirect + github.com/gorilla/securecookie v1.1.2 // indirect + github.com/gorilla/sessions v1.4.0 // indirect + github.com/howeyc/fsnotify v0.9.0 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/pilu/config v0.0.0-20131214182432-3eb99e6c0b9a // indirect + github.com/pilu/fresh v0.0.0-20240621171608-8d1fef547a99 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/soulteary/gin-static v0.2.6 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + golang.org/x/arch v0.17.0 // indirect + golang.org/x/crypto v0.38.0 // indirect + golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/driver/mysql v1.5.7 // indirect + gorm.io/gorm v1.26.1 // indirect + modernc.org/libc v1.63.0 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.10.0 // indirect + modernc.org/sqlite v1.37.0 // indirect +) diff --git a/gin_ops/go.sum b/gin_ops/go.sum new file mode 100644 index 0000000..db9be4e --- /dev/null +++ b/gin_ops/go.sum @@ -0,0 +1,145 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM= +github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8= +github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= +github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= +github.com/gin-contrib/sessions v1.0.3 h1:AZ4j0AalLsGqdrKNbbrKcXx9OJZqViirvNGsJTxcQps= +github.com/gin-contrib/sessions v1.0.3/go.mod h1:5i4XMx4KPtQihnzxEqG9u1K446lO3G19jAi2GtbfsAI= +github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w= +github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= +github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= +github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= +github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k= +github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= +github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/context v1.1.2 h1:WRkNAv2uoa03QNIc1A6u4O7DAGMUVoopZhkiXWA2V1o= +github.com/gorilla/context v1.1.2/go.mod h1:KDPwT9i/MeWHiLl90fuTgrt4/wPcv75vFAZLaOOcbxM= +github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA= +github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= +github.com/gorilla/sessions v1.4.0 h1:kpIYOp/oi6MG/p5PgxApU8srsSw9tuFbt46Lt7auzqQ= +github.com/gorilla/sessions v1.4.0/go.mod h1:FLWm50oby91+hl7p/wRxDth9bWSuk0qVL2emc7lT5ik= +github.com/howeyc/fsnotify v0.9.0 h1:0gtV5JmOKH4A8SsFxG2BczSeXWWPvcMT0euZt5gDAxY= +github.com/howeyc/fsnotify v0.9.0/go.mod h1:41HzSPxBGeFRQKEEwgh49TRw/nKBsYZ2cF1OzPjSJsA= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= +github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/pilu/config v0.0.0-20131214182432-3eb99e6c0b9a h1:Tg4E4cXPZSZyd3H1tJlYo6ZreXV0ZJvE/lorNqyw1AU= +github.com/pilu/config v0.0.0-20131214182432-3eb99e6c0b9a/go.mod h1:9Or9aIl95Kp43zONcHd5tLZGKXb9iLx0pZjau0uJ5zg= +github.com/pilu/fresh v0.0.0-20240621171608-8d1fef547a99 h1:+X7Gb40b5Bl3v5+3MiGK8Jhemjp65MHc+nkVCfq1Yfc= +github.com/pilu/fresh v0.0.0-20240621171608-8d1fef547a99/go.mod h1:2LLTtftTZSdAPR/iVyennXZDLZOYzyDn+T0qEKJ8eSw= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/soulteary/gin-static v0.2.6 h1:IOfF2kpNyhNLJBQH1y4tMCDuDdY5SFcpQNYSYWDRlPo= +github.com/soulteary/gin-static v0.2.6/go.mod h1:YTYRXDHQnssfe5nlgtysPHBpavMq4TxMMYqx/keSwzc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +golang.org/x/arch v0.16.0 h1:foMtLTdyOmIniqWCHjY6+JxuC54XP1fDwx4N0ASyW+U= +golang.org/x/arch v0.16.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= +golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU= +golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo= +gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= +gorm.io/gorm v1.26.1 h1:ghB2gUI9FkS46luZtn6DLZ0f6ooBJ5IbVej2ENFDjRw= +gorm.io/gorm v1.26.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +modernc.org/libc v1.63.0 h1:wKzb61wOGCzgahQBORb1b0dZonh8Ufzl/7r4Yf1D5YA= +modernc.org/libc v1.63.0/go.mod h1:wDzH1mgz1wUIEwottFt++POjGRO9sgyQKrpXaz3x89E= +modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= +modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= +modernc.org/memory v1.10.0 h1:fzumd51yQ1DxcOxSO+S6X7+QTuVU+n8/Aj7swYjFfC4= +modernc.org/memory v1.10.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= +modernc.org/sqlite v1.37.0 h1:s1TMe7T3Q3ovQiK2Ouz4Jwh7dw4ZDqbebSDTlSJdfjI= +modernc.org/sqlite v1.37.0/go.mod h1:5YiWv+YviqGMuGw4V+PNplcyaJ5v+vQd7TQOgkACoJM= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/gin_ops/main.go b/gin_ops/main.go new file mode 100644 index 0000000..ca84c26 --- /dev/null +++ b/gin_ops/main.go @@ -0,0 +1,109 @@ +package main + +import ( + "fmt" + "os" + "saas/models" + "saas/routers" + + "github.com/gin-gonic/gin" + "gopkg.in/yaml.v3" +) + +func init() { + +} + +func main() { + fmt.Println("main_init!") + data_path := "./data/upload/" + avatar_path := "./data/avatar/" + config_file_path := "./data/config.yaml" + config_temp_path := "./def_config/config_temp.yaml" + // 直接尝试创建所有必要的目录 + err := os.MkdirAll(data_path, 0755) + if err != nil { + fmt.Printf("创建文件夹失败: %v\n", err) + return + } + err = os.MkdirAll(avatar_path, 0755) + if err != nil { + fmt.Printf("创建文件夹失败: %v\n", err) + return + } + //fmt.Println("文件夹创建成功或已存在") + //尝试读取配置 + if !models.File_exists(config_file_path) { + fmt.Println("读取配置失败") + + //复制配置模板 + fmt.Println("复制配置模板") + input, err := os.ReadFile(config_temp_path) + if err != nil { + fmt.Println(err) + return + } + err = os.WriteFile(config_file_path, input, 0644) + if err != nil { + fmt.Println(err) + return + } + fmt.Printf("需要修改此配置:%s\n", config_file_path) + return + } + //读取默认配置 + data, err := os.ReadFile(config_file_path) + if err != nil { + fmt.Println(err) + return + } + + if err := yaml.Unmarshal(data, &models.Configs); err != nil { + fmt.Println(err) + return + } + + if models.Configs["configed"] == false { + fmt.Printf("需要将:%s 内的configed设置为true", config_file_path) + return + } + + //统一初始化 + models.All_config_init() + + r := gin.Default() + r.LoadHTMLGlob("templates/*") + + // + r.StaticFile("/favicon.ico", "./static/favicon.ico") + r.StaticFile("/robots.txt", "./static/robots.txt") + r.Static("/static/", "./static/static/") + r.Static("/dist/", "./static/dist/") + + //静态用户上传的文件 + r.Static("/avatar/", avatar_path) + //store := cookie.NewStore([]byte("secret")) + + // 自定义 404 页面(需要提前加载模板) + r.NoRoute(func(ctx *gin.Context) { + + ctx.HTML(404, "error_404.html", gin.H{}) + }) + + routers.Def_router(r.Group("/")) //分组路由传递到def_routers。go + + var http_port = models.Wed_configs["host"].(string) + ":" + models.Wed_configs["web_port"].(string) + if models.Wed_configs["tls"].(bool) { + if models.Wed_configs["cert_public_path"] == "" || models.Wed_configs["cert_private_path"] == "" { + fmt.Printf("需要配置证书路径") + return + } else { + fmt.Println("https://" + http_port) + r.RunTLS(http_port, models.Wed_configs["cert_public_path"].(string), models.Wed_configs["cert_private_path"].(string)) + } + } else { + fmt.Println("http://" + http_port) + r.Run(http_port) + } + +} diff --git a/gin_ops/models/config.go b/gin_ops/models/config.go new file mode 100644 index 0000000..cd17fe5 --- /dev/null +++ b/gin_ops/models/config.go @@ -0,0 +1,36 @@ +package models + +var Configs map[string]interface{} + +var Wed_configs map[string]interface{} + +var Database_configs map[string]interface{} + +var User_configs map[string]interface{} + +var Allowed_avatar_ext = map[string]bool{ + ".jpg": true, + ".jpeg": true, + ".png": true, +} + +var Allowed_avatar_mime = map[string]bool{ + "image/jpeg": true, + "image/png": true, +} + +func init() { + +} + +func All_config_init() { + //读取web配置 + Wed_configs = Configs["web"].(map[string]interface{}) + + //初始化数据库 + Database_init() + + //初始化user config + User_configs = Configs["user"].(map[string]interface{}) + +} diff --git a/gin_ops/models/cookie.go b/gin_ops/models/cookie.go new file mode 100644 index 0000000..2640e7f --- /dev/null +++ b/gin_ops/models/cookie.go @@ -0,0 +1 @@ +package models diff --git a/gin_ops/models/database.go b/gin_ops/models/database.go new file mode 100644 index 0000000..8abe1bf --- /dev/null +++ b/gin_ops/models/database.go @@ -0,0 +1,191 @@ +package models + +import ( + "fmt" + "time" + + "github.com/glebarez/sqlite" + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +var DB *gorm.DB +var err error + +type User struct { + ID uint `gorm:"primaryKey;autoIncrement"` // 自增主键 + Name string `gorm:"size:100;uniqueIndex"` // 唯一约束索引 + Email string `gorm:"size:255;index"` // 字符串长度限制100 索引 + Pass string `gorm:"size:128"` // 建议存储哈希后的密码 + Date time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP"` // 默认当前时间 +} + +type User_info struct { + ID uint `gorm:"primaryKey;autoIncrement"` + UserID uint `gorm:"not null;uniqueIndex"` + FirstName string `gorm:"size:50;null"` + Username string `gorm:"size:30;null"` + Birthdate time.Time `gorm:"type:datetime;null"` + Gender string `gorm:"type:char(1);check:gender IN ('M', 'F', 'U');default:'U'"` + AvatarPath string `gorm:"size:255"` + Region string `gorm:"size:50"` + Language string `gorm:"size:10;default:'zh-CN'"` + CreatedAt time.Time `gorm:"type:datetime;default:CURRENT_TIMESTAMP;column:created_at"` +} + +// var def_user_info = User_info{ +// ID:0, +// UserID:0, +// } + +type Cookie struct { + ID uint `gorm:"primaryKey;autoIncrement"` + UserID uint `gorm:"size:16;not null"` + Name string `gorm:"size:255;not null;index"` + Value string `gorm:"size:255;not null;index"` + Domain string `gorm:"size:255;not null"` + Path string `gorm:"size:255;not null;default:/"` + ExpiresAt time.Time `gorm:"type:datetime;index"` + CreatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"` + UpdatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"` + SecureFlag bool `gorm:"not null;default:false"` + HttpOnly bool `gorm:"not null;default:false"` + SameSite string `gorm:"size:10;not null;default:'Lax'"` + PartitionKey string `gorm:"size:50"` +} + +type Warehouse struct { + ID uint `gorm:"primaryKey;autoIncrement"` + CreatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"` + UpdatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"` + Name string `gorm:"type:varchar(255);not null;index"` // 仓库名称 + CreatorID uint `gorm:"not null;index"` // 创建用户ID(外键) + Location string `gorm:"type:varchar(500);not null"` // 仓库位置 + Capacity int `gorm:"not null;check:capacity >= 0"` // 仓库总容量 + UsedCapacity int `gorm:"not null;check:used_capacity >= 0"` // 已用容量 + ImagePath string `gorm:"type:varchar(1000)"` // 仓库图片路径 + Info string `gorm:"type:text"` // 仓库详细信息 + +} + +// 物品状态枚举 +type ItemStatus string + +const ( + ItemStatusAvailable ItemStatus = "available" + ItemStatusMaintenance ItemStatus = "maintenance" + ItemStatusRetired ItemStatus = "retired" +) + +// Item 仓库物品表模型 +type Item struct { + ID uint `gorm:"primaryKey;autoIncrement"` + CreatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"` + UpdatedAt time.Time `gorm:"type:datetime;not null;default:CURRENT_TIMESTAMP"` + + // 基本信息 + Name string `gorm:"type:varchar(255);not null;comment:物品名称"` + Description string `gorm:"type:text;comment:物品描述"` + + // 库存信息 + WarehouseID uint `gorm:"not null;index;comment:仓库ID"` + Quantity uint `gorm:"not null;default:0;comment:库存数量"` + Location string `gorm:"type:varchar(100);comment:库内位置"` + + // 状态管理 + Status ItemStatus `gorm:"type:varchar(20);not null;default:'available';index;comment:物品状态"` + + // 扩展信息 + BatchNumber string `gorm:"type:varchar(50);comment:批次号"` + ExpirationDate time.Time `gorm:"type:date;comment:失效日期"` + + // 关联关系 + //Warehouse Warehouse `gorm:"foreignKey:WarehouseID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:RESTRICT"` +} + +type WarehouseItem struct { + ID uint `gorm:"primaryKey;autoIncrement"` + CreatedByID uint `gorm:"not null;index:idx_created_by;comment:创建用户ID"` + WarehouseID uint `gorm:"not null;index:idx_warehouse;comment:仓库ID"` + CreatedAt time.Time `gorm:"autoCreateTime;index:idx_created_at;comment:创建时间"` + Name string `gorm:"type:varchar(255);not null;index:idx_name;comment:物品名称"` + SerialNumber string `gorm:"type:varchar(100);index;null;comment:序列号"` + Description string `gorm:"type:text;null;comment:物品描述"` + ShelfLocation string `gorm:"type:varchar(50);null;index:idx_shelf;comment:货架位置"` + Quantity int `gorm:"type:int unsigned;null;comment:物品数量"` + UpdatedAt time.Time `gorm:"autoUpdateTime;index:idx_updated_at;comment:最后更新时间"` + Status string `gorm:"type:varchar(10);default:'正常';index:idx_status;comment:物品状态(正常/损坏/维修/报废)"` + Color string `gorm:"type:varchar(16);default:'bg-success';comment:状态颜色"` + Destiny string `gorm:"type:varchar(100);index:idx_destiny;null;comment:物品归宿"` + ItemValue int `gorm:"type:int;null;comment:物品价值(单位:分)"` +} + +// 工单表 +type Ticket struct { + ID uint `gorm:"primaryKey;autoIncrement" json:"id"` // 自增ID + Title string `gorm:"type:varchar(255);index:idx_title,length:191" json:"title"` // 带索引标题 + Info string `gorm:"type:text;not null" json:"info"` // 详细信息 + Type string `gorm:"type:varchar(16);not null;default:'normal'" json:"type"` // 工单类型 + CreatedAt time.Time `gorm:"autoCreateTime;index;not null;" json:"createdAt"` // 创建日期 + UpdatedAt time.Time `gorm:"autoCreateTime;index;not null;" json:"updatedAt"` // 最后更新时间 + UserID uint `gorm:"index;not null" json:"userId"` // 创建用户ID + Status string `gorm:"type:varchar(16);index;not null;default:'open'" json:"status"` // 最后状态 + Color string `gorm:"type:varchar(32);not null;default:'#3498db'" json:"color"` // 状态颜色 + ItemID uint `gorm:"null" json:"itemId"` // 关联物件ID + CommentCount uint `gorm:"not null;default:0" json:"commentCount"` // 评论数量 +} + +func init() { + +} + +func Database_init() { + + fmt.Println("database_init") + //var database_config map[string]interface{}=Configs["database"] + Database_configs = Configs["database"].(map[string]interface{}) + + if Database_configs["type"].(string) == "sqlite" { + //sqlite init + fmt.Println("sqlite") + DB, err = gorm.Open(sqlite.Open(Database_configs["path"].(string)), &gorm.Config{}) + } else if Database_configs["type"].(string) == "mysql" { + //mysql init + fmt.Println("mysql") + dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", Database_configs["user"].(string), Database_configs["pass"].(string), Database_configs["host"].(string), Database_configs["port"].(string), Database_configs["name"].(string)) + DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) + } + + if err != nil { + fmt.Println(err) + panic("数据库连接失败") + } + + // 检查 users 表是否存在 + // if !DB.Migrator().HasTable(&User{}) { + // // 自动创建表结构 + // err := DB.AutoMigrate(&User{}) + // if err != nil { + // panic("创建表失败: " + err.Error()) + // } + // fmt.Println("users 表已创建") + // } else { + // fmt.Println("users 表已存在") + // } + + // 自动创建表结构 + DB.AutoMigrate(&User{}) + + DB.AutoMigrate(&User_info{}) + + DB.AutoMigrate(&Cookie{}) + + DB.AutoMigrate(&Warehouse{}) + + DB.AutoMigrate(&Item{}) + + DB.AutoMigrate(&WarehouseItem{}) + + DB.AutoMigrate(&Ticket{}) + +} diff --git a/gin_ops/models/def_models.go b/gin_ops/models/def_models.go new file mode 100644 index 0000000..050a5ea --- /dev/null +++ b/gin_ops/models/def_models.go @@ -0,0 +1,131 @@ +package models + +import ( + "crypto/md5" + "crypto/rand" + "encoding/hex" + "fmt" + "os" + "regexp" + "time" +) + +func Unix_to_str_time(nanos int64) string { + t := time.Unix(0, nanos) + return (t.Format("2006-01-02 15:04:05.999999999")) // 输出:2021-06-10 09:49:59.123456789 +} + +// 获取当前时间字符串 +// 参数格式可选,默认"2006-01-02 15:04:05" +func Get_current_time_string(format ...string) string { + // 默认格式 + layout := "2006_01_02-15_04_05.999999999" + + // 如果传入了格式参数则使用自定义格式 + if len(format) > 0 { + layout = format[0] + } + + return time.Now().Format(layout) +} + +func Time_date_str_to_time(timestr string) time.Time { + + // 定义与字符串匹配的布局(注意必须使用Go的参考时间格式) + layout := "2006-01-02" + + // 解析时间 + t, err := time.Parse(layout, timestr) + if err != nil { + var notime time.Time + + return notime + } + + return t + +} + +// 判断文件是否存在 +func File_exists(path string) bool { + _, err := os.Stat(path) + if err != nil { + return !os.IsNotExist(err) + } + return true +} + +func Is_email_valid(email string) bool { + // 正则表达式(覆盖 99% 常见邮箱格式) + pattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` + regex := regexp.MustCompile(pattern) + return regex.MatchString(email) +} + +func Valid_str_len(s string, min, max int, checkRune bool) bool { + var length int + if checkRune { + length = len([]rune(s)) + } else { + length = len(s) + } + + if min < 0 || max < 0 || (max != 0 && max < min) { + return false // 参数非法 + } + + return length >= min && (max == 0 || length <= max) + + // 示例 + //valid1 := Valid_str_len("hello", 3, 20, false) // 校验字节数 + //valid2 := Valid_str_len("你好", 1, 2, true) // 校验字符数 +} + +func Rand_str_32() string { + // 生成 32 字节 (256 位) 随机数据 + b := make([]byte, 32) + if _, err := rand.Read(b); err != nil { + panic(err) + } + + // 转换为 16 进制字符串 (长度 64) + cookie := hex.EncodeToString(b) + return cookie +} + +func Md5_str(str string) string { + hashBytes2 := md5.Sum([]byte(str)) + hashString2 := hex.EncodeToString(hashBytes2[:]) // 注意数组转切片的[:] + return hashString2 +} + +func Hash_user_pass(str string) string { + switch User_configs["pass_hash_type"].(string) { + case "text": + return str + case "md5": + return Md5_str(str) + } + + return Get_current_time_string() + Rand_str_32() //如果转换失败返回当前时间,避免撞库 +} + +func Page_range(start_page int64, end_page int64, now_page int64, href_heard string) []map[string]string { + var a []map[string]string + + for i := start_page; i <= end_page; i++ { + var active = "" + if i == now_page { + active = "active" + } else { + active = "" + } + a = append(a, map[string]string{ + "page_href": fmt.Sprintf("%s%d", href_heard, i), + "active": active, + "page": fmt.Sprintf("%d", i), + }) + } + + return a +} diff --git a/gin_ops/models/sql.go b/gin_ops/models/sql.go new file mode 100644 index 0000000..8b04844 --- /dev/null +++ b/gin_ops/models/sql.go @@ -0,0 +1,5 @@ +package models + +func init() { + +} diff --git a/gin_ops/models/test.go b/gin_ops/models/test.go new file mode 100644 index 0000000..8b04844 --- /dev/null +++ b/gin_ops/models/test.go @@ -0,0 +1,5 @@ +package models + +func init() { + +} diff --git a/gin_ops/models/warehouses.go b/gin_ops/models/warehouses.go new file mode 100644 index 0000000..eb50a1e --- /dev/null +++ b/gin_ops/models/warehouses.go @@ -0,0 +1,36 @@ +package models + +func Warehouse_get_total_pages() int64 { + var all_page int64 = 0 + + DB.Model(&Warehouse{}).Count(&all_page) + var repos_per_page = int64(Configs["warehouses"].(map[string]interface{})["repos_per_page"].(int)) + return (all_page / repos_per_page) + 1 + +} + +func Warehouse_get_warehouses(page int64) []Warehouse { + + if page == 0 { + return nil + } + + var pageSize = int(Configs["warehouses"].(map[string]interface{})["repos_per_page"].(int)) + var Warehouses []Warehouse + offset := int((int(page) - 1) * pageSize) + DB.Model(Warehouse{}). + Order("id DESC"). // 必须排序保证分页稳定 + Offset(offset). + Limit(pageSize). + Find(&Warehouses) + + return Warehouses +} + +func Warehouse_get_items_from_whid(wh_id uint) []WarehouseItem { + var seachf []WarehouseItem + var seach WarehouseItem + seach.WarehouseID = wh_id + DB.Where(&seach).Order("id DESC").Find(&seachf) + return seachf +} diff --git a/gin_ops/readme.md b/gin_ops/readme.md new file mode 100644 index 0000000..1b7e23f --- /dev/null +++ b/gin_ops/readme.md @@ -0,0 +1,6 @@ +# Ops +## Operations(运营)的缩写,广泛用于IT和业务运营领域。 +# 后端:go gin +- HTML前端渲染 +- API +# APP前端:vue diff --git a/gin_ops/routers/api_cookie.go b/gin_ops/routers/api_cookie.go new file mode 100644 index 0000000..176e33f --- /dev/null +++ b/gin_ops/routers/api_cookie.go @@ -0,0 +1,9 @@ +package routers + +import "github.com/gin-gonic/gin" + +func V1_cookie_api(r *gin.RouterGroup) { + r.GET("/test", func(ctx *gin.Context) { + ctx.SetCookie("test", "testcookie", 100, "/", "127.0.0.1", false, true) + }) +} diff --git a/gin_ops/routers/api_error.go b/gin_ops/routers/api_error.go new file mode 100644 index 0000000..20d3809 --- /dev/null +++ b/gin_ops/routers/api_error.go @@ -0,0 +1,24 @@ +package routers + +import ( + "encoding/json" + "fmt" + "os" +) + +var Error_code map[string]interface{} + +func init() { + //读取默认配置 + fmt.Println("尝试读取错误码文件") + data, err := os.ReadFile("./def_config/error_codes.json") + if err != nil { + + fmt.Println("读取错误码文件失败", err) + } + + if err := json.Unmarshal(data, &Error_code); err != nil { + fmt.Println("解析错误码文件失败", err) + } + +} diff --git a/gin_ops/routers/api_files.go b/gin_ops/routers/api_files.go new file mode 100644 index 0000000..7ab3da0 --- /dev/null +++ b/gin_ops/routers/api_files.go @@ -0,0 +1,146 @@ +package routers + +import ( + "crypto/sha256" + "encoding/hex" + "fmt" + "io" + "net/http" + "path" + "path/filepath" + "saas/models" + + "github.com/gin-gonic/gin" +) + +func V1_file_api(r *gin.RouterGroup) { + r.GET("/", func(ctx *gin.Context) { + ctx.JSON(http.StatusOK, map[string]interface{}{ + "error": "you need use Post", + }) + }) + r.POST("/upload", func(ctx *gin.Context) { + file, err := ctx.FormFile("file") + if err == nil { + dst := path.Join("./data/upload", file.Filename) + ctx.SaveUploadedFile(file, dst) + } + }) + + //接收头像的接口, + r.POST("/avatar", func(ctx *gin.Context) { + //返回前端的数据 + err_msg := "user_api_error" + err_code := Error_code[err_msg] + data := map[string]interface{}{} + + //判断权限是否可以接收 + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + //读取用户id信息 + user, _ := ctx.Get("user") + //保存这个头像 + file, err := ctx.FormFile("file") + if err == nil { + //限制文件大小 + if file.Size > 512 { + if file.Size < 1024000 { + // 2. 安全获取文件名并处理路径问题 + filename := filepath.Base(file.Filename) // 防御性处理路径分隔符 + // 3. 获取标准后缀名(含点) + extWithDot := filepath.Ext(filename) + //判断后缀名类型是否是允许的 + if models.Allowed_avatar_ext[extWithDot] { + //判断文件mime是否合法 + // 打开文件流 + src_mime, _ := file.Open() + defer src_mime.Close() + // 读取前512字节用于MIME检测 + buffer := make([]byte, 512) + io.ReadFull(src_mime, buffer) + // 检测MIME类型 + mimeType := http.DetectContentType(buffer) + if models.Allowed_avatar_mime[mimeType] { + // 打开文件流 + src, _ := file.Open() + defer src.Close() + // 创建SHA256哈希器 + hasher := sha256.New() + + // 计算哈希值 + io.Copy(hasher, src) + // 获取哈希结果 + hashBytes := hasher.Sum(nil) + hashString := hex.EncodeToString(hashBytes) + + new_filename := fmt.Sprintf("%d_%s%s", user.(*models.User).ID, hashString, extWithDot) + file.Filename = new_filename + + //这是上传的真实路径 + dst := path.Join("./data/avatar", file.Filename) + + //这是经过gin路由的路径 + gin_dat := path.Join("/avatar", file.Filename) + + //判断文件是否存在避免重复保存 + if models.File_exists(dst) { + //fmt.Println("文件存在") + err_msg = "api_ok" + err_code = Error_code[err_msg] + //返回gin路由的路径 + data["path"] = gin_dat + data["new_path"] = false + } else { + //fmt.Println("文件no存在") + ferr := ctx.SaveUploadedFile(file, dst) + if ferr == nil { + //文件保存成功 + err_msg = "api_ok" + err_code = Error_code[err_msg] + //返回gin路由的路径 + data["path"] = gin_dat + data["new_path"] = true + + } else { + err_msg = "file_save_err" + err_code = Error_code[err_msg] + fmt.Println(ferr) + data["err"] = ferr + } + } + } else { + err_msg = "file_mime_err" + err_code = Error_code[err_msg] + } + + } else { + err_msg = "file_type_err" + err_code = Error_code[err_msg] + } + } else { + err_msg = "file_size_err" + err_code = Error_code[err_msg] + } + } else { + err_msg = "file_size_err" + err_code = Error_code[err_msg] + } + + } else { + err_msg = "file_get_err" + err_code = Error_code[err_msg] + } + } else { + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + "data": data, + }) + }) +} diff --git a/gin_ops/routers/api_routers.go b/gin_ops/routers/api_routers.go new file mode 100644 index 0000000..662fdf0 --- /dev/null +++ b/gin_ops/routers/api_routers.go @@ -0,0 +1,23 @@ +package routers + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +func Api_router(r *gin.RouterGroup) { + + r.GET("/", func(ctx *gin.Context) { + ctx.String(http.StatusOK, "api") + }) + + v1_api := r.Group("/v1/") + { + V1_user_api(v1_api.Group("/user/")) + V1_file_api(v1_api.Group("/file/")) + V1_cookie_api(v1_api.Group("/cookie/")) + V1_warehouses_api(v1_api.Group("/warehouses_api/")) + } + +} diff --git a/gin_ops/routers/api_users.go b/gin_ops/routers/api_users.go new file mode 100644 index 0000000..3b3c1a1 --- /dev/null +++ b/gin_ops/routers/api_users.go @@ -0,0 +1,349 @@ +package routers + +import ( + "fmt" + "saas/models" + "strings" + "time" + + "github.com/gin-gonic/gin" +) + +func V1_user_api(r *gin.RouterGroup) { + + var err_code = Error_code["api_ok"] + var err_msg string + + r.POST("/add", func(ctx *gin.Context) { + //返回前端的数据 + err_msg = "user_api_error" + err_code = Error_code[err_msg] + //转换传进来的数据 + var jsonData map[string]interface{} + if err := ctx.ShouldBindJSON(&jsonData); err == nil { + //转换字段 + newUser := models.User{ + Name: jsonData["username"].(string), + Email: jsonData["useremail"].(string), + Pass: jsonData["userpass"].(string), // 实际应替换为哈希值 + Date: time.Now(), + // Date 字段无需赋值,数据库会自动填充默认值 + } + //对用户的密码进行哈希替换 + newUser.Pass = models.Hash_user_pass(newUser.Pass) + + //用户名是唯一的,先读取是否有这个用户名 + var user models.User + user.Name = newUser.Name + + if models.DB.Where(&user).First(&user).Error == nil { + //fmt.Println("找到用户:", user.ID) + err_msg = "user_name_dup" + err_code = Error_code[err_msg] + } else { + //fmt.Println("用户不存在") + models.DB.Create(&newUser) // 传入指针 + err_msg = "api_ok" + err_code = Error_code[err_msg] + } + + } else { + err_msg = "json_error" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + + }) + + r.POST("/login", func(ctx *gin.Context) { + //返回前端的数据 + err_msg = "user_api_error" + err_code = Error_code[err_msg] + //转换传进来的数据 + var jsonData map[string]interface{} + if err := ctx.ShouldBindJSON(&jsonData); err != nil { + fmt.Println("解析JSON ERROR:", err) + panic(err) + } + //转换字段 + newUser := models.User{ + Name: jsonData["username"].(string), + Pass: jsonData["userpass"].(string), // 实际应替换为哈希值 + // Date 字段无需赋值,数据库会自动填充默认值 + } + //对用户的密码进行哈希替换 + newUser.Pass = models.Hash_user_pass(newUser.Pass) + + var user models.User + user.Name = newUser.Name + if models.DB.Where(&user).First(&user).Error == nil { + // 有数据 + + if user.Pass == newUser.Pass { + //成功登录 + err_msg = "api_ok" + err_code = Error_code[err_msg] + //发送cookie + //cookie时间 + var cookie_time = 0 + if jsonData["keep_login"].(bool) { + cookie_time = models.User_configs["cookie_timeout"].(int) + } + + cookie := models.Rand_str_32() //生成32字节cookie + //cookie := "testcookie" + //fmt.Println(cookie) + //将cookie写进数据库 + new_cookie := models.Cookie{} + new_cookie.Domain = models.Wed_configs["host"].(string) + new_cookie.Name = "user" + new_cookie.Value = cookie + new_cookie.UserID = user.ID + + //cookie时间 + new_cookie.CreatedAt = time.Now() + new_cookie.UpdatedAt = new_cookie.CreatedAt + //计算cookie失效时间 + new_cookie.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间 + new_cookie.SecureFlag = models.Wed_configs["tls"].(bool) + ctx.SetCookie("user", cookie, cookie_time, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true) + + models.DB.Create(&new_cookie) // 传入指针 + + } else { + //密码错误 + err_msg = "user_password_err" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("用户不存在") + err_msg = "user_name_nofind" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + + }) + + r.POST("/logout", func(ctx *gin.Context) { + //返回前端的数据 + err_msg = "user_api_error" + err_code = Error_code[err_msg] + + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + //fmt.Println("loged") + cookie_vel, _ := ctx.Cookie("user") //这个cookie在中间件已经判断为有效的,否则is_login不可能为true,所以直接在数据库删除应该是安全的 + //删除数据库里的cookie + var cookie models.Cookie + cookie.Value = cookie_vel + models.DB.Where(&cookie).Delete(&cookie) + //删除前端cookie + ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true) + + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + }) + + r.POST("/updata_info", func(ctx *gin.Context) { + //返回前端的数据 + err_msg = "user_api_error" + err_code = Error_code[err_msg] + + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + //转换传进来的数据 + var jsonData map[string]interface{} + if err := ctx.ShouldBindJSON(&jsonData); err == nil { + + user_info_, _ := ctx.Get("user_info") + user_info, _ := user_info_.(*models.User_info) //这个数据本身就是从数据库读出来的,理论上结构转换不会出错 + user_info_find := models.User_info{ + ID: user_info.ID, + } + + new_user_info := models.User_info{ + AvatarPath: jsonData["avatar"].(string), + FirstName: jsonData["first_name"].(string), + Username: jsonData["username"].(string), + Birthdate: models.Time_date_str_to_time(jsonData["birthday"].(string)), + } + + //需要验证传入数据的合法性 例如头像url是否站内的 + if strings.HasPrefix(new_user_info.AvatarPath, models.User_configs["def_avatar_ginrouter_path"].(string)) { + + } else { + new_user_info.AvatarPath = models.User_configs["def_avatar_path"].(string) + } + + //fmt.Printf("%%#v: %#v\n", new_user_info) + models.DB.Where(&user_info_find).Updates(&new_user_info) + + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + err_msg = "json_error" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + }) + + r.POST("/change_email", func(ctx *gin.Context) { + //返回前端的数据 + err_msg = "user_api_error" + err_code = Error_code[err_msg] + + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + //转换传进来的数据 + var jsonData map[string]interface{} + if err := ctx.ShouldBindJSON(&jsonData); err == nil { + + //需要验证传入数据的合法性 + if models.Is_email_valid(jsonData["new_email"].(string)) { + user_, _ := ctx.Get("user") + user, _ := user_.(*models.User) + user_find := models.User{ + ID: user.ID, + } + user_new := models.User{ + Email: jsonData["new_email"].(string), + } + models.DB.Where(&user_find).Updates(&user_new) + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + err_msg = "email_error" + err_code = Error_code[err_msg] + } + + } else { + err_msg = "json_error" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + }) + + r.POST("/change_pass", func(ctx *gin.Context) { + //返回前端的数据 + err_msg = "user_api_error" + err_code = Error_code[err_msg] + + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + //转换传进来的数据 + var jsonData map[string]interface{} + if err := ctx.ShouldBindJSON(&jsonData); err == nil { + + //需要验证传入数据的合法性 + + //读取已登录的用户信息 + user_, _ := ctx.Get("user") + user, _ := user_.(*models.User) + user_find := models.User{ + ID: user.ID, + } + + models.DB.Where(&user_find).First(&user_find) + + pass_old := jsonData["pass_old"].(string) + pass_new := jsonData["pass_new"].(string) + //对用户的密码进行哈希替换 + pass_old = models.Hash_user_pass(pass_old) + pass_new = models.Hash_user_pass(pass_new) + + if user_find.Pass == pass_old { + + new_user := models.User{ + Pass: pass_new, + } + + //修改密码 + models.DB.Where(&user_find).Updates(&new_user) + + //密码修改后所有cookie都应该失效 + cookie_find := models.Cookie{ + UserID: user.ID, + } + models.DB.Where(&cookie_find).Delete(&cookie_find) + + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + err_msg = "user_password_err" + err_code = Error_code[err_msg] + } + + } else { + err_msg = "json_error" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + }) +} diff --git a/gin_ops/routers/api_warehouses.go b/gin_ops/routers/api_warehouses.go new file mode 100644 index 0000000..f38136e --- /dev/null +++ b/gin_ops/routers/api_warehouses.go @@ -0,0 +1,178 @@ +package routers + +import ( + "saas/models" + "strconv" + + "github.com/gin-gonic/gin" +) + +// 定义接收JSON数据的结构体 +type Add_item_json struct { + // 使用结构体标签指定JSON字段名 + WarehouseID uint `json:"warehouse_id"` + Name string `json:"item_name"` + Info string `json:"item_info"` + SN string `json:"item_sn"` + Who string `json:"item_who"` + Int int `json:"item_int"` + Consts float32 `json:"item_consts"` +} + +func V1_warehouses_api(r *gin.RouterGroup) { + var err_code = Error_code["api_ok"] + var err_msg string + + r.POST("/create", func(ctx *gin.Context) { + err_msg = "warehouses_api_err" + err_code = Error_code[err_msg] + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + user_info, _ := ctx.Get("user_info") + + //转换传进来的数据 + var jsonData map[string]interface{} + if err := ctx.ShouldBindJSON(&jsonData); err == nil { + //fmt.Println(jsonData) + if jsonData["warehouses_name"].(string) != "" { + warehouses_data := models.Warehouse{ + Name: jsonData["warehouses_name"].(string), + Info: jsonData["warehouses_info"].(string), + CreatorID: user_info.(*models.User_info).UserID, + Capacity: 0, + UsedCapacity: 0, + Location: "local", + } + models.DB.Create(&warehouses_data) // 传入指针 + //fmt.Println(dberr.Error) + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + err_msg = "warehouses_name_err" + err_code = Error_code[err_msg] + } + } else { + err_msg = "json_error" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + + }) + + r.POST("/add_item", func(ctx *gin.Context) { + err_msg = "warehouses_api_err" + err_code = Error_code[err_msg] + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + + //转换传进来的数据 + var item Add_item_json + if err := ctx.ShouldBindJSON(&item); err == nil { + //先判断是否有权限 + + //(还没弄) + + //后插入数据 + user_info_, _ := ctx.Get("user_info") + user_info := user_info_.(*models.User_info) + var add_item_temp models.WarehouseItem + add_item_temp.CreatedByID = user_info.UserID + add_item_temp.WarehouseID = item.WarehouseID + add_item_temp.Name = item.Name + add_item_temp.SerialNumber = item.SN + add_item_temp.Description = item.Info + add_item_temp.Destiny = item.Who + add_item_temp.Quantity = item.Int + add_item_temp.ItemValue = int(item.Consts * 100) + //插入一条数据 + models.DB.Create(&add_item_temp) + //更新仓库信息 + var seach_wh models.Warehouse + seach_wh.ID = item.WarehouseID + var out_wh models.Warehouse + models.DB.Where(&seach_wh).First(&out_wh) + out_wh.UsedCapacity += 1 + models.DB.Where(&seach_wh).Updates(&out_wh) + + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + err_msg = "json_error" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + }) + + }) + + r.GET("/get_items/:wh_id", func(ctx *gin.Context) { + err_msg = "warehouses_api_err" + err_code = Error_code[err_msg] + var seachf []models.WarehouseItem + //先判断是否已经登录 + //获取中间件处理的结果 + is_login, _ := ctx.Get("is_login") + if is_login == true { + id := ctx.Param("wh_id") + id_int, err := strconv.ParseInt(id, 10, 0) + if err == nil { + if id_int > 0 { + + seachf = models.Warehouse_get_items_from_whid(uint(id_int)) + //fmt.Println(seachf) + + err_msg = "api_ok" + err_code = Error_code[err_msg] + + } else { + err_msg = "warehouses_id_err" + err_code = Error_code[err_msg] + } + + } else { + err_msg = "warehouses_id_err" + err_code = Error_code[err_msg] + } + + } else { + //fmt.Println("no loged") + err_msg = "user_no_sign" + err_code = Error_code[err_msg] + } + + ctx.JSON(200, map[string]interface{}{ + "api": "ok", + "err_code": err_code, + "err_msg": err_msg, + "data": seachf, + }) + }) + +} diff --git a/gin_ops/routers/def_routers.go b/gin_ops/routers/def_routers.go new file mode 100644 index 0000000..b84437e --- /dev/null +++ b/gin_ops/routers/def_routers.go @@ -0,0 +1,282 @@ +package routers + +import ( + "fmt" + "net/http" + "saas/models" + "strconv" + "time" + + "github.com/gin-gonic/gin" +) + +func Def_router(r *gin.RouterGroup) { + r.Use(func(ctx *gin.Context) { + ctx.Set("is_login", false) + //读取用户cookie,判断用户是否已登录 + cookie_vel, _ := ctx.Cookie("user") + //fmt.Println(cookie_vel) + if cookie_vel != "" { + var cookie models.Cookie + cookie.Value = cookie_vel + if models.DB.Where(&cookie).First(&cookie).Error == nil { + // 有数据 + //有cookie,判断cookie有效性 + if cookie.ExpiresAt.After(time.Now()) { + // ExpiresAt 在当前时间之后(未过期) + //fmt.Println("Cookie 未过期") + //cookie有效,说明已经登录,cookie过期时间延长,避免大量写入数据库,先判断还有多久过期,小于一天才刷新 + // 计算过期时间与当前时间的差值 + remaining := time.Until(cookie.ExpiresAt) // 直接使用 time.Until + + if remaining < 24*time.Hour { + //fmt.Println("剩余时间不足 1 天") + var cookie_up models.Cookie + cookie_up.UpdatedAt = time.Now() + cookie_up.ExpiresAt = time.Now().Add(time.Duration(models.User_configs["cookie_timeout"].(int)) * time.Second) //计算过期时间 + models.DB.Model(&models.Cookie{}).Where(&cookie).Updates(&cookie_up) + } else { + //fmt.Println("cookie时间大于一天") + } + + //读取用户权限信息 + var user models.User + user.ID = cookie.UserID + if models.DB.Where(&user).First(&user).Error == nil { + //找到登录权限 + //清除一些重要数据,避免传递的时候泄露 + user.Pass = "" + // 读取用户info + var user_info models.User_info + user_info.UserID = cookie.UserID + if models.DB.Where(&user_info).First(&user_info).Error == nil { + // 有数据 + //fmt.Println(user_info) + + } else { + // 无数据 + //创建一个默认info + user_info.AvatarPath = models.User_configs["def_avatar_path"].(string) + user_info.UserID = cookie.UserID + models.DB.Create(&user_info) // 传入指针 + } + + ctx.Set("is_login", true) + ctx.Set("user_info", &user_info) + ctx.Set("user", &user) + + } else { + //找不到登录权限?? 可能被封号? + //删除前端cookie + ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true) + } + + } else { + // ExpiresAt 在当前时间之前或等于(已过期) + //fmt.Println("Cookie 已过期") + //删除数据库的cookie + models.DB.Delete(&cookie) + //删除前端cookie + ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true) + } + } else { + //找不到cookie,未登录 + //删除前端cookie + ctx.SetCookie("user", "", -1, "/", models.Wed_configs["host"].(string), models.Wed_configs["tls"].(bool), true) + } + + } + + }) + + Api_router(r.Group("/api/")) //分组路由传递到api_routers。go + + //无需权限的页面 + r.GET("/", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + ctx.HTML(http.StatusOK, "index.html", gin.H{ + "is_login": is_login, + "user_info": user_info, + }) + }) + + r.GET("/sign-up", func(ctx *gin.Context) { + ctx.HTML(http.StatusOK, "sign-up.html", gin.H{}) + }) + r.GET("/sign-in", func(ctx *gin.Context) { + ctx.HTML(http.StatusOK, "sign-in-01.html", gin.H{}) + }) + r.GET("/test", func(ctx *gin.Context) { + ctx.HTML(http.StatusOK, "empty.html", gin.H{}) + }) + + //需要权限的页面 + // r.Use(func(ctx *gin.Context) { + // is_login, _ := ctx.Get("is_login") + // //判断是否登录 + // if is_login == true { + + // } else { + // ctx.Redirect(302, "/sign-in") + // } + + // }) + r.GET("/workorders", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + //判断是否登录 + if is_login == true { + + ctx.HTML(http.StatusOK, "workorders.html", gin.H{ + "is_login": is_login, + "user_info": user_info, + }) + } else { + ctx.Redirect(302, "/sign-in") + } + }) + + r.GET("/warehouses", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + //判断是否登录 + if is_login == true { + total_pages := models.Warehouse_get_total_pages() //获取总页数 + disabled_next_page := false + if total_pages <= 1 { + disabled_next_page = true + } else { + disabled_next_page = false + } + + ctx.HTML(http.StatusOK, "warehouses.html", gin.H{ + "total_pages": total_pages, + "this_page": 1, + "prev_page": fmt.Sprintf("/warehouses/%d", 1), + "next_page": fmt.Sprintf("/warehouses/%d", 2), + "disabled_prev_page": true, + "disabled_next_page": disabled_next_page, + "page_range": models.Page_range(1, total_pages, 1, "/warehouses/"), + "Warehouses": models.Warehouse_get_warehouses(1), + "is_login": is_login, + "user_info": user_info, + }) + } else { + ctx.Redirect(302, "/sign-in") + } + }) + r.GET("/warehouses/:id", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + //判断是否登录 + if is_login == true { + id := ctx.Param("id") + id_int64, err := strconv.ParseInt(id, 10, 64) + if err == nil { + if id_int64 > 0 { + total_pages := models.Warehouse_get_total_pages() //获取总页数 + disabled_next_page := false + disabled_prev_page := false + if total_pages == id_int64 { + disabled_next_page = true + } else { + disabled_next_page = false + } + if id_int64 > 1 { + disabled_prev_page = false + } else { + disabled_prev_page = true + } + + //制作页码标签 + + ctx.HTML(http.StatusOK, "warehouses.html", gin.H{ + "total_pages": total_pages, + "this_page": id_int64, + "prev_page": fmt.Sprintf("/warehouses/%d", id_int64-1), + "next_page": fmt.Sprintf("/warehouses/%d", id_int64+1), + "disabled_prev_page": disabled_prev_page, + "disabled_next_page": disabled_next_page, + "page_range": models.Page_range(1, total_pages, id_int64, "/warehouses/"), + "Warehouses": models.Warehouse_get_warehouses(id_int64), + "is_login": is_login, + "user_info": user_info, + }) + } else { + ctx.Redirect(302, "/warehouses") + } + + } else { + ctx.Redirect(302, "/warehouses") + } + + } else { + ctx.Redirect(302, "/sign-in") + } + }) + + r.GET("/warehouse/:id", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + //判断是否登录 + if is_login == true { + id := ctx.Param("id") + id_int64, err := strconv.ParseInt(id, 10, 64) + if err == nil { + if id_int64 > 0 { + + ctx.HTML(http.StatusOK, "warehouses_show_item.html", gin.H{ + "warehouse_id": id_int64, + "is_login": is_login, + "user_info": user_info, + "items": models.Warehouse_get_items_from_whid(uint(id_int64)), + }) + } else { + ctx.Redirect(302, "/warehouses") + } + + } else { + ctx.Redirect(302, "/warehouses") + } + + } else { + ctx.Redirect(302, "/sign-in") + } + }) + r.GET("/setting-my", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + user, _ := ctx.Get("user") + //判断是否登录 + if is_login == true { + + ctx.HTML(http.StatusOK, "setting-my.html", gin.H{ + "is_login": is_login, + "user_info": user_info, + "user": user, + }) + } else { + ctx.HTML(404, "error_404.html", gin.H{}) + } + + }) + + r.GET("/setting-security", func(ctx *gin.Context) { + is_login, _ := ctx.Get("is_login") + user_info, _ := ctx.Get("user_info") + user, _ := ctx.Get("user") + //判断是否登录 + if is_login == true { + + ctx.HTML(http.StatusOK, "setting-security.html", gin.H{ + "is_login": is_login, + "user_info": user_info, + "user": user, + }) + } else { + ctx.HTML(404, "error_404.html", gin.H{}) + } + + }) +} diff --git a/gin_ops/static/dist/css/demo.css b/gin_ops/static/dist/css/demo.css new file mode 100644 index 0000000..44455a1 --- /dev/null +++ b/gin_ops/static/dist/css/demo.css @@ -0,0 +1,276 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +pre.highlight, +.highlight pre { + max-height: 30rem; + margin: 1.5rem 0; + overflow: auto; + border-radius: var(--tblr-border-radius); +} +pre.highlight, +.highlight pre { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +pre.highlight::-webkit-scrollbar, +.highlight pre::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + pre.highlight::-webkit-scrollbar, + .highlight pre::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +pre.highlight::-webkit-scrollbar-thumb, +.highlight pre::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +pre.highlight::-webkit-scrollbar-track, +.highlight pre::-webkit-scrollbar-track { + background: transparent; +} +pre.highlight:hover::-webkit-scrollbar-thumb, +.highlight pre:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +pre.highlight::-webkit-scrollbar-corner, +.highlight pre::-webkit-scrollbar-corner { + background: transparent; +} + +.highlight { + margin: 0; +} +.highlight code > * { + margin: 0 !important; + padding: 0 !important; +} +.highlight .c, .highlight .c1 { + color: #a0aec0; +} +.highlight .nt, .highlight .nc, .highlight .nx { + color: #ff8383; +} +.highlight .na, .highlight .p { + color: #ffe484; +} +.highlight .s, .highlight .dl, .highlight .s2 { + color: #b5f4a5; +} +.highlight .k { + color: #93ddfd; +} +.highlight .s1, .highlight .mi { + color: #d9a9ff; +} + +.example { + padding: 2rem; + margin: 1rem 0 2rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px 3px 0 0; + position: relative; + min-height: 12rem; + display: flex; + align-items: center; + overflow-x: auto; +} + +.example-centered { + justify-content: center; +} +.example-centered .example-content { + flex: 0 auto; +} + +.example-content { + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-body-color); + flex: 1; + max-width: 100%; +} +.example-content .page-header { + margin-bottom: 0; +} + +.example-bg { + background: #f6f8fb; +} + +.example-code { + margin: 2rem 0; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-top: none; +} +.example-code pre { + margin: 0; + border: 0; + border-radius: 0 0 3px 3px; +} +.example + .example-code { + margin-top: -2rem; +} + +.example-column { + margin: 0 auto; +} +.example-column > .card:last-of-type { + margin-bottom: 0; +} + +.example-column-1 { + max-width: 26rem; +} + +.example-column-2 { + max-width: 52rem; +} + +.example-modal-backdrop { + background: #182433; + opacity: 0.24; + position: absolute; + width: 100%; + left: 0; + top: 0; + height: 100%; + border-radius: 2px 2px 0 0; +} + +.card-sponsor { + background: var(--tblr-primary-lt) no-repeat center/100% 100%; + border-color: var(--tblr-primary); + min-height: 316px; +} + +.dropdown-menu-demo { + display: inline-block; + width: 100%; + position: relative; + top: 0; + margin-bottom: 1rem !important; +} + +.demo-icon-preview { + position: -webkit-sticky; + position: sticky; + top: 0; +} +.demo-icon-preview svg, +.demo-icon-preview i { + width: 15rem; + height: 15rem; + font-size: 15rem; + stroke-width: 1.5; + margin: 0 auto; + display: block; +} +@media (max-width: 575.98px) { + .demo-icon-preview svg, + .demo-icon-preview i { + width: 10rem; + height: 10rem; + font-size: 10rem; + } +} + +.demo-icon-preview-icon pre { + margin: 0; + -webkit-user-select: all; + -moz-user-select: all; + user-select: all; +} + +.demo-dividers > p { + opacity: 0.2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.demo-icons-list { + display: flex; + flex-wrap: wrap; + padding: 0; + margin: 0 -2px -1px 0; + list-style: none; +} +.demo-icons-list > * { + flex: 1 0 4rem; +} + +.demo-icons-list-wrap { + overflow: hidden; +} + +.demo-icons-list-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + aspect-ratio: 1; + text-align: center; + padding: 0.5rem; + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + color: inherit; + cursor: pointer; +} +.demo-icons-list-item .icon { + width: 1.5rem; + height: 1.5rem; + font-size: 1.5rem; +} +.demo-icons-list-item:hover { + text-decoration: none; +} + +.settings-btn { + position: fixed; + right: -1px; + top: 10rem; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} + +.settings-scheme { + display: inline-block; + border-radius: 50%; + height: 3rem; + width: 3rem; + position: relative; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} +.settings-scheme-light { + background: linear-gradient(135deg, #ffffff 50%, #fcfdfe 50%); +} +.settings-scheme-mixed { + background-image: linear-gradient(135deg, #182433 50%, #fff 50%); +} +.settings-scheme-transparent { + background: #fcfdfe; +} +.settings-scheme-dark { + background: #182433; +} +.settings-scheme-colored { + background-image: linear-gradient(135deg, var(--tblr-primary) 50%, #fcfdfe 50%); +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/demo.min.css b/gin_ops/static/dist/css/demo.min.css new file mode 100644 index 0000000..395af20 --- /dev/null +++ b/gin_ops/static/dist/css/demo.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.highlight pre,pre.highlight{max-height:30rem;margin:1.5rem 0;overflow:auto;border-radius:var(--tblr-border-radius)}.highlight pre,pre.highlight{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.highlight pre::-webkit-scrollbar,pre.highlight::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.highlight pre::-webkit-scrollbar,pre.highlight::-webkit-scrollbar{-webkit-transition:none;transition:none}}.highlight pre::-webkit-scrollbar-thumb,pre.highlight::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.highlight pre::-webkit-scrollbar-track,pre.highlight::-webkit-scrollbar-track{background:0 0}.highlight pre:hover::-webkit-scrollbar-thumb,pre.highlight:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.highlight pre::-webkit-scrollbar-corner,pre.highlight::-webkit-scrollbar-corner{background:0 0}.highlight{margin:0}.highlight code>*{margin:0!important;padding:0!important}.highlight .c,.highlight .c1{color:#a0aec0}.highlight .nc,.highlight .nt,.highlight .nx{color:#ff8383}.highlight .na,.highlight .p{color:#ffe484}.highlight .dl,.highlight .s,.highlight .s2{color:#b5f4a5}.highlight .k{color:#93ddfd}.highlight .mi,.highlight .s1{color:#d9a9ff}.example{padding:2rem;margin:1rem 0 2rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px 3px 0 0;position:relative;min-height:12rem;display:flex;align-items:center;overflow-x:auto}.example-centered{justify-content:center}.example-centered .example-content{flex:0 auto}.example-content{font-size:.875rem;line-height:1.4285714286;color:var(--tblr-body-color);flex:1;max-width:100%}.example-content .page-header{margin-bottom:0}.example-bg{background:#f6f8fb}.example-code{margin:2rem 0;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-top:none}.example-code pre{margin:0;border:0;border-radius:0 0 3px 3px}.example+.example-code{margin-top:-2rem}.example-column{margin:0 auto}.example-column>.card:last-of-type{margin-bottom:0}.example-column-1{max-width:26rem}.example-column-2{max-width:52rem}.example-modal-backdrop{background:#182433;opacity:.24;position:absolute;width:100%;left:0;top:0;height:100%;border-radius:2px 2px 0 0}.card-sponsor{background:var(--tblr-primary-lt) no-repeat center/100% 100%;border-color:var(--tblr-primary);min-height:316px}.dropdown-menu-demo{display:inline-block;width:100%;position:relative;top:0;margin-bottom:1rem!important}.demo-icon-preview{position:-webkit-sticky;position:sticky;top:0}.demo-icon-preview i,.demo-icon-preview svg{width:15rem;height:15rem;font-size:15rem;stroke-width:1.5;margin:0 auto;display:block}@media (max-width:575.98px){.demo-icon-preview i,.demo-icon-preview svg{width:10rem;height:10rem;font-size:10rem}}.demo-icon-preview-icon pre{margin:0;-webkit-user-select:all;-moz-user-select:all;user-select:all}.demo-dividers>p{opacity:.2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.demo-icons-list{display:flex;flex-wrap:wrap;padding:0;margin:0 -2px -1px 0;list-style:none}.demo-icons-list>*{flex:1 0 4rem}.demo-icons-list-wrap{overflow:hidden}.demo-icons-list-item{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;text-align:center;padding:.5rem;border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);color:inherit;cursor:pointer}.demo-icons-list-item .icon{width:1.5rem;height:1.5rem;font-size:1.5rem}.demo-icons-list-item:hover{text-decoration:none}.settings-btn{position:fixed;right:-1px;top:10rem;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0}.settings-scheme{display:inline-block;border-radius:50%;height:3rem;width:3rem;position:relative;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0}.settings-scheme-light{background:linear-gradient(135deg,#fff 50%,#fcfdfe 50%)}.settings-scheme-mixed{background-image:linear-gradient(135deg,#182433 50%,#fff 50%)}.settings-scheme-transparent{background:#fcfdfe}.settings-scheme-dark{background:#182433}.settings-scheme-colored{background-image:linear-gradient(135deg,var(--tblr-primary) 50%,#fcfdfe 50%)} \ No newline at end of file diff --git a/gin_ops/static/dist/css/demo.rtl.css b/gin_ops/static/dist/css/demo.rtl.css new file mode 100644 index 0000000..2f1c803 --- /dev/null +++ b/gin_ops/static/dist/css/demo.rtl.css @@ -0,0 +1,276 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +pre.highlight, +.highlight pre { + max-height: 30rem; + margin: 1.5rem 0; + overflow: auto; + border-radius: var(--tblr-border-radius); +} +pre.highlight, +.highlight pre { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +pre.highlight::-webkit-scrollbar, +.highlight pre::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + pre.highlight::-webkit-scrollbar, + .highlight pre::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +pre.highlight::-webkit-scrollbar-thumb, +.highlight pre::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +pre.highlight::-webkit-scrollbar-track, +.highlight pre::-webkit-scrollbar-track { + background: transparent; +} +pre.highlight:hover::-webkit-scrollbar-thumb, +.highlight pre:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +pre.highlight::-webkit-scrollbar-corner, +.highlight pre::-webkit-scrollbar-corner { + background: transparent; +} + +.highlight { + margin: 0; +} +.highlight code > * { + margin: 0 !important; + padding: 0 !important; +} +.highlight .c, .highlight .c1 { + color: #a0aec0; +} +.highlight .nt, .highlight .nc, .highlight .nx { + color: #ff8383; +} +.highlight .na, .highlight .p { + color: #ffe484; +} +.highlight .s, .highlight .dl, .highlight .s2 { + color: #b5f4a5; +} +.highlight .k { + color: #93ddfd; +} +.highlight .s1, .highlight .mi { + color: #d9a9ff; +} + +.example { + padding: 2rem; + margin: 1rem 0 2rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px 3px 0 0; + position: relative; + min-height: 12rem; + display: flex; + align-items: center; + overflow-x: auto; +} + +.example-centered { + justify-content: center; +} +.example-centered .example-content { + flex: 0 auto; +} + +.example-content { + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-body-color); + flex: 1; + max-width: 100%; +} +.example-content .page-header { + margin-bottom: 0; +} + +.example-bg { + background: #f6f8fb; +} + +.example-code { + margin: 2rem 0; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-top: none; +} +.example-code pre { + margin: 0; + border: 0; + border-radius: 0 0 3px 3px; +} +.example + .example-code { + margin-top: -2rem; +} + +.example-column { + margin: 0 auto; +} +.example-column > .card:last-of-type { + margin-bottom: 0; +} + +.example-column-1 { + max-width: 26rem; +} + +.example-column-2 { + max-width: 52rem; +} + +.example-modal-backdrop { + background: #182433; + opacity: 0.24; + position: absolute; + width: 100%; + right: 0; + top: 0; + height: 100%; + border-radius: 2px 2px 0 0; +} + +.card-sponsor { + background: var(--tblr-primary-lt) no-repeat center/100% 100%; + border-color: var(--tblr-primary); + min-height: 316px; +} + +.dropdown-menu-demo { + display: inline-block; + width: 100%; + position: relative; + top: 0; + margin-bottom: 1rem !important; +} + +.demo-icon-preview { + position: -webkit-sticky; + position: sticky; + top: 0; +} +.demo-icon-preview svg, +.demo-icon-preview i { + width: 15rem; + height: 15rem; + font-size: 15rem; + stroke-width: 1.5; + margin: 0 auto; + display: block; +} +@media (max-width: 575.98px) { + .demo-icon-preview svg, + .demo-icon-preview i { + width: 10rem; + height: 10rem; + font-size: 10rem; + } +} + +.demo-icon-preview-icon pre { + margin: 0; + -webkit-user-select: all; + -moz-user-select: all; + user-select: all; +} + +.demo-dividers > p { + opacity: 0.2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.demo-icons-list { + display: flex; + flex-wrap: wrap; + padding: 0; + margin: 0 0 -1px -2px; + list-style: none; +} +.demo-icons-list > * { + flex: 1 0 4rem; +} + +.demo-icons-list-wrap { + overflow: hidden; +} + +.demo-icons-list-item { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + aspect-ratio: 1; + text-align: center; + padding: 0.5rem; + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + color: inherit; + cursor: pointer; +} +.demo-icons-list-item .icon { + width: 1.5rem; + height: 1.5rem; + font-size: 1.5rem; +} +.demo-icons-list-item:hover { + text-decoration: none; +} + +.settings-btn { + position: fixed; + left: -1px; + top: 10rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} + +.settings-scheme { + display: inline-block; + border-radius: 50%; + height: 3rem; + width: 3rem; + position: relative; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; +} +.settings-scheme-light { + background: linear-gradient(-135deg, #ffffff 50%, #fcfdfe 50%); +} +.settings-scheme-mixed { + background-image: linear-gradient(-135deg, #182433 50%, #fff 50%); +} +.settings-scheme-transparent { + background: #fcfdfe; +} +.settings-scheme-dark { + background: #182433; +} +.settings-scheme-colored { + background-image: linear-gradient(-135deg, var(--tblr-primary) 50%, #fcfdfe 50%); +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/demo.rtl.min.css b/gin_ops/static/dist/css/demo.rtl.min.css new file mode 100644 index 0000000..76bcafd --- /dev/null +++ b/gin_ops/static/dist/css/demo.rtl.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.highlight pre,pre.highlight{max-height:30rem;margin:1.5rem 0;overflow:auto;border-radius:var(--tblr-border-radius)}.highlight pre,pre.highlight{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.highlight pre::-webkit-scrollbar,pre.highlight::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.highlight pre::-webkit-scrollbar,pre.highlight::-webkit-scrollbar{-webkit-transition:none;transition:none}}.highlight pre::-webkit-scrollbar-thumb,pre.highlight::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.highlight pre::-webkit-scrollbar-track,pre.highlight::-webkit-scrollbar-track{background:0 0}.highlight pre:hover::-webkit-scrollbar-thumb,pre.highlight:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.highlight pre::-webkit-scrollbar-corner,pre.highlight::-webkit-scrollbar-corner{background:0 0}.highlight{margin:0}.highlight code>*{margin:0!important;padding:0!important}.highlight .c,.highlight .c1{color:#a0aec0}.highlight .nc,.highlight .nt,.highlight .nx{color:#ff8383}.highlight .na,.highlight .p{color:#ffe484}.highlight .dl,.highlight .s,.highlight .s2{color:#b5f4a5}.highlight .k{color:#93ddfd}.highlight .mi,.highlight .s1{color:#d9a9ff}.example{padding:2rem;margin:1rem 0 2rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px 3px 0 0;position:relative;min-height:12rem;display:flex;align-items:center;overflow-x:auto}.example-centered{justify-content:center}.example-centered .example-content{flex:0 auto}.example-content{font-size:.875rem;line-height:1.4285714286;color:var(--tblr-body-color);flex:1;max-width:100%}.example-content .page-header{margin-bottom:0}.example-bg{background:#f6f8fb}.example-code{margin:2rem 0;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-top:none}.example-code pre{margin:0;border:0;border-radius:0 0 3px 3px}.example+.example-code{margin-top:-2rem}.example-column{margin:0 auto}.example-column>.card:last-of-type{margin-bottom:0}.example-column-1{max-width:26rem}.example-column-2{max-width:52rem}.example-modal-backdrop{background:#182433;opacity:.24;position:absolute;width:100%;right:0;top:0;height:100%;border-radius:2px 2px 0 0}.card-sponsor{background:var(--tblr-primary-lt) no-repeat center/100% 100%;border-color:var(--tblr-primary);min-height:316px}.dropdown-menu-demo{display:inline-block;width:100%;position:relative;top:0;margin-bottom:1rem!important}.demo-icon-preview{position:-webkit-sticky;position:sticky;top:0}.demo-icon-preview i,.demo-icon-preview svg{width:15rem;height:15rem;font-size:15rem;stroke-width:1.5;margin:0 auto;display:block}@media (max-width:575.98px){.demo-icon-preview i,.demo-icon-preview svg{width:10rem;height:10rem;font-size:10rem}}.demo-icon-preview-icon pre{margin:0;-webkit-user-select:all;-moz-user-select:all;user-select:all}.demo-dividers>p{opacity:.2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.demo-icons-list{display:flex;flex-wrap:wrap;padding:0;margin:0 0 -1px -2px;list-style:none}.demo-icons-list>*{flex:1 0 4rem}.demo-icons-list-wrap{overflow:hidden}.demo-icons-list-item{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;text-align:center;padding:.5rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);color:inherit;cursor:pointer}.demo-icons-list-item .icon{width:1.5rem;height:1.5rem;font-size:1.5rem}.demo-icons-list-item:hover{text-decoration:none}.settings-btn{position:fixed;left:-1px;top:10rem;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0}.settings-scheme{display:inline-block;border-radius:50%;height:3rem;width:3rem;position:relative;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0}.settings-scheme-light{background:linear-gradient(-135deg,#fff 50%,#fcfdfe 50%)}.settings-scheme-mixed{background-image:linear-gradient(-135deg,#182433 50%,#fff 50%)}.settings-scheme-transparent{background:#fcfdfe}.settings-scheme-dark{background:#182433}.settings-scheme-colored{background-image:linear-gradient(-135deg,var(--tblr-primary) 50%,#fcfdfe 50%)} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-flags.css b/gin_ops/static/dist/css/tabler-flags.css new file mode 100644 index 0000000..1c28e94 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-flags.css @@ -0,0 +1,1084 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +.flag { + position: relative; + display: inline-block; + height: 2.5rem; + aspect-ratio: 1.33333; + background: no-repeat center/cover; + box-shadow: var(--tblr-box-shadow-border); + border-radius: var(--tblr-border-radius); + vertical-align: bottom; +} +.flag.flag-country-np { + box-shadow: none; + border-radius: 0; +} + +.flag-country-ad { + background-image: url("../img/flags/ad.svg"); +} + +.flag-country-af { + background-image: url("../img/flags/af.svg"); +} + +.flag-country-ae { + background-image: url("../img/flags/ae.svg"); +} + +.flag-country-afrun { + background-image: url("../img/flags/afrun.svg"); +} + +.flag-country-ag { + background-image: url("../img/flags/ag.svg"); +} + +.flag-country-ai { + background-image: url("../img/flags/ai.svg"); +} + +.flag-country-al { + background-image: url("../img/flags/al.svg"); +} + +.flag-country-am { + background-image: url("../img/flags/am.svg"); +} + +.flag-country-ams { + background-image: url("../img/flags/ams.svg"); +} + +.flag-country-ao { + background-image: url("../img/flags/ao.svg"); +} + +.flag-country-aq { + background-image: url("../img/flags/aq.svg"); +} + +.flag-country-ar { + background-image: url("../img/flags/ar.svg"); +} + +.flag-country-as { + background-image: url("../img/flags/as.svg"); +} + +.flag-country-at { + background-image: url("../img/flags/at.svg"); +} + +.flag-country-au { + background-image: url("../img/flags/au.svg"); +} + +.flag-country-aw { + background-image: url("../img/flags/aw.svg"); +} + +.flag-country-ax { + background-image: url("../img/flags/ax.svg"); +} + +.flag-country-az { + background-image: url("../img/flags/az.svg"); +} + +.flag-country-ba { + background-image: url("../img/flags/ba.svg"); +} + +.flag-country-bb { + background-image: url("../img/flags/bb.svg"); +} + +.flag-country-bd { + background-image: url("../img/flags/bd.svg"); +} + +.flag-country-be { + background-image: url("../img/flags/be.svg"); +} + +.flag-country-bf { + background-image: url("../img/flags/bf.svg"); +} + +.flag-country-bg { + background-image: url("../img/flags/bg.svg"); +} + +.flag-country-bh { + background-image: url("../img/flags/bh.svg"); +} + +.flag-country-bi { + background-image: url("../img/flags/bi.svg"); +} + +.flag-country-bj { + background-image: url("../img/flags/bj.svg"); +} + +.flag-country-bl { + background-image: url("../img/flags/bl.svg"); +} + +.flag-country-bm { + background-image: url("../img/flags/bm.svg"); +} + +.flag-country-bn { + background-image: url("../img/flags/bn.svg"); +} + +.flag-country-bo { + background-image: url("../img/flags/bo.svg"); +} + +.flag-country-bq-bo { + background-image: url("../img/flags/bq-bo.svg"); +} + +.flag-country-bq-sa { + background-image: url("../img/flags/bq-sa.svg"); +} + +.flag-country-bq-se { + background-image: url("../img/flags/bq-se.svg"); +} + +.flag-country-br { + background-image: url("../img/flags/br.svg"); +} + +.flag-country-bs { + background-image: url("../img/flags/bs.svg"); +} + +.flag-country-bt { + background-image: url("../img/flags/bt.svg"); +} + +.flag-country-bv { + background-image: url("../img/flags/bv.svg"); +} + +.flag-country-bw { + background-image: url("../img/flags/bw.svg"); +} + +.flag-country-by { + background-image: url("../img/flags/by.svg"); +} + +.flag-country-bz { + background-image: url("../img/flags/bz.svg"); +} + +.flag-country-ca { + background-image: url("../img/flags/ca.svg"); +} + +.flag-country-cc { + background-image: url("../img/flags/cc.svg"); +} + +.flag-country-cd { + background-image: url("../img/flags/cd.svg"); +} + +.flag-country-cf { + background-image: url("../img/flags/cf.svg"); +} + +.flag-country-cg { + background-image: url("../img/flags/cg.svg"); +} + +.flag-country-ch { + background-image: url("../img/flags/ch.svg"); +} + +.flag-country-ci { + background-image: url("../img/flags/ci.svg"); +} + +.flag-country-ck { + background-image: url("../img/flags/ck.svg"); +} + +.flag-country-cl { + background-image: url("../img/flags/cl.svg"); +} + +.flag-country-cm { + background-image: url("../img/flags/cm.svg"); +} + +.flag-country-cn { + background-image: url("../img/flags/cn.svg"); +} + +.flag-country-co { + background-image: url("../img/flags/co.svg"); +} + +.flag-country-cr { + background-image: url("../img/flags/cr.svg"); +} + +.flag-country-cu { + background-image: url("../img/flags/cu.svg"); +} + +.flag-country-cv { + background-image: url("../img/flags/cv.svg"); +} + +.flag-country-cw { + background-image: url("../img/flags/cw.svg"); +} + +.flag-country-cx { + background-image: url("../img/flags/cx.svg"); +} + +.flag-country-cy { + background-image: url("../img/flags/cy.svg"); +} + +.flag-country-cz { + background-image: url("../img/flags/cz.svg"); +} + +.flag-country-de { + background-image: url("../img/flags/de.svg"); +} + +.flag-country-dj { + background-image: url("../img/flags/dj.svg"); +} + +.flag-country-dk { + background-image: url("../img/flags/dk.svg"); +} + +.flag-country-dm { + background-image: url("../img/flags/dm.svg"); +} + +.flag-country-do { + background-image: url("../img/flags/do.svg"); +} + +.flag-country-ec { + background-image: url("../img/flags/ec.svg"); +} + +.flag-country-ee { + background-image: url("../img/flags/ee.svg"); +} + +.flag-country-eg { + background-image: url("../img/flags/eg.svg"); +} + +.flag-country-eh { + background-image: url("../img/flags/eh.svg"); +} + +.flag-country-er { + background-image: url("../img/flags/er.svg"); +} + +.flag-country-es { + background-image: url("../img/flags/es.svg"); +} + +.flag-country-et { + background-image: url("../img/flags/et.svg"); +} + +.flag-country-eu { + background-image: url("../img/flags/eu.svg"); +} + +.flag-country-fi { + background-image: url("../img/flags/fi.svg"); +} + +.flag-country-fj { + background-image: url("../img/flags/fj.svg"); +} + +.flag-country-fk { + background-image: url("../img/flags/fk.svg"); +} + +.flag-country-fm { + background-image: url("../img/flags/fm.svg"); +} + +.flag-country-fo { + background-image: url("../img/flags/fo.svg"); +} + +.flag-country-fr { + background-image: url("../img/flags/fr.svg"); +} + +.flag-country-ga { + background-image: url("../img/flags/ga.svg"); +} + +.flag-country-gb-eng { + background-image: url("../img/flags/gb-eng.svg"); +} + +.flag-country-gb-sct { + background-image: url("../img/flags/gb-sct.svg"); +} + +.flag-country-gb { + background-image: url("../img/flags/gb.svg"); +} + +.flag-country-gb-wls { + background-image: url("../img/flags/gb-wls.svg"); +} + +.flag-country-gb-nir { + background-image: url("../img/flags/gb-nir.svg"); +} + +.flag-country-gd { + background-image: url("../img/flags/gd.svg"); +} + +.flag-country-ge { + background-image: url("../img/flags/ge.svg"); +} + +.flag-country-gf { + background-image: url("../img/flags/gf.svg"); +} + +.flag-country-gg { + background-image: url("../img/flags/gg.svg"); +} + +.flag-country-gh { + background-image: url("../img/flags/gh.svg"); +} + +.flag-country-gi { + background-image: url("../img/flags/gi.svg"); +} + +.flag-country-gl { + background-image: url("../img/flags/gl.svg"); +} + +.flag-country-gm { + background-image: url("../img/flags/gm.svg"); +} + +.flag-country-gn { + background-image: url("../img/flags/gn.svg"); +} + +.flag-country-gp { + background-image: url("../img/flags/gp.svg"); +} + +.flag-country-gq { + background-image: url("../img/flags/gq.svg"); +} + +.flag-country-gr { + background-image: url("../img/flags/gr.svg"); +} + +.flag-country-gs { + background-image: url("../img/flags/gs.svg"); +} + +.flag-country-gt { + background-image: url("../img/flags/gt.svg"); +} + +.flag-country-gu { + background-image: url("../img/flags/gu.svg"); +} + +.flag-country-gw { + background-image: url("../img/flags/gw.svg"); +} + +.flag-country-gy { + background-image: url("../img/flags/gy.svg"); +} + +.flag-country-hk { + background-image: url("../img/flags/hk.svg"); +} + +.flag-country-hm { + background-image: url("../img/flags/hm.svg"); +} + +.flag-country-hn { + background-image: url("../img/flags/hn.svg"); +} + +.flag-country-hr { + background-image: url("../img/flags/hr.svg"); +} + +.flag-country-ht { + background-image: url("../img/flags/ht.svg"); +} + +.flag-country-hu { + background-image: url("../img/flags/hu.svg"); +} + +.flag-country-id { + background-image: url("../img/flags/id.svg"); +} + +.flag-country-ie { + background-image: url("../img/flags/ie.svg"); +} + +.flag-country-il { + background-image: url("../img/flags/il.svg"); +} + +.flag-country-im { + background-image: url("../img/flags/im.svg"); +} + +.flag-country-in { + background-image: url("../img/flags/in.svg"); +} + +.flag-country-io { + background-image: url("../img/flags/io.svg"); +} + +.flag-country-iq { + background-image: url("../img/flags/iq.svg"); +} + +.flag-country-ir { + background-image: url("../img/flags/ir.svg"); +} + +.flag-country-is { + background-image: url("../img/flags/is.svg"); +} + +.flag-country-it { + background-image: url("../img/flags/it.svg"); +} + +.flag-country-je { + background-image: url("../img/flags/je.svg"); +} + +.flag-country-jm { + background-image: url("../img/flags/jm.svg"); +} + +.flag-country-jo { + background-image: url("../img/flags/jo.svg"); +} + +.flag-country-jp { + background-image: url("../img/flags/jp.svg"); +} + +.flag-country-ke { + background-image: url("../img/flags/ke.svg"); +} + +.flag-country-kg { + background-image: url("../img/flags/kg.svg"); +} + +.flag-country-kh { + background-image: url("../img/flags/kh.svg"); +} + +.flag-country-ki { + background-image: url("../img/flags/ki.svg"); +} + +.flag-country-km { + background-image: url("../img/flags/km.svg"); +} + +.flag-country-kn-sk { + background-image: url("../img/flags/kn-sk.svg"); +} + +.flag-country-kp { + background-image: url("../img/flags/kp.svg"); +} + +.flag-country-kr { + background-image: url("../img/flags/kr.svg"); +} + +.flag-country-kw { + background-image: url("../img/flags/kw.svg"); +} + +.flag-country-ky { + background-image: url("../img/flags/ky.svg"); +} + +.flag-country-kz { + background-image: url("../img/flags/kz.svg"); +} + +.flag-country-la { + background-image: url("../img/flags/la.svg"); +} + +.flag-country-lb { + background-image: url("../img/flags/lb.svg"); +} + +.flag-country-lc { + background-image: url("../img/flags/lc.svg"); +} + +.flag-country-li { + background-image: url("../img/flags/li.svg"); +} + +.flag-country-lk { + background-image: url("../img/flags/lk.svg"); +} + +.flag-country-lr { + background-image: url("../img/flags/lr.svg"); +} + +.flag-country-ls { + background-image: url("../img/flags/ls.svg"); +} + +.flag-country-lt { + background-image: url("../img/flags/lt.svg"); +} + +.flag-country-lu { + background-image: url("../img/flags/lu.svg"); +} + +.flag-country-lv { + background-image: url("../img/flags/lv.svg"); +} + +.flag-country-ly { + background-image: url("../img/flags/ly.svg"); +} + +.flag-country-ma { + background-image: url("../img/flags/ma.svg"); +} + +.flag-country-mc { + background-image: url("../img/flags/mc.svg"); +} + +.flag-country-md { + background-image: url("../img/flags/md.svg"); +} + +.flag-country-me { + background-image: url("../img/flags/me.svg"); +} + +.flag-country-mf { + background-image: url("../img/flags/mf.svg"); +} + +.flag-country-mg { + background-image: url("../img/flags/mg.svg"); +} + +.flag-country-mh { + background-image: url("../img/flags/mh.svg"); +} + +.flag-country-mk { + background-image: url("../img/flags/mk.svg"); +} + +.flag-country-ml { + background-image: url("../img/flags/ml.svg"); +} + +.flag-country-mm { + background-image: url("../img/flags/mm.svg"); +} + +.flag-country-mn { + background-image: url("../img/flags/mn.svg"); +} + +.flag-country-mo { + background-image: url("../img/flags/mo.svg"); +} + +.flag-country-mp { + background-image: url("../img/flags/mp.svg"); +} + +.flag-country-mq { + background-image: url("../img/flags/mq.svg"); +} + +.flag-country-mr { + background-image: url("../img/flags/mr.svg"); +} + +.flag-country-ms { + background-image: url("../img/flags/ms.svg"); +} + +.flag-country-mt { + background-image: url("../img/flags/mt.svg"); +} + +.flag-country-mu { + background-image: url("../img/flags/mu.svg"); +} + +.flag-country-mv { + background-image: url("../img/flags/mv.svg"); +} + +.flag-country-mw { + background-image: url("../img/flags/mw.svg"); +} + +.flag-country-mx { + background-image: url("../img/flags/mx.svg"); +} + +.flag-country-my { + background-image: url("../img/flags/my.svg"); +} + +.flag-country-mz { + background-image: url("../img/flags/mz.svg"); +} + +.flag-country-na { + background-image: url("../img/flags/na.svg"); +} + +.flag-country-nc { + background-image: url("../img/flags/nc.svg"); +} + +.flag-country-ne { + background-image: url("../img/flags/ne.svg"); +} + +.flag-country-nf { + background-image: url("../img/flags/nf.svg"); +} + +.flag-country-ng { + background-image: url("../img/flags/ng.svg"); +} + +.flag-country-ni { + background-image: url("../img/flags/ni.svg"); +} + +.flag-country-nl { + background-image: url("../img/flags/nl.svg"); +} + +.flag-country-no { + background-image: url("../img/flags/no.svg"); +} + +.flag-country-np { + background-image: url("../img/flags/np.svg"); +} + +.flag-country-nr { + background-image: url("../img/flags/nr.svg"); +} + +.flag-country-nu { + background-image: url("../img/flags/nu.svg"); +} + +.flag-country-nz { + background-image: url("../img/flags/nz.svg"); +} + +.flag-country-om { + background-image: url("../img/flags/om.svg"); +} + +.flag-country-pa { + background-image: url("../img/flags/pa.svg"); +} + +.flag-country-pe { + background-image: url("../img/flags/pe.svg"); +} + +.flag-country-pf { + background-image: url("../img/flags/pf.svg"); +} + +.flag-country-pg { + background-image: url("../img/flags/pg.svg"); +} + +.flag-country-ph { + background-image: url("../img/flags/ph.svg"); +} + +.flag-country-pk { + background-image: url("../img/flags/pk.svg"); +} + +.flag-country-pl { + background-image: url("../img/flags/pl.svg"); +} + +.flag-country-pm { + background-image: url("../img/flags/pm.svg"); +} + +.flag-country-pn { + background-image: url("../img/flags/pn.svg"); +} + +.flag-country-pr { + background-image: url("../img/flags/pr.svg"); +} + +.flag-country-ps { + background-image: url("../img/flags/ps.svg"); +} + +.flag-country-pt { + background-image: url("../img/flags/pt.svg"); +} + +.flag-country-pw { + background-image: url("../img/flags/pw.svg"); +} + +.flag-country-py { + background-image: url("../img/flags/py.svg"); +} + +.flag-country-qa { + background-image: url("../img/flags/qa.svg"); +} + +.flag-country-rainbow { + background-image: url("../img/flags/rainbow.svg"); +} + +.flag-country-re { + background-image: url("../img/flags/re.svg"); +} + +.flag-country-ro { + background-image: url("../img/flags/ro.svg"); +} + +.flag-country-rs { + background-image: url("../img/flags/rs.svg"); +} + +.flag-country-ru { + background-image: url("../img/flags/ru.svg"); +} + +.flag-country-rw { + background-image: url("../img/flags/rw.svg"); +} + +.flag-country-sa { + background-image: url("../img/flags/sa.svg"); +} + +.flag-country-sb { + background-image: url("../img/flags/sb.svg"); +} + +.flag-country-sc { + background-image: url("../img/flags/sc.svg"); +} + +.flag-country-sd { + background-image: url("../img/flags/sd.svg"); +} + +.flag-country-se { + background-image: url("../img/flags/se.svg"); +} + +.flag-country-sg { + background-image: url("../img/flags/sg.svg"); +} + +.flag-country-sh { + background-image: url("../img/flags/sh.svg"); +} + +.flag-country-si { + background-image: url("../img/flags/si.svg"); +} + +.flag-country-sj { + background-image: url("../img/flags/sj.svg"); +} + +.flag-country-sk { + background-image: url("../img/flags/sk.svg"); +} + +.flag-country-sl { + background-image: url("../img/flags/sl.svg"); +} + +.flag-country-sm { + background-image: url("../img/flags/sm.svg"); +} + +.flag-country-sn { + background-image: url("../img/flags/sn.svg"); +} + +.flag-country-so { + background-image: url("../img/flags/so.svg"); +} + +.flag-country-sr { + background-image: url("../img/flags/sr.svg"); +} + +.flag-country-ss { + background-image: url("../img/flags/ss.svg"); +} + +.flag-country-st { + background-image: url("../img/flags/st.svg"); +} + +.flag-country-sv { + background-image: url("../img/flags/sv.svg"); +} + +.flag-country-sx { + background-image: url("../img/flags/sx.svg"); +} + +.flag-country-sy { + background-image: url("../img/flags/sy.svg"); +} + +.flag-country-sz { + background-image: url("../img/flags/sz.svg"); +} + +.flag-country-tc { + background-image: url("../img/flags/tc.svg"); +} + +.flag-country-td { + background-image: url("../img/flags/td.svg"); +} + +.flag-country-tf { + background-image: url("../img/flags/tf.svg"); +} + +.flag-country-tg { + background-image: url("../img/flags/tg.svg"); +} + +.flag-country-th { + background-image: url("../img/flags/th.svg"); +} + +.flag-country-tj { + background-image: url("../img/flags/tj.svg"); +} + +.flag-country-tk { + background-image: url("../img/flags/tk.svg"); +} + +.flag-country-tl { + background-image: url("../img/flags/tl.svg"); +} + +.flag-country-tm { + background-image: url("../img/flags/tm.svg"); +} + +.flag-country-tn { + background-image: url("../img/flags/tn.svg"); +} + +.flag-country-to { + background-image: url("../img/flags/to.svg"); +} + +.flag-country-tr { + background-image: url("../img/flags/tr.svg"); +} + +.flag-country-tt { + background-image: url("../img/flags/tt.svg"); +} + +.flag-country-tv { + background-image: url("../img/flags/tv.svg"); +} + +.flag-country-tw { + background-image: url("../img/flags/tw.svg"); +} + +.flag-country-tz { + background-image: url("../img/flags/tz.svg"); +} + +.flag-country-ua { + background-image: url("../img/flags/ua.svg"); +} + +.flag-country-ug { + background-image: url("../img/flags/ug.svg"); +} + +.flag-country-um { + background-image: url("../img/flags/um.svg"); +} + +.flag-country-unasur { + background-image: url("../img/flags/unasur.svg"); +} + +.flag-country-us { + background-image: url("../img/flags/us.svg"); +} + +.flag-country-uy { + background-image: url("../img/flags/uy.svg"); +} + +.flag-country-uz { + background-image: url("../img/flags/uz.svg"); +} + +.flag-country-va { + background-image: url("../img/flags/va.svg"); +} + +.flag-country-vc { + background-image: url("../img/flags/vc.svg"); +} + +.flag-country-ve { + background-image: url("../img/flags/ve.svg"); +} + +.flag-country-vg { + background-image: url("../img/flags/vg.svg"); +} + +.flag-country-vi { + background-image: url("../img/flags/vi.svg"); +} + +.flag-country-vn { + background-image: url("../img/flags/vn.svg"); +} + +.flag-country-vu { + background-image: url("../img/flags/vu.svg"); +} + +.flag-country-wf { + background-image: url("../img/flags/wf.svg"); +} + +.flag-country-ws { + background-image: url("../img/flags/ws.svg"); +} + +.flag-country-ye { + background-image: url("../img/flags/ye.svg"); +} + +.flag-country-za { + background-image: url("../img/flags/za.svg"); +} + +.flag-country-zm { + background-image: url("../img/flags/zm.svg"); +} + +.flag-country-zw { + background-image: url("../img/flags/zw.svg"); +} + +.flag-xxs { + height: 1rem; +} + +.flag-xs { + height: 1.25rem; +} + +.flag-sm { + height: 2rem; +} + +.flag-md { + height: 2.5rem; +} + +.flag-lg { + height: 3rem; +} + +.flag-xl { + height: 5rem; +} + +.flag-2xl { + height: 7rem; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-flags.min.css b/gin_ops/static/dist/css/tabler-flags.min.css new file mode 100644 index 0000000..738ffe2 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-flags.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.flag{position:relative;display:inline-block;height:2.5rem;aspect-ratio:1.33333;background:no-repeat center/cover;box-shadow:var(--tblr-box-shadow-border);border-radius:var(--tblr-border-radius);vertical-align:bottom}.flag.flag-country-np{box-shadow:none;border-radius:0}.flag-country-ad{background-image:url(../img/flags/ad.svg)}.flag-country-af{background-image:url(../img/flags/af.svg)}.flag-country-ae{background-image:url(../img/flags/ae.svg)}.flag-country-afrun{background-image:url(../img/flags/afrun.svg)}.flag-country-ag{background-image:url(../img/flags/ag.svg)}.flag-country-ai{background-image:url(../img/flags/ai.svg)}.flag-country-al{background-image:url(../img/flags/al.svg)}.flag-country-am{background-image:url(../img/flags/am.svg)}.flag-country-ams{background-image:url(../img/flags/ams.svg)}.flag-country-ao{background-image:url(../img/flags/ao.svg)}.flag-country-aq{background-image:url(../img/flags/aq.svg)}.flag-country-ar{background-image:url(../img/flags/ar.svg)}.flag-country-as{background-image:url(../img/flags/as.svg)}.flag-country-at{background-image:url(../img/flags/at.svg)}.flag-country-au{background-image:url(../img/flags/au.svg)}.flag-country-aw{background-image:url(../img/flags/aw.svg)}.flag-country-ax{background-image:url(../img/flags/ax.svg)}.flag-country-az{background-image:url(../img/flags/az.svg)}.flag-country-ba{background-image:url(../img/flags/ba.svg)}.flag-country-bb{background-image:url(../img/flags/bb.svg)}.flag-country-bd{background-image:url(../img/flags/bd.svg)}.flag-country-be{background-image:url(../img/flags/be.svg)}.flag-country-bf{background-image:url(../img/flags/bf.svg)}.flag-country-bg{background-image:url(../img/flags/bg.svg)}.flag-country-bh{background-image:url(../img/flags/bh.svg)}.flag-country-bi{background-image:url(../img/flags/bi.svg)}.flag-country-bj{background-image:url(../img/flags/bj.svg)}.flag-country-bl{background-image:url(../img/flags/bl.svg)}.flag-country-bm{background-image:url(../img/flags/bm.svg)}.flag-country-bn{background-image:url(../img/flags/bn.svg)}.flag-country-bo{background-image:url(../img/flags/bo.svg)}.flag-country-bq-bo{background-image:url(../img/flags/bq-bo.svg)}.flag-country-bq-sa{background-image:url(../img/flags/bq-sa.svg)}.flag-country-bq-se{background-image:url(../img/flags/bq-se.svg)}.flag-country-br{background-image:url(../img/flags/br.svg)}.flag-country-bs{background-image:url(../img/flags/bs.svg)}.flag-country-bt{background-image:url(../img/flags/bt.svg)}.flag-country-bv{background-image:url(../img/flags/bv.svg)}.flag-country-bw{background-image:url(../img/flags/bw.svg)}.flag-country-by{background-image:url(../img/flags/by.svg)}.flag-country-bz{background-image:url(../img/flags/bz.svg)}.flag-country-ca{background-image:url(../img/flags/ca.svg)}.flag-country-cc{background-image:url(../img/flags/cc.svg)}.flag-country-cd{background-image:url(../img/flags/cd.svg)}.flag-country-cf{background-image:url(../img/flags/cf.svg)}.flag-country-cg{background-image:url(../img/flags/cg.svg)}.flag-country-ch{background-image:url(../img/flags/ch.svg)}.flag-country-ci{background-image:url(../img/flags/ci.svg)}.flag-country-ck{background-image:url(../img/flags/ck.svg)}.flag-country-cl{background-image:url(../img/flags/cl.svg)}.flag-country-cm{background-image:url(../img/flags/cm.svg)}.flag-country-cn{background-image:url(../img/flags/cn.svg)}.flag-country-co{background-image:url(../img/flags/co.svg)}.flag-country-cr{background-image:url(../img/flags/cr.svg)}.flag-country-cu{background-image:url(../img/flags/cu.svg)}.flag-country-cv{background-image:url(../img/flags/cv.svg)}.flag-country-cw{background-image:url(../img/flags/cw.svg)}.flag-country-cx{background-image:url(../img/flags/cx.svg)}.flag-country-cy{background-image:url(../img/flags/cy.svg)}.flag-country-cz{background-image:url(../img/flags/cz.svg)}.flag-country-de{background-image:url(../img/flags/de.svg)}.flag-country-dj{background-image:url(../img/flags/dj.svg)}.flag-country-dk{background-image:url(../img/flags/dk.svg)}.flag-country-dm{background-image:url(../img/flags/dm.svg)}.flag-country-do{background-image:url(../img/flags/do.svg)}.flag-country-ec{background-image:url(../img/flags/ec.svg)}.flag-country-ee{background-image:url(../img/flags/ee.svg)}.flag-country-eg{background-image:url(../img/flags/eg.svg)}.flag-country-eh{background-image:url(../img/flags/eh.svg)}.flag-country-er{background-image:url(../img/flags/er.svg)}.flag-country-es{background-image:url(../img/flags/es.svg)}.flag-country-et{background-image:url(../img/flags/et.svg)}.flag-country-eu{background-image:url(../img/flags/eu.svg)}.flag-country-fi{background-image:url(../img/flags/fi.svg)}.flag-country-fj{background-image:url(../img/flags/fj.svg)}.flag-country-fk{background-image:url(../img/flags/fk.svg)}.flag-country-fm{background-image:url(../img/flags/fm.svg)}.flag-country-fo{background-image:url(../img/flags/fo.svg)}.flag-country-fr{background-image:url(../img/flags/fr.svg)}.flag-country-ga{background-image:url(../img/flags/ga.svg)}.flag-country-gb-eng{background-image:url(../img/flags/gb-eng.svg)}.flag-country-gb-sct{background-image:url(../img/flags/gb-sct.svg)}.flag-country-gb{background-image:url(../img/flags/gb.svg)}.flag-country-gb-wls{background-image:url(../img/flags/gb-wls.svg)}.flag-country-gb-nir{background-image:url(../img/flags/gb-nir.svg)}.flag-country-gd{background-image:url(../img/flags/gd.svg)}.flag-country-ge{background-image:url(../img/flags/ge.svg)}.flag-country-gf{background-image:url(../img/flags/gf.svg)}.flag-country-gg{background-image:url(../img/flags/gg.svg)}.flag-country-gh{background-image:url(../img/flags/gh.svg)}.flag-country-gi{background-image:url(../img/flags/gi.svg)}.flag-country-gl{background-image:url(../img/flags/gl.svg)}.flag-country-gm{background-image:url(../img/flags/gm.svg)}.flag-country-gn{background-image:url(../img/flags/gn.svg)}.flag-country-gp{background-image:url(../img/flags/gp.svg)}.flag-country-gq{background-image:url(../img/flags/gq.svg)}.flag-country-gr{background-image:url(../img/flags/gr.svg)}.flag-country-gs{background-image:url(../img/flags/gs.svg)}.flag-country-gt{background-image:url(../img/flags/gt.svg)}.flag-country-gu{background-image:url(../img/flags/gu.svg)}.flag-country-gw{background-image:url(../img/flags/gw.svg)}.flag-country-gy{background-image:url(../img/flags/gy.svg)}.flag-country-hk{background-image:url(../img/flags/hk.svg)}.flag-country-hm{background-image:url(../img/flags/hm.svg)}.flag-country-hn{background-image:url(../img/flags/hn.svg)}.flag-country-hr{background-image:url(../img/flags/hr.svg)}.flag-country-ht{background-image:url(../img/flags/ht.svg)}.flag-country-hu{background-image:url(../img/flags/hu.svg)}.flag-country-id{background-image:url(../img/flags/id.svg)}.flag-country-ie{background-image:url(../img/flags/ie.svg)}.flag-country-il{background-image:url(../img/flags/il.svg)}.flag-country-im{background-image:url(../img/flags/im.svg)}.flag-country-in{background-image:url(../img/flags/in.svg)}.flag-country-io{background-image:url(../img/flags/io.svg)}.flag-country-iq{background-image:url(../img/flags/iq.svg)}.flag-country-ir{background-image:url(../img/flags/ir.svg)}.flag-country-is{background-image:url(../img/flags/is.svg)}.flag-country-it{background-image:url(../img/flags/it.svg)}.flag-country-je{background-image:url(../img/flags/je.svg)}.flag-country-jm{background-image:url(../img/flags/jm.svg)}.flag-country-jo{background-image:url(../img/flags/jo.svg)}.flag-country-jp{background-image:url(../img/flags/jp.svg)}.flag-country-ke{background-image:url(../img/flags/ke.svg)}.flag-country-kg{background-image:url(../img/flags/kg.svg)}.flag-country-kh{background-image:url(../img/flags/kh.svg)}.flag-country-ki{background-image:url(../img/flags/ki.svg)}.flag-country-km{background-image:url(../img/flags/km.svg)}.flag-country-kn-sk{background-image:url(../img/flags/kn-sk.svg)}.flag-country-kp{background-image:url(../img/flags/kp.svg)}.flag-country-kr{background-image:url(../img/flags/kr.svg)}.flag-country-kw{background-image:url(../img/flags/kw.svg)}.flag-country-ky{background-image:url(../img/flags/ky.svg)}.flag-country-kz{background-image:url(../img/flags/kz.svg)}.flag-country-la{background-image:url(../img/flags/la.svg)}.flag-country-lb{background-image:url(../img/flags/lb.svg)}.flag-country-lc{background-image:url(../img/flags/lc.svg)}.flag-country-li{background-image:url(../img/flags/li.svg)}.flag-country-lk{background-image:url(../img/flags/lk.svg)}.flag-country-lr{background-image:url(../img/flags/lr.svg)}.flag-country-ls{background-image:url(../img/flags/ls.svg)}.flag-country-lt{background-image:url(../img/flags/lt.svg)}.flag-country-lu{background-image:url(../img/flags/lu.svg)}.flag-country-lv{background-image:url(../img/flags/lv.svg)}.flag-country-ly{background-image:url(../img/flags/ly.svg)}.flag-country-ma{background-image:url(../img/flags/ma.svg)}.flag-country-mc{background-image:url(../img/flags/mc.svg)}.flag-country-md{background-image:url(../img/flags/md.svg)}.flag-country-me{background-image:url(../img/flags/me.svg)}.flag-country-mf{background-image:url(../img/flags/mf.svg)}.flag-country-mg{background-image:url(../img/flags/mg.svg)}.flag-country-mh{background-image:url(../img/flags/mh.svg)}.flag-country-mk{background-image:url(../img/flags/mk.svg)}.flag-country-ml{background-image:url(../img/flags/ml.svg)}.flag-country-mm{background-image:url(../img/flags/mm.svg)}.flag-country-mn{background-image:url(../img/flags/mn.svg)}.flag-country-mo{background-image:url(../img/flags/mo.svg)}.flag-country-mp{background-image:url(../img/flags/mp.svg)}.flag-country-mq{background-image:url(../img/flags/mq.svg)}.flag-country-mr{background-image:url(../img/flags/mr.svg)}.flag-country-ms{background-image:url(../img/flags/ms.svg)}.flag-country-mt{background-image:url(../img/flags/mt.svg)}.flag-country-mu{background-image:url(../img/flags/mu.svg)}.flag-country-mv{background-image:url(../img/flags/mv.svg)}.flag-country-mw{background-image:url(../img/flags/mw.svg)}.flag-country-mx{background-image:url(../img/flags/mx.svg)}.flag-country-my{background-image:url(../img/flags/my.svg)}.flag-country-mz{background-image:url(../img/flags/mz.svg)}.flag-country-na{background-image:url(../img/flags/na.svg)}.flag-country-nc{background-image:url(../img/flags/nc.svg)}.flag-country-ne{background-image:url(../img/flags/ne.svg)}.flag-country-nf{background-image:url(../img/flags/nf.svg)}.flag-country-ng{background-image:url(../img/flags/ng.svg)}.flag-country-ni{background-image:url(../img/flags/ni.svg)}.flag-country-nl{background-image:url(../img/flags/nl.svg)}.flag-country-no{background-image:url(../img/flags/no.svg)}.flag-country-np{background-image:url(../img/flags/np.svg)}.flag-country-nr{background-image:url(../img/flags/nr.svg)}.flag-country-nu{background-image:url(../img/flags/nu.svg)}.flag-country-nz{background-image:url(../img/flags/nz.svg)}.flag-country-om{background-image:url(../img/flags/om.svg)}.flag-country-pa{background-image:url(../img/flags/pa.svg)}.flag-country-pe{background-image:url(../img/flags/pe.svg)}.flag-country-pf{background-image:url(../img/flags/pf.svg)}.flag-country-pg{background-image:url(../img/flags/pg.svg)}.flag-country-ph{background-image:url(../img/flags/ph.svg)}.flag-country-pk{background-image:url(../img/flags/pk.svg)}.flag-country-pl{background-image:url(../img/flags/pl.svg)}.flag-country-pm{background-image:url(../img/flags/pm.svg)}.flag-country-pn{background-image:url(../img/flags/pn.svg)}.flag-country-pr{background-image:url(../img/flags/pr.svg)}.flag-country-ps{background-image:url(../img/flags/ps.svg)}.flag-country-pt{background-image:url(../img/flags/pt.svg)}.flag-country-pw{background-image:url(../img/flags/pw.svg)}.flag-country-py{background-image:url(../img/flags/py.svg)}.flag-country-qa{background-image:url(../img/flags/qa.svg)}.flag-country-rainbow{background-image:url(../img/flags/rainbow.svg)}.flag-country-re{background-image:url(../img/flags/re.svg)}.flag-country-ro{background-image:url(../img/flags/ro.svg)}.flag-country-rs{background-image:url(../img/flags/rs.svg)}.flag-country-ru{background-image:url(../img/flags/ru.svg)}.flag-country-rw{background-image:url(../img/flags/rw.svg)}.flag-country-sa{background-image:url(../img/flags/sa.svg)}.flag-country-sb{background-image:url(../img/flags/sb.svg)}.flag-country-sc{background-image:url(../img/flags/sc.svg)}.flag-country-sd{background-image:url(../img/flags/sd.svg)}.flag-country-se{background-image:url(../img/flags/se.svg)}.flag-country-sg{background-image:url(../img/flags/sg.svg)}.flag-country-sh{background-image:url(../img/flags/sh.svg)}.flag-country-si{background-image:url(../img/flags/si.svg)}.flag-country-sj{background-image:url(../img/flags/sj.svg)}.flag-country-sk{background-image:url(../img/flags/sk.svg)}.flag-country-sl{background-image:url(../img/flags/sl.svg)}.flag-country-sm{background-image:url(../img/flags/sm.svg)}.flag-country-sn{background-image:url(../img/flags/sn.svg)}.flag-country-so{background-image:url(../img/flags/so.svg)}.flag-country-sr{background-image:url(../img/flags/sr.svg)}.flag-country-ss{background-image:url(../img/flags/ss.svg)}.flag-country-st{background-image:url(../img/flags/st.svg)}.flag-country-sv{background-image:url(../img/flags/sv.svg)}.flag-country-sx{background-image:url(../img/flags/sx.svg)}.flag-country-sy{background-image:url(../img/flags/sy.svg)}.flag-country-sz{background-image:url(../img/flags/sz.svg)}.flag-country-tc{background-image:url(../img/flags/tc.svg)}.flag-country-td{background-image:url(../img/flags/td.svg)}.flag-country-tf{background-image:url(../img/flags/tf.svg)}.flag-country-tg{background-image:url(../img/flags/tg.svg)}.flag-country-th{background-image:url(../img/flags/th.svg)}.flag-country-tj{background-image:url(../img/flags/tj.svg)}.flag-country-tk{background-image:url(../img/flags/tk.svg)}.flag-country-tl{background-image:url(../img/flags/tl.svg)}.flag-country-tm{background-image:url(../img/flags/tm.svg)}.flag-country-tn{background-image:url(../img/flags/tn.svg)}.flag-country-to{background-image:url(../img/flags/to.svg)}.flag-country-tr{background-image:url(../img/flags/tr.svg)}.flag-country-tt{background-image:url(../img/flags/tt.svg)}.flag-country-tv{background-image:url(../img/flags/tv.svg)}.flag-country-tw{background-image:url(../img/flags/tw.svg)}.flag-country-tz{background-image:url(../img/flags/tz.svg)}.flag-country-ua{background-image:url(../img/flags/ua.svg)}.flag-country-ug{background-image:url(../img/flags/ug.svg)}.flag-country-um{background-image:url(../img/flags/um.svg)}.flag-country-unasur{background-image:url(../img/flags/unasur.svg)}.flag-country-us{background-image:url(../img/flags/us.svg)}.flag-country-uy{background-image:url(../img/flags/uy.svg)}.flag-country-uz{background-image:url(../img/flags/uz.svg)}.flag-country-va{background-image:url(../img/flags/va.svg)}.flag-country-vc{background-image:url(../img/flags/vc.svg)}.flag-country-ve{background-image:url(../img/flags/ve.svg)}.flag-country-vg{background-image:url(../img/flags/vg.svg)}.flag-country-vi{background-image:url(../img/flags/vi.svg)}.flag-country-vn{background-image:url(../img/flags/vn.svg)}.flag-country-vu{background-image:url(../img/flags/vu.svg)}.flag-country-wf{background-image:url(../img/flags/wf.svg)}.flag-country-ws{background-image:url(../img/flags/ws.svg)}.flag-country-ye{background-image:url(../img/flags/ye.svg)}.flag-country-za{background-image:url(../img/flags/za.svg)}.flag-country-zm{background-image:url(../img/flags/zm.svg)}.flag-country-zw{background-image:url(../img/flags/zw.svg)}.flag-xxs{height:1rem}.flag-xs{height:1.25rem}.flag-sm{height:2rem}.flag-md{height:2.5rem}.flag-lg{height:3rem}.flag-xl{height:5rem}.flag-2xl{height:7rem} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-flags.rtl.css b/gin_ops/static/dist/css/tabler-flags.rtl.css new file mode 100644 index 0000000..1c28e94 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-flags.rtl.css @@ -0,0 +1,1084 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +.flag { + position: relative; + display: inline-block; + height: 2.5rem; + aspect-ratio: 1.33333; + background: no-repeat center/cover; + box-shadow: var(--tblr-box-shadow-border); + border-radius: var(--tblr-border-radius); + vertical-align: bottom; +} +.flag.flag-country-np { + box-shadow: none; + border-radius: 0; +} + +.flag-country-ad { + background-image: url("../img/flags/ad.svg"); +} + +.flag-country-af { + background-image: url("../img/flags/af.svg"); +} + +.flag-country-ae { + background-image: url("../img/flags/ae.svg"); +} + +.flag-country-afrun { + background-image: url("../img/flags/afrun.svg"); +} + +.flag-country-ag { + background-image: url("../img/flags/ag.svg"); +} + +.flag-country-ai { + background-image: url("../img/flags/ai.svg"); +} + +.flag-country-al { + background-image: url("../img/flags/al.svg"); +} + +.flag-country-am { + background-image: url("../img/flags/am.svg"); +} + +.flag-country-ams { + background-image: url("../img/flags/ams.svg"); +} + +.flag-country-ao { + background-image: url("../img/flags/ao.svg"); +} + +.flag-country-aq { + background-image: url("../img/flags/aq.svg"); +} + +.flag-country-ar { + background-image: url("../img/flags/ar.svg"); +} + +.flag-country-as { + background-image: url("../img/flags/as.svg"); +} + +.flag-country-at { + background-image: url("../img/flags/at.svg"); +} + +.flag-country-au { + background-image: url("../img/flags/au.svg"); +} + +.flag-country-aw { + background-image: url("../img/flags/aw.svg"); +} + +.flag-country-ax { + background-image: url("../img/flags/ax.svg"); +} + +.flag-country-az { + background-image: url("../img/flags/az.svg"); +} + +.flag-country-ba { + background-image: url("../img/flags/ba.svg"); +} + +.flag-country-bb { + background-image: url("../img/flags/bb.svg"); +} + +.flag-country-bd { + background-image: url("../img/flags/bd.svg"); +} + +.flag-country-be { + background-image: url("../img/flags/be.svg"); +} + +.flag-country-bf { + background-image: url("../img/flags/bf.svg"); +} + +.flag-country-bg { + background-image: url("../img/flags/bg.svg"); +} + +.flag-country-bh { + background-image: url("../img/flags/bh.svg"); +} + +.flag-country-bi { + background-image: url("../img/flags/bi.svg"); +} + +.flag-country-bj { + background-image: url("../img/flags/bj.svg"); +} + +.flag-country-bl { + background-image: url("../img/flags/bl.svg"); +} + +.flag-country-bm { + background-image: url("../img/flags/bm.svg"); +} + +.flag-country-bn { + background-image: url("../img/flags/bn.svg"); +} + +.flag-country-bo { + background-image: url("../img/flags/bo.svg"); +} + +.flag-country-bq-bo { + background-image: url("../img/flags/bq-bo.svg"); +} + +.flag-country-bq-sa { + background-image: url("../img/flags/bq-sa.svg"); +} + +.flag-country-bq-se { + background-image: url("../img/flags/bq-se.svg"); +} + +.flag-country-br { + background-image: url("../img/flags/br.svg"); +} + +.flag-country-bs { + background-image: url("../img/flags/bs.svg"); +} + +.flag-country-bt { + background-image: url("../img/flags/bt.svg"); +} + +.flag-country-bv { + background-image: url("../img/flags/bv.svg"); +} + +.flag-country-bw { + background-image: url("../img/flags/bw.svg"); +} + +.flag-country-by { + background-image: url("../img/flags/by.svg"); +} + +.flag-country-bz { + background-image: url("../img/flags/bz.svg"); +} + +.flag-country-ca { + background-image: url("../img/flags/ca.svg"); +} + +.flag-country-cc { + background-image: url("../img/flags/cc.svg"); +} + +.flag-country-cd { + background-image: url("../img/flags/cd.svg"); +} + +.flag-country-cf { + background-image: url("../img/flags/cf.svg"); +} + +.flag-country-cg { + background-image: url("../img/flags/cg.svg"); +} + +.flag-country-ch { + background-image: url("../img/flags/ch.svg"); +} + +.flag-country-ci { + background-image: url("../img/flags/ci.svg"); +} + +.flag-country-ck { + background-image: url("../img/flags/ck.svg"); +} + +.flag-country-cl { + background-image: url("../img/flags/cl.svg"); +} + +.flag-country-cm { + background-image: url("../img/flags/cm.svg"); +} + +.flag-country-cn { + background-image: url("../img/flags/cn.svg"); +} + +.flag-country-co { + background-image: url("../img/flags/co.svg"); +} + +.flag-country-cr { + background-image: url("../img/flags/cr.svg"); +} + +.flag-country-cu { + background-image: url("../img/flags/cu.svg"); +} + +.flag-country-cv { + background-image: url("../img/flags/cv.svg"); +} + +.flag-country-cw { + background-image: url("../img/flags/cw.svg"); +} + +.flag-country-cx { + background-image: url("../img/flags/cx.svg"); +} + +.flag-country-cy { + background-image: url("../img/flags/cy.svg"); +} + +.flag-country-cz { + background-image: url("../img/flags/cz.svg"); +} + +.flag-country-de { + background-image: url("../img/flags/de.svg"); +} + +.flag-country-dj { + background-image: url("../img/flags/dj.svg"); +} + +.flag-country-dk { + background-image: url("../img/flags/dk.svg"); +} + +.flag-country-dm { + background-image: url("../img/flags/dm.svg"); +} + +.flag-country-do { + background-image: url("../img/flags/do.svg"); +} + +.flag-country-ec { + background-image: url("../img/flags/ec.svg"); +} + +.flag-country-ee { + background-image: url("../img/flags/ee.svg"); +} + +.flag-country-eg { + background-image: url("../img/flags/eg.svg"); +} + +.flag-country-eh { + background-image: url("../img/flags/eh.svg"); +} + +.flag-country-er { + background-image: url("../img/flags/er.svg"); +} + +.flag-country-es { + background-image: url("../img/flags/es.svg"); +} + +.flag-country-et { + background-image: url("../img/flags/et.svg"); +} + +.flag-country-eu { + background-image: url("../img/flags/eu.svg"); +} + +.flag-country-fi { + background-image: url("../img/flags/fi.svg"); +} + +.flag-country-fj { + background-image: url("../img/flags/fj.svg"); +} + +.flag-country-fk { + background-image: url("../img/flags/fk.svg"); +} + +.flag-country-fm { + background-image: url("../img/flags/fm.svg"); +} + +.flag-country-fo { + background-image: url("../img/flags/fo.svg"); +} + +.flag-country-fr { + background-image: url("../img/flags/fr.svg"); +} + +.flag-country-ga { + background-image: url("../img/flags/ga.svg"); +} + +.flag-country-gb-eng { + background-image: url("../img/flags/gb-eng.svg"); +} + +.flag-country-gb-sct { + background-image: url("../img/flags/gb-sct.svg"); +} + +.flag-country-gb { + background-image: url("../img/flags/gb.svg"); +} + +.flag-country-gb-wls { + background-image: url("../img/flags/gb-wls.svg"); +} + +.flag-country-gb-nir { + background-image: url("../img/flags/gb-nir.svg"); +} + +.flag-country-gd { + background-image: url("../img/flags/gd.svg"); +} + +.flag-country-ge { + background-image: url("../img/flags/ge.svg"); +} + +.flag-country-gf { + background-image: url("../img/flags/gf.svg"); +} + +.flag-country-gg { + background-image: url("../img/flags/gg.svg"); +} + +.flag-country-gh { + background-image: url("../img/flags/gh.svg"); +} + +.flag-country-gi { + background-image: url("../img/flags/gi.svg"); +} + +.flag-country-gl { + background-image: url("../img/flags/gl.svg"); +} + +.flag-country-gm { + background-image: url("../img/flags/gm.svg"); +} + +.flag-country-gn { + background-image: url("../img/flags/gn.svg"); +} + +.flag-country-gp { + background-image: url("../img/flags/gp.svg"); +} + +.flag-country-gq { + background-image: url("../img/flags/gq.svg"); +} + +.flag-country-gr { + background-image: url("../img/flags/gr.svg"); +} + +.flag-country-gs { + background-image: url("../img/flags/gs.svg"); +} + +.flag-country-gt { + background-image: url("../img/flags/gt.svg"); +} + +.flag-country-gu { + background-image: url("../img/flags/gu.svg"); +} + +.flag-country-gw { + background-image: url("../img/flags/gw.svg"); +} + +.flag-country-gy { + background-image: url("../img/flags/gy.svg"); +} + +.flag-country-hk { + background-image: url("../img/flags/hk.svg"); +} + +.flag-country-hm { + background-image: url("../img/flags/hm.svg"); +} + +.flag-country-hn { + background-image: url("../img/flags/hn.svg"); +} + +.flag-country-hr { + background-image: url("../img/flags/hr.svg"); +} + +.flag-country-ht { + background-image: url("../img/flags/ht.svg"); +} + +.flag-country-hu { + background-image: url("../img/flags/hu.svg"); +} + +.flag-country-id { + background-image: url("../img/flags/id.svg"); +} + +.flag-country-ie { + background-image: url("../img/flags/ie.svg"); +} + +.flag-country-il { + background-image: url("../img/flags/il.svg"); +} + +.flag-country-im { + background-image: url("../img/flags/im.svg"); +} + +.flag-country-in { + background-image: url("../img/flags/in.svg"); +} + +.flag-country-io { + background-image: url("../img/flags/io.svg"); +} + +.flag-country-iq { + background-image: url("../img/flags/iq.svg"); +} + +.flag-country-ir { + background-image: url("../img/flags/ir.svg"); +} + +.flag-country-is { + background-image: url("../img/flags/is.svg"); +} + +.flag-country-it { + background-image: url("../img/flags/it.svg"); +} + +.flag-country-je { + background-image: url("../img/flags/je.svg"); +} + +.flag-country-jm { + background-image: url("../img/flags/jm.svg"); +} + +.flag-country-jo { + background-image: url("../img/flags/jo.svg"); +} + +.flag-country-jp { + background-image: url("../img/flags/jp.svg"); +} + +.flag-country-ke { + background-image: url("../img/flags/ke.svg"); +} + +.flag-country-kg { + background-image: url("../img/flags/kg.svg"); +} + +.flag-country-kh { + background-image: url("../img/flags/kh.svg"); +} + +.flag-country-ki { + background-image: url("../img/flags/ki.svg"); +} + +.flag-country-km { + background-image: url("../img/flags/km.svg"); +} + +.flag-country-kn-sk { + background-image: url("../img/flags/kn-sk.svg"); +} + +.flag-country-kp { + background-image: url("../img/flags/kp.svg"); +} + +.flag-country-kr { + background-image: url("../img/flags/kr.svg"); +} + +.flag-country-kw { + background-image: url("../img/flags/kw.svg"); +} + +.flag-country-ky { + background-image: url("../img/flags/ky.svg"); +} + +.flag-country-kz { + background-image: url("../img/flags/kz.svg"); +} + +.flag-country-la { + background-image: url("../img/flags/la.svg"); +} + +.flag-country-lb { + background-image: url("../img/flags/lb.svg"); +} + +.flag-country-lc { + background-image: url("../img/flags/lc.svg"); +} + +.flag-country-li { + background-image: url("../img/flags/li.svg"); +} + +.flag-country-lk { + background-image: url("../img/flags/lk.svg"); +} + +.flag-country-lr { + background-image: url("../img/flags/lr.svg"); +} + +.flag-country-ls { + background-image: url("../img/flags/ls.svg"); +} + +.flag-country-lt { + background-image: url("../img/flags/lt.svg"); +} + +.flag-country-lu { + background-image: url("../img/flags/lu.svg"); +} + +.flag-country-lv { + background-image: url("../img/flags/lv.svg"); +} + +.flag-country-ly { + background-image: url("../img/flags/ly.svg"); +} + +.flag-country-ma { + background-image: url("../img/flags/ma.svg"); +} + +.flag-country-mc { + background-image: url("../img/flags/mc.svg"); +} + +.flag-country-md { + background-image: url("../img/flags/md.svg"); +} + +.flag-country-me { + background-image: url("../img/flags/me.svg"); +} + +.flag-country-mf { + background-image: url("../img/flags/mf.svg"); +} + +.flag-country-mg { + background-image: url("../img/flags/mg.svg"); +} + +.flag-country-mh { + background-image: url("../img/flags/mh.svg"); +} + +.flag-country-mk { + background-image: url("../img/flags/mk.svg"); +} + +.flag-country-ml { + background-image: url("../img/flags/ml.svg"); +} + +.flag-country-mm { + background-image: url("../img/flags/mm.svg"); +} + +.flag-country-mn { + background-image: url("../img/flags/mn.svg"); +} + +.flag-country-mo { + background-image: url("../img/flags/mo.svg"); +} + +.flag-country-mp { + background-image: url("../img/flags/mp.svg"); +} + +.flag-country-mq { + background-image: url("../img/flags/mq.svg"); +} + +.flag-country-mr { + background-image: url("../img/flags/mr.svg"); +} + +.flag-country-ms { + background-image: url("../img/flags/ms.svg"); +} + +.flag-country-mt { + background-image: url("../img/flags/mt.svg"); +} + +.flag-country-mu { + background-image: url("../img/flags/mu.svg"); +} + +.flag-country-mv { + background-image: url("../img/flags/mv.svg"); +} + +.flag-country-mw { + background-image: url("../img/flags/mw.svg"); +} + +.flag-country-mx { + background-image: url("../img/flags/mx.svg"); +} + +.flag-country-my { + background-image: url("../img/flags/my.svg"); +} + +.flag-country-mz { + background-image: url("../img/flags/mz.svg"); +} + +.flag-country-na { + background-image: url("../img/flags/na.svg"); +} + +.flag-country-nc { + background-image: url("../img/flags/nc.svg"); +} + +.flag-country-ne { + background-image: url("../img/flags/ne.svg"); +} + +.flag-country-nf { + background-image: url("../img/flags/nf.svg"); +} + +.flag-country-ng { + background-image: url("../img/flags/ng.svg"); +} + +.flag-country-ni { + background-image: url("../img/flags/ni.svg"); +} + +.flag-country-nl { + background-image: url("../img/flags/nl.svg"); +} + +.flag-country-no { + background-image: url("../img/flags/no.svg"); +} + +.flag-country-np { + background-image: url("../img/flags/np.svg"); +} + +.flag-country-nr { + background-image: url("../img/flags/nr.svg"); +} + +.flag-country-nu { + background-image: url("../img/flags/nu.svg"); +} + +.flag-country-nz { + background-image: url("../img/flags/nz.svg"); +} + +.flag-country-om { + background-image: url("../img/flags/om.svg"); +} + +.flag-country-pa { + background-image: url("../img/flags/pa.svg"); +} + +.flag-country-pe { + background-image: url("../img/flags/pe.svg"); +} + +.flag-country-pf { + background-image: url("../img/flags/pf.svg"); +} + +.flag-country-pg { + background-image: url("../img/flags/pg.svg"); +} + +.flag-country-ph { + background-image: url("../img/flags/ph.svg"); +} + +.flag-country-pk { + background-image: url("../img/flags/pk.svg"); +} + +.flag-country-pl { + background-image: url("../img/flags/pl.svg"); +} + +.flag-country-pm { + background-image: url("../img/flags/pm.svg"); +} + +.flag-country-pn { + background-image: url("../img/flags/pn.svg"); +} + +.flag-country-pr { + background-image: url("../img/flags/pr.svg"); +} + +.flag-country-ps { + background-image: url("../img/flags/ps.svg"); +} + +.flag-country-pt { + background-image: url("../img/flags/pt.svg"); +} + +.flag-country-pw { + background-image: url("../img/flags/pw.svg"); +} + +.flag-country-py { + background-image: url("../img/flags/py.svg"); +} + +.flag-country-qa { + background-image: url("../img/flags/qa.svg"); +} + +.flag-country-rainbow { + background-image: url("../img/flags/rainbow.svg"); +} + +.flag-country-re { + background-image: url("../img/flags/re.svg"); +} + +.flag-country-ro { + background-image: url("../img/flags/ro.svg"); +} + +.flag-country-rs { + background-image: url("../img/flags/rs.svg"); +} + +.flag-country-ru { + background-image: url("../img/flags/ru.svg"); +} + +.flag-country-rw { + background-image: url("../img/flags/rw.svg"); +} + +.flag-country-sa { + background-image: url("../img/flags/sa.svg"); +} + +.flag-country-sb { + background-image: url("../img/flags/sb.svg"); +} + +.flag-country-sc { + background-image: url("../img/flags/sc.svg"); +} + +.flag-country-sd { + background-image: url("../img/flags/sd.svg"); +} + +.flag-country-se { + background-image: url("../img/flags/se.svg"); +} + +.flag-country-sg { + background-image: url("../img/flags/sg.svg"); +} + +.flag-country-sh { + background-image: url("../img/flags/sh.svg"); +} + +.flag-country-si { + background-image: url("../img/flags/si.svg"); +} + +.flag-country-sj { + background-image: url("../img/flags/sj.svg"); +} + +.flag-country-sk { + background-image: url("../img/flags/sk.svg"); +} + +.flag-country-sl { + background-image: url("../img/flags/sl.svg"); +} + +.flag-country-sm { + background-image: url("../img/flags/sm.svg"); +} + +.flag-country-sn { + background-image: url("../img/flags/sn.svg"); +} + +.flag-country-so { + background-image: url("../img/flags/so.svg"); +} + +.flag-country-sr { + background-image: url("../img/flags/sr.svg"); +} + +.flag-country-ss { + background-image: url("../img/flags/ss.svg"); +} + +.flag-country-st { + background-image: url("../img/flags/st.svg"); +} + +.flag-country-sv { + background-image: url("../img/flags/sv.svg"); +} + +.flag-country-sx { + background-image: url("../img/flags/sx.svg"); +} + +.flag-country-sy { + background-image: url("../img/flags/sy.svg"); +} + +.flag-country-sz { + background-image: url("../img/flags/sz.svg"); +} + +.flag-country-tc { + background-image: url("../img/flags/tc.svg"); +} + +.flag-country-td { + background-image: url("../img/flags/td.svg"); +} + +.flag-country-tf { + background-image: url("../img/flags/tf.svg"); +} + +.flag-country-tg { + background-image: url("../img/flags/tg.svg"); +} + +.flag-country-th { + background-image: url("../img/flags/th.svg"); +} + +.flag-country-tj { + background-image: url("../img/flags/tj.svg"); +} + +.flag-country-tk { + background-image: url("../img/flags/tk.svg"); +} + +.flag-country-tl { + background-image: url("../img/flags/tl.svg"); +} + +.flag-country-tm { + background-image: url("../img/flags/tm.svg"); +} + +.flag-country-tn { + background-image: url("../img/flags/tn.svg"); +} + +.flag-country-to { + background-image: url("../img/flags/to.svg"); +} + +.flag-country-tr { + background-image: url("../img/flags/tr.svg"); +} + +.flag-country-tt { + background-image: url("../img/flags/tt.svg"); +} + +.flag-country-tv { + background-image: url("../img/flags/tv.svg"); +} + +.flag-country-tw { + background-image: url("../img/flags/tw.svg"); +} + +.flag-country-tz { + background-image: url("../img/flags/tz.svg"); +} + +.flag-country-ua { + background-image: url("../img/flags/ua.svg"); +} + +.flag-country-ug { + background-image: url("../img/flags/ug.svg"); +} + +.flag-country-um { + background-image: url("../img/flags/um.svg"); +} + +.flag-country-unasur { + background-image: url("../img/flags/unasur.svg"); +} + +.flag-country-us { + background-image: url("../img/flags/us.svg"); +} + +.flag-country-uy { + background-image: url("../img/flags/uy.svg"); +} + +.flag-country-uz { + background-image: url("../img/flags/uz.svg"); +} + +.flag-country-va { + background-image: url("../img/flags/va.svg"); +} + +.flag-country-vc { + background-image: url("../img/flags/vc.svg"); +} + +.flag-country-ve { + background-image: url("../img/flags/ve.svg"); +} + +.flag-country-vg { + background-image: url("../img/flags/vg.svg"); +} + +.flag-country-vi { + background-image: url("../img/flags/vi.svg"); +} + +.flag-country-vn { + background-image: url("../img/flags/vn.svg"); +} + +.flag-country-vu { + background-image: url("../img/flags/vu.svg"); +} + +.flag-country-wf { + background-image: url("../img/flags/wf.svg"); +} + +.flag-country-ws { + background-image: url("../img/flags/ws.svg"); +} + +.flag-country-ye { + background-image: url("../img/flags/ye.svg"); +} + +.flag-country-za { + background-image: url("../img/flags/za.svg"); +} + +.flag-country-zm { + background-image: url("../img/flags/zm.svg"); +} + +.flag-country-zw { + background-image: url("../img/flags/zw.svg"); +} + +.flag-xxs { + height: 1rem; +} + +.flag-xs { + height: 1.25rem; +} + +.flag-sm { + height: 2rem; +} + +.flag-md { + height: 2.5rem; +} + +.flag-lg { + height: 3rem; +} + +.flag-xl { + height: 5rem; +} + +.flag-2xl { + height: 7rem; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-flags.rtl.min.css b/gin_ops/static/dist/css/tabler-flags.rtl.min.css new file mode 100644 index 0000000..738ffe2 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-flags.rtl.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.flag{position:relative;display:inline-block;height:2.5rem;aspect-ratio:1.33333;background:no-repeat center/cover;box-shadow:var(--tblr-box-shadow-border);border-radius:var(--tblr-border-radius);vertical-align:bottom}.flag.flag-country-np{box-shadow:none;border-radius:0}.flag-country-ad{background-image:url(../img/flags/ad.svg)}.flag-country-af{background-image:url(../img/flags/af.svg)}.flag-country-ae{background-image:url(../img/flags/ae.svg)}.flag-country-afrun{background-image:url(../img/flags/afrun.svg)}.flag-country-ag{background-image:url(../img/flags/ag.svg)}.flag-country-ai{background-image:url(../img/flags/ai.svg)}.flag-country-al{background-image:url(../img/flags/al.svg)}.flag-country-am{background-image:url(../img/flags/am.svg)}.flag-country-ams{background-image:url(../img/flags/ams.svg)}.flag-country-ao{background-image:url(../img/flags/ao.svg)}.flag-country-aq{background-image:url(../img/flags/aq.svg)}.flag-country-ar{background-image:url(../img/flags/ar.svg)}.flag-country-as{background-image:url(../img/flags/as.svg)}.flag-country-at{background-image:url(../img/flags/at.svg)}.flag-country-au{background-image:url(../img/flags/au.svg)}.flag-country-aw{background-image:url(../img/flags/aw.svg)}.flag-country-ax{background-image:url(../img/flags/ax.svg)}.flag-country-az{background-image:url(../img/flags/az.svg)}.flag-country-ba{background-image:url(../img/flags/ba.svg)}.flag-country-bb{background-image:url(../img/flags/bb.svg)}.flag-country-bd{background-image:url(../img/flags/bd.svg)}.flag-country-be{background-image:url(../img/flags/be.svg)}.flag-country-bf{background-image:url(../img/flags/bf.svg)}.flag-country-bg{background-image:url(../img/flags/bg.svg)}.flag-country-bh{background-image:url(../img/flags/bh.svg)}.flag-country-bi{background-image:url(../img/flags/bi.svg)}.flag-country-bj{background-image:url(../img/flags/bj.svg)}.flag-country-bl{background-image:url(../img/flags/bl.svg)}.flag-country-bm{background-image:url(../img/flags/bm.svg)}.flag-country-bn{background-image:url(../img/flags/bn.svg)}.flag-country-bo{background-image:url(../img/flags/bo.svg)}.flag-country-bq-bo{background-image:url(../img/flags/bq-bo.svg)}.flag-country-bq-sa{background-image:url(../img/flags/bq-sa.svg)}.flag-country-bq-se{background-image:url(../img/flags/bq-se.svg)}.flag-country-br{background-image:url(../img/flags/br.svg)}.flag-country-bs{background-image:url(../img/flags/bs.svg)}.flag-country-bt{background-image:url(../img/flags/bt.svg)}.flag-country-bv{background-image:url(../img/flags/bv.svg)}.flag-country-bw{background-image:url(../img/flags/bw.svg)}.flag-country-by{background-image:url(../img/flags/by.svg)}.flag-country-bz{background-image:url(../img/flags/bz.svg)}.flag-country-ca{background-image:url(../img/flags/ca.svg)}.flag-country-cc{background-image:url(../img/flags/cc.svg)}.flag-country-cd{background-image:url(../img/flags/cd.svg)}.flag-country-cf{background-image:url(../img/flags/cf.svg)}.flag-country-cg{background-image:url(../img/flags/cg.svg)}.flag-country-ch{background-image:url(../img/flags/ch.svg)}.flag-country-ci{background-image:url(../img/flags/ci.svg)}.flag-country-ck{background-image:url(../img/flags/ck.svg)}.flag-country-cl{background-image:url(../img/flags/cl.svg)}.flag-country-cm{background-image:url(../img/flags/cm.svg)}.flag-country-cn{background-image:url(../img/flags/cn.svg)}.flag-country-co{background-image:url(../img/flags/co.svg)}.flag-country-cr{background-image:url(../img/flags/cr.svg)}.flag-country-cu{background-image:url(../img/flags/cu.svg)}.flag-country-cv{background-image:url(../img/flags/cv.svg)}.flag-country-cw{background-image:url(../img/flags/cw.svg)}.flag-country-cx{background-image:url(../img/flags/cx.svg)}.flag-country-cy{background-image:url(../img/flags/cy.svg)}.flag-country-cz{background-image:url(../img/flags/cz.svg)}.flag-country-de{background-image:url(../img/flags/de.svg)}.flag-country-dj{background-image:url(../img/flags/dj.svg)}.flag-country-dk{background-image:url(../img/flags/dk.svg)}.flag-country-dm{background-image:url(../img/flags/dm.svg)}.flag-country-do{background-image:url(../img/flags/do.svg)}.flag-country-ec{background-image:url(../img/flags/ec.svg)}.flag-country-ee{background-image:url(../img/flags/ee.svg)}.flag-country-eg{background-image:url(../img/flags/eg.svg)}.flag-country-eh{background-image:url(../img/flags/eh.svg)}.flag-country-er{background-image:url(../img/flags/er.svg)}.flag-country-es{background-image:url(../img/flags/es.svg)}.flag-country-et{background-image:url(../img/flags/et.svg)}.flag-country-eu{background-image:url(../img/flags/eu.svg)}.flag-country-fi{background-image:url(../img/flags/fi.svg)}.flag-country-fj{background-image:url(../img/flags/fj.svg)}.flag-country-fk{background-image:url(../img/flags/fk.svg)}.flag-country-fm{background-image:url(../img/flags/fm.svg)}.flag-country-fo{background-image:url(../img/flags/fo.svg)}.flag-country-fr{background-image:url(../img/flags/fr.svg)}.flag-country-ga{background-image:url(../img/flags/ga.svg)}.flag-country-gb-eng{background-image:url(../img/flags/gb-eng.svg)}.flag-country-gb-sct{background-image:url(../img/flags/gb-sct.svg)}.flag-country-gb{background-image:url(../img/flags/gb.svg)}.flag-country-gb-wls{background-image:url(../img/flags/gb-wls.svg)}.flag-country-gb-nir{background-image:url(../img/flags/gb-nir.svg)}.flag-country-gd{background-image:url(../img/flags/gd.svg)}.flag-country-ge{background-image:url(../img/flags/ge.svg)}.flag-country-gf{background-image:url(../img/flags/gf.svg)}.flag-country-gg{background-image:url(../img/flags/gg.svg)}.flag-country-gh{background-image:url(../img/flags/gh.svg)}.flag-country-gi{background-image:url(../img/flags/gi.svg)}.flag-country-gl{background-image:url(../img/flags/gl.svg)}.flag-country-gm{background-image:url(../img/flags/gm.svg)}.flag-country-gn{background-image:url(../img/flags/gn.svg)}.flag-country-gp{background-image:url(../img/flags/gp.svg)}.flag-country-gq{background-image:url(../img/flags/gq.svg)}.flag-country-gr{background-image:url(../img/flags/gr.svg)}.flag-country-gs{background-image:url(../img/flags/gs.svg)}.flag-country-gt{background-image:url(../img/flags/gt.svg)}.flag-country-gu{background-image:url(../img/flags/gu.svg)}.flag-country-gw{background-image:url(../img/flags/gw.svg)}.flag-country-gy{background-image:url(../img/flags/gy.svg)}.flag-country-hk{background-image:url(../img/flags/hk.svg)}.flag-country-hm{background-image:url(../img/flags/hm.svg)}.flag-country-hn{background-image:url(../img/flags/hn.svg)}.flag-country-hr{background-image:url(../img/flags/hr.svg)}.flag-country-ht{background-image:url(../img/flags/ht.svg)}.flag-country-hu{background-image:url(../img/flags/hu.svg)}.flag-country-id{background-image:url(../img/flags/id.svg)}.flag-country-ie{background-image:url(../img/flags/ie.svg)}.flag-country-il{background-image:url(../img/flags/il.svg)}.flag-country-im{background-image:url(../img/flags/im.svg)}.flag-country-in{background-image:url(../img/flags/in.svg)}.flag-country-io{background-image:url(../img/flags/io.svg)}.flag-country-iq{background-image:url(../img/flags/iq.svg)}.flag-country-ir{background-image:url(../img/flags/ir.svg)}.flag-country-is{background-image:url(../img/flags/is.svg)}.flag-country-it{background-image:url(../img/flags/it.svg)}.flag-country-je{background-image:url(../img/flags/je.svg)}.flag-country-jm{background-image:url(../img/flags/jm.svg)}.flag-country-jo{background-image:url(../img/flags/jo.svg)}.flag-country-jp{background-image:url(../img/flags/jp.svg)}.flag-country-ke{background-image:url(../img/flags/ke.svg)}.flag-country-kg{background-image:url(../img/flags/kg.svg)}.flag-country-kh{background-image:url(../img/flags/kh.svg)}.flag-country-ki{background-image:url(../img/flags/ki.svg)}.flag-country-km{background-image:url(../img/flags/km.svg)}.flag-country-kn-sk{background-image:url(../img/flags/kn-sk.svg)}.flag-country-kp{background-image:url(../img/flags/kp.svg)}.flag-country-kr{background-image:url(../img/flags/kr.svg)}.flag-country-kw{background-image:url(../img/flags/kw.svg)}.flag-country-ky{background-image:url(../img/flags/ky.svg)}.flag-country-kz{background-image:url(../img/flags/kz.svg)}.flag-country-la{background-image:url(../img/flags/la.svg)}.flag-country-lb{background-image:url(../img/flags/lb.svg)}.flag-country-lc{background-image:url(../img/flags/lc.svg)}.flag-country-li{background-image:url(../img/flags/li.svg)}.flag-country-lk{background-image:url(../img/flags/lk.svg)}.flag-country-lr{background-image:url(../img/flags/lr.svg)}.flag-country-ls{background-image:url(../img/flags/ls.svg)}.flag-country-lt{background-image:url(../img/flags/lt.svg)}.flag-country-lu{background-image:url(../img/flags/lu.svg)}.flag-country-lv{background-image:url(../img/flags/lv.svg)}.flag-country-ly{background-image:url(../img/flags/ly.svg)}.flag-country-ma{background-image:url(../img/flags/ma.svg)}.flag-country-mc{background-image:url(../img/flags/mc.svg)}.flag-country-md{background-image:url(../img/flags/md.svg)}.flag-country-me{background-image:url(../img/flags/me.svg)}.flag-country-mf{background-image:url(../img/flags/mf.svg)}.flag-country-mg{background-image:url(../img/flags/mg.svg)}.flag-country-mh{background-image:url(../img/flags/mh.svg)}.flag-country-mk{background-image:url(../img/flags/mk.svg)}.flag-country-ml{background-image:url(../img/flags/ml.svg)}.flag-country-mm{background-image:url(../img/flags/mm.svg)}.flag-country-mn{background-image:url(../img/flags/mn.svg)}.flag-country-mo{background-image:url(../img/flags/mo.svg)}.flag-country-mp{background-image:url(../img/flags/mp.svg)}.flag-country-mq{background-image:url(../img/flags/mq.svg)}.flag-country-mr{background-image:url(../img/flags/mr.svg)}.flag-country-ms{background-image:url(../img/flags/ms.svg)}.flag-country-mt{background-image:url(../img/flags/mt.svg)}.flag-country-mu{background-image:url(../img/flags/mu.svg)}.flag-country-mv{background-image:url(../img/flags/mv.svg)}.flag-country-mw{background-image:url(../img/flags/mw.svg)}.flag-country-mx{background-image:url(../img/flags/mx.svg)}.flag-country-my{background-image:url(../img/flags/my.svg)}.flag-country-mz{background-image:url(../img/flags/mz.svg)}.flag-country-na{background-image:url(../img/flags/na.svg)}.flag-country-nc{background-image:url(../img/flags/nc.svg)}.flag-country-ne{background-image:url(../img/flags/ne.svg)}.flag-country-nf{background-image:url(../img/flags/nf.svg)}.flag-country-ng{background-image:url(../img/flags/ng.svg)}.flag-country-ni{background-image:url(../img/flags/ni.svg)}.flag-country-nl{background-image:url(../img/flags/nl.svg)}.flag-country-no{background-image:url(../img/flags/no.svg)}.flag-country-np{background-image:url(../img/flags/np.svg)}.flag-country-nr{background-image:url(../img/flags/nr.svg)}.flag-country-nu{background-image:url(../img/flags/nu.svg)}.flag-country-nz{background-image:url(../img/flags/nz.svg)}.flag-country-om{background-image:url(../img/flags/om.svg)}.flag-country-pa{background-image:url(../img/flags/pa.svg)}.flag-country-pe{background-image:url(../img/flags/pe.svg)}.flag-country-pf{background-image:url(../img/flags/pf.svg)}.flag-country-pg{background-image:url(../img/flags/pg.svg)}.flag-country-ph{background-image:url(../img/flags/ph.svg)}.flag-country-pk{background-image:url(../img/flags/pk.svg)}.flag-country-pl{background-image:url(../img/flags/pl.svg)}.flag-country-pm{background-image:url(../img/flags/pm.svg)}.flag-country-pn{background-image:url(../img/flags/pn.svg)}.flag-country-pr{background-image:url(../img/flags/pr.svg)}.flag-country-ps{background-image:url(../img/flags/ps.svg)}.flag-country-pt{background-image:url(../img/flags/pt.svg)}.flag-country-pw{background-image:url(../img/flags/pw.svg)}.flag-country-py{background-image:url(../img/flags/py.svg)}.flag-country-qa{background-image:url(../img/flags/qa.svg)}.flag-country-rainbow{background-image:url(../img/flags/rainbow.svg)}.flag-country-re{background-image:url(../img/flags/re.svg)}.flag-country-ro{background-image:url(../img/flags/ro.svg)}.flag-country-rs{background-image:url(../img/flags/rs.svg)}.flag-country-ru{background-image:url(../img/flags/ru.svg)}.flag-country-rw{background-image:url(../img/flags/rw.svg)}.flag-country-sa{background-image:url(../img/flags/sa.svg)}.flag-country-sb{background-image:url(../img/flags/sb.svg)}.flag-country-sc{background-image:url(../img/flags/sc.svg)}.flag-country-sd{background-image:url(../img/flags/sd.svg)}.flag-country-se{background-image:url(../img/flags/se.svg)}.flag-country-sg{background-image:url(../img/flags/sg.svg)}.flag-country-sh{background-image:url(../img/flags/sh.svg)}.flag-country-si{background-image:url(../img/flags/si.svg)}.flag-country-sj{background-image:url(../img/flags/sj.svg)}.flag-country-sk{background-image:url(../img/flags/sk.svg)}.flag-country-sl{background-image:url(../img/flags/sl.svg)}.flag-country-sm{background-image:url(../img/flags/sm.svg)}.flag-country-sn{background-image:url(../img/flags/sn.svg)}.flag-country-so{background-image:url(../img/flags/so.svg)}.flag-country-sr{background-image:url(../img/flags/sr.svg)}.flag-country-ss{background-image:url(../img/flags/ss.svg)}.flag-country-st{background-image:url(../img/flags/st.svg)}.flag-country-sv{background-image:url(../img/flags/sv.svg)}.flag-country-sx{background-image:url(../img/flags/sx.svg)}.flag-country-sy{background-image:url(../img/flags/sy.svg)}.flag-country-sz{background-image:url(../img/flags/sz.svg)}.flag-country-tc{background-image:url(../img/flags/tc.svg)}.flag-country-td{background-image:url(../img/flags/td.svg)}.flag-country-tf{background-image:url(../img/flags/tf.svg)}.flag-country-tg{background-image:url(../img/flags/tg.svg)}.flag-country-th{background-image:url(../img/flags/th.svg)}.flag-country-tj{background-image:url(../img/flags/tj.svg)}.flag-country-tk{background-image:url(../img/flags/tk.svg)}.flag-country-tl{background-image:url(../img/flags/tl.svg)}.flag-country-tm{background-image:url(../img/flags/tm.svg)}.flag-country-tn{background-image:url(../img/flags/tn.svg)}.flag-country-to{background-image:url(../img/flags/to.svg)}.flag-country-tr{background-image:url(../img/flags/tr.svg)}.flag-country-tt{background-image:url(../img/flags/tt.svg)}.flag-country-tv{background-image:url(../img/flags/tv.svg)}.flag-country-tw{background-image:url(../img/flags/tw.svg)}.flag-country-tz{background-image:url(../img/flags/tz.svg)}.flag-country-ua{background-image:url(../img/flags/ua.svg)}.flag-country-ug{background-image:url(../img/flags/ug.svg)}.flag-country-um{background-image:url(../img/flags/um.svg)}.flag-country-unasur{background-image:url(../img/flags/unasur.svg)}.flag-country-us{background-image:url(../img/flags/us.svg)}.flag-country-uy{background-image:url(../img/flags/uy.svg)}.flag-country-uz{background-image:url(../img/flags/uz.svg)}.flag-country-va{background-image:url(../img/flags/va.svg)}.flag-country-vc{background-image:url(../img/flags/vc.svg)}.flag-country-ve{background-image:url(../img/flags/ve.svg)}.flag-country-vg{background-image:url(../img/flags/vg.svg)}.flag-country-vi{background-image:url(../img/flags/vi.svg)}.flag-country-vn{background-image:url(../img/flags/vn.svg)}.flag-country-vu{background-image:url(../img/flags/vu.svg)}.flag-country-wf{background-image:url(../img/flags/wf.svg)}.flag-country-ws{background-image:url(../img/flags/ws.svg)}.flag-country-ye{background-image:url(../img/flags/ye.svg)}.flag-country-za{background-image:url(../img/flags/za.svg)}.flag-country-zm{background-image:url(../img/flags/zm.svg)}.flag-country-zw{background-image:url(../img/flags/zw.svg)}.flag-xxs{height:1rem}.flag-xs{height:1.25rem}.flag-sm{height:2rem}.flag-md{height:2.5rem}.flag-lg{height:3rem}.flag-xl{height:5rem}.flag-2xl{height:7rem} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-payments.css b/gin_ops/static/dist/css/tabler-payments.css new file mode 100644 index 0000000..6710904 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-payments.css @@ -0,0 +1,528 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +.payment { + height: 2.5rem; + aspect-ratio: 1.66666; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.payment-provider-2checkout { + background-image: url("../img/payments/2checkout.svg"); +} + +.payment-provider-2checkout-dark { + background-image: url("../img/payments/2checkout-dark.svg"); +} + +.payment-provider-alipay { + background-image: url("../img/payments/alipay.svg"); +} + +.payment-provider-alipay-dark { + background-image: url("../img/payments/alipay-dark.svg"); +} + +.payment-provider-amazon { + background-image: url("../img/payments/amazon.svg"); +} + +.payment-provider-amazon-dark { + background-image: url("../img/payments/amazon-dark.svg"); +} + +.payment-provider-americanexpress { + background-image: url("../img/payments/americanexpress.svg"); +} + +.payment-provider-americanexpress-dark { + background-image: url("../img/payments/americanexpress-dark.svg"); +} + +.payment-provider-applepay { + background-image: url("../img/payments/applepay.svg"); +} + +.payment-provider-applepay-dark { + background-image: url("../img/payments/applepay-dark.svg"); +} + +.payment-provider-bancontact { + background-image: url("../img/payments/bancontact.svg"); +} + +.payment-provider-bancontact-dark { + background-image: url("../img/payments/bancontact-dark.svg"); +} + +.payment-provider-bitcoin { + background-image: url("../img/payments/bitcoin.svg"); +} + +.payment-provider-bitcoin-dark { + background-image: url("../img/payments/bitcoin-dark.svg"); +} + +.payment-provider-bitpay { + background-image: url("../img/payments/bitpay.svg"); +} + +.payment-provider-bitpay-dark { + background-image: url("../img/payments/bitpay-dark.svg"); +} + +.payment-provider-blik { + background-image: url("../img/payments/blik.svg"); +} + +.payment-provider-blik-dark { + background-image: url("../img/payments/blik-dark.svg"); +} + +.payment-provider-cirrus { + background-image: url("../img/payments/cirrus.svg"); +} + +.payment-provider-cirrus-dark { + background-image: url("../img/payments/cirrus-dark.svg"); +} + +.payment-provider-clickandbuy { + background-image: url("../img/payments/clickandbuy.svg"); +} + +.payment-provider-clickandbuy-dark { + background-image: url("../img/payments/clickandbuy-dark.svg"); +} + +.payment-provider-coinkite { + background-image: url("../img/payments/coinkite.svg"); +} + +.payment-provider-coinkite-dark { + background-image: url("../img/payments/coinkite-dark.svg"); +} + +.payment-provider-dinersclub { + background-image: url("../img/payments/dinersclub.svg"); +} + +.payment-provider-dinersclub-dark { + background-image: url("../img/payments/dinersclub-dark.svg"); +} + +.payment-provider-directdebit { + background-image: url("../img/payments/directdebit.svg"); +} + +.payment-provider-directdebit-dark { + background-image: url("../img/payments/directdebit-dark.svg"); +} + +.payment-provider-discover { + background-image: url("../img/payments/discover.svg"); +} + +.payment-provider-discover-dark { + background-image: url("../img/payments/discover-dark.svg"); +} + +.payment-provider-dotpay { + background-image: url("../img/payments/dotpay.svg"); +} + +.payment-provider-dotpay-dark { + background-image: url("../img/payments/dotpay-dark.svg"); +} + +.payment-provider-dwolla { + background-image: url("../img/payments/dwolla.svg"); +} + +.payment-provider-dwolla-dark { + background-image: url("../img/payments/dwolla-dark.svg"); +} + +.payment-provider-ebay { + background-image: url("../img/payments/ebay.svg"); +} + +.payment-provider-ebay-dark { + background-image: url("../img/payments/ebay-dark.svg"); +} + +.payment-provider-epayco { + background-image: url("../img/payments/epayco.svg"); +} + +.payment-provider-epayco-dark { + background-image: url("../img/payments/epayco-dark.svg"); +} + +.payment-provider-eway { + background-image: url("../img/payments/eway.svg"); +} + +.payment-provider-eway-dark { + background-image: url("../img/payments/eway-dark.svg"); +} + +.payment-provider-giropay { + background-image: url("../img/payments/giropay.svg"); +} + +.payment-provider-giropay-dark { + background-image: url("../img/payments/giropay-dark.svg"); +} + +.payment-provider-googlewallet { + background-image: url("../img/payments/googlewallet.svg"); +} + +.payment-provider-googlewallet-dark { + background-image: url("../img/payments/googlewallet-dark.svg"); +} + +.payment-provider-ingenico { + background-image: url("../img/payments/ingenico.svg"); +} + +.payment-provider-ingenico-dark { + background-image: url("../img/payments/ingenico-dark.svg"); +} + +.payment-provider-jcb { + background-image: url("../img/payments/jcb.svg"); +} + +.payment-provider-jcb-dark { + background-image: url("../img/payments/jcb-dark.svg"); +} + +.payment-provider-klarna { + background-image: url("../img/payments/klarna.svg"); +} + +.payment-provider-klarna-dark { + background-image: url("../img/payments/klarna-dark.svg"); +} + +.payment-provider-laser { + background-image: url("../img/payments/laser.svg"); +} + +.payment-provider-laser-dark { + background-image: url("../img/payments/laser-dark.svg"); +} + +.payment-provider-maestro { + background-image: url("../img/payments/maestro.svg"); +} + +.payment-provider-maestro-dark { + background-image: url("../img/payments/maestro-dark.svg"); +} + +.payment-provider-mastercard { + background-image: url("../img/payments/mastercard.svg"); +} + +.payment-provider-mastercard-dark { + background-image: url("../img/payments/mastercard-dark.svg"); +} + +.payment-provider-mir { + background-image: url("../img/payments/mir.svg"); +} + +.payment-provider-mir-dark { + background-image: url("../img/payments/mir-dark.svg"); +} + +.payment-provider-monero { + background-image: url("../img/payments/monero.svg"); +} + +.payment-provider-monero-dark { + background-image: url("../img/payments/monero-dark.svg"); +} + +.payment-provider-neteller { + background-image: url("../img/payments/neteller.svg"); +} + +.payment-provider-neteller-dark { + background-image: url("../img/payments/neteller-dark.svg"); +} + +.payment-provider-ogone { + background-image: url("../img/payments/ogone.svg"); +} + +.payment-provider-ogone-dark { + background-image: url("../img/payments/ogone-dark.svg"); +} + +.payment-provider-okpay { + background-image: url("../img/payments/okpay.svg"); +} + +.payment-provider-okpay-dark { + background-image: url("../img/payments/okpay-dark.svg"); +} + +.payment-provider-paybox { + background-image: url("../img/payments/paybox.svg"); +} + +.payment-provider-paybox-dark { + background-image: url("../img/payments/paybox-dark.svg"); +} + +.payment-provider-paymill { + background-image: url("../img/payments/paymill.svg"); +} + +.payment-provider-paymill-dark { + background-image: url("../img/payments/paymill-dark.svg"); +} + +.payment-provider-payone { + background-image: url("../img/payments/payone.svg"); +} + +.payment-provider-payone-dark { + background-image: url("../img/payments/payone-dark.svg"); +} + +.payment-provider-payoneer { + background-image: url("../img/payments/payoneer.svg"); +} + +.payment-provider-payoneer-dark { + background-image: url("../img/payments/payoneer-dark.svg"); +} + +.payment-provider-paypal { + background-image: url("../img/payments/paypal.svg"); +} + +.payment-provider-paypal-dark { + background-image: url("../img/payments/paypal-dark.svg"); +} + +.payment-provider-paysafecard { + background-image: url("../img/payments/paysafecard.svg"); +} + +.payment-provider-paysafecard-dark { + background-image: url("../img/payments/paysafecard-dark.svg"); +} + +.payment-provider-payu { + background-image: url("../img/payments/payu.svg"); +} + +.payment-provider-payu-dark { + background-image: url("../img/payments/payu-dark.svg"); +} + +.payment-provider-payza { + background-image: url("../img/payments/payza.svg"); +} + +.payment-provider-payza-dark { + background-image: url("../img/payments/payza-dark.svg"); +} + +.payment-provider-przelewy24 { + background-image: url("../img/payments/przelewy24.svg"); +} + +.payment-provider-przelewy24-dark { + background-image: url("../img/payments/przelewy24-dark.svg"); +} + +.payment-provider-ripple { + background-image: url("../img/payments/ripple.svg"); +} + +.payment-provider-ripple-dark { + background-image: url("../img/payments/ripple-dark.svg"); +} + +.payment-provider-sage { + background-image: url("../img/payments/sage.svg"); +} + +.payment-provider-sage-dark { + background-image: url("../img/payments/sage-dark.svg"); +} + +.payment-provider-sepa { + background-image: url("../img/payments/sepa.svg"); +} + +.payment-provider-sepa-dark { + background-image: url("../img/payments/sepa-dark.svg"); +} + +.payment-provider-shopify { + background-image: url("../img/payments/shopify.svg"); +} + +.payment-provider-shopify-dark { + background-image: url("../img/payments/shopify-dark.svg"); +} + +.payment-provider-skrill { + background-image: url("../img/payments/skrill.svg"); +} + +.payment-provider-skrill-dark { + background-image: url("../img/payments/skrill-dark.svg"); +} + +.payment-provider-solo { + background-image: url("../img/payments/solo.svg"); +} + +.payment-provider-solo-dark { + background-image: url("../img/payments/solo-dark.svg"); +} + +.payment-provider-square { + background-image: url("../img/payments/square.svg"); +} + +.payment-provider-square-dark { + background-image: url("../img/payments/square-dark.svg"); +} + +.payment-provider-stripe { + background-image: url("../img/payments/stripe.svg"); +} + +.payment-provider-stripe-dark { + background-image: url("../img/payments/stripe-dark.svg"); +} + +.payment-provider-switch { + background-image: url("../img/payments/switch.svg"); +} + +.payment-provider-switch-dark { + background-image: url("../img/payments/switch-dark.svg"); +} + +.payment-provider-tpay { + background-image: url("../img/payments/tpay.svg"); +} + +.payment-provider-tpay-dark { + background-image: url("../img/payments/tpay-dark.svg"); +} + +.payment-provider-ukash { + background-image: url("../img/payments/ukash.svg"); +} + +.payment-provider-ukash-dark { + background-image: url("../img/payments/ukash-dark.svg"); +} + +.payment-provider-unionpay { + background-image: url("../img/payments/unionpay.svg"); +} + +.payment-provider-unionpay-dark { + background-image: url("../img/payments/unionpay-dark.svg"); +} + +.payment-provider-verifone { + background-image: url("../img/payments/verifone.svg"); +} + +.payment-provider-verifone-dark { + background-image: url("../img/payments/verifone-dark.svg"); +} + +.payment-provider-verisign { + background-image: url("../img/payments/verisign.svg"); +} + +.payment-provider-verisign-dark { + background-image: url("../img/payments/verisign-dark.svg"); +} + +.payment-provider-visa { + background-image: url("../img/payments/visa.svg"); +} + +.payment-provider-visa-dark { + background-image: url("../img/payments/visa-dark.svg"); +} + +.payment-provider-webmoney { + background-image: url("../img/payments/webmoney.svg"); +} + +.payment-provider-webmoney-dark { + background-image: url("../img/payments/webmoney-dark.svg"); +} + +.payment-provider-westernunion { + background-image: url("../img/payments/westernunion.svg"); +} + +.payment-provider-westernunion-dark { + background-image: url("../img/payments/westernunion-dark.svg"); +} + +.payment-provider-worldpay { + background-image: url("../img/payments/worldpay.svg"); +} + +.payment-provider-worldpay-dark { + background-image: url("../img/payments/worldpay-dark.svg"); +} + +.payment-xxs { + height: 1rem; +} + +.payment-xs { + height: 1.25rem; +} + +.payment-sm { + height: 2rem; +} + +.payment-md { + height: 2.5rem; +} + +.payment-lg { + height: 3rem; +} + +.payment-xl { + height: 5rem; +} + +.payment-2xl { + height: 7rem; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-payments.min.css b/gin_ops/static/dist/css/tabler-payments.min.css new file mode 100644 index 0000000..59cd582 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-payments.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.payment{height:2.5rem;aspect-ratio:1.66666;display:inline-block;background:no-repeat center/100% 100%;vertical-align:bottom;font-style:normal;box-shadow:0 0 1px 1px rgba(0,0,0,.1);border-radius:2px}.payment-provider-2checkout{background-image:url(../img/payments/2checkout.svg)}.payment-provider-2checkout-dark{background-image:url(../img/payments/2checkout-dark.svg)}.payment-provider-alipay{background-image:url(../img/payments/alipay.svg)}.payment-provider-alipay-dark{background-image:url(../img/payments/alipay-dark.svg)}.payment-provider-amazon{background-image:url(../img/payments/amazon.svg)}.payment-provider-amazon-dark{background-image:url(../img/payments/amazon-dark.svg)}.payment-provider-americanexpress{background-image:url(../img/payments/americanexpress.svg)}.payment-provider-americanexpress-dark{background-image:url(../img/payments/americanexpress-dark.svg)}.payment-provider-applepay{background-image:url(../img/payments/applepay.svg)}.payment-provider-applepay-dark{background-image:url(../img/payments/applepay-dark.svg)}.payment-provider-bancontact{background-image:url(../img/payments/bancontact.svg)}.payment-provider-bancontact-dark{background-image:url(../img/payments/bancontact-dark.svg)}.payment-provider-bitcoin{background-image:url(../img/payments/bitcoin.svg)}.payment-provider-bitcoin-dark{background-image:url(../img/payments/bitcoin-dark.svg)}.payment-provider-bitpay{background-image:url(../img/payments/bitpay.svg)}.payment-provider-bitpay-dark{background-image:url(../img/payments/bitpay-dark.svg)}.payment-provider-blik{background-image:url(../img/payments/blik.svg)}.payment-provider-blik-dark{background-image:url(../img/payments/blik-dark.svg)}.payment-provider-cirrus{background-image:url(../img/payments/cirrus.svg)}.payment-provider-cirrus-dark{background-image:url(../img/payments/cirrus-dark.svg)}.payment-provider-clickandbuy{background-image:url(../img/payments/clickandbuy.svg)}.payment-provider-clickandbuy-dark{background-image:url(../img/payments/clickandbuy-dark.svg)}.payment-provider-coinkite{background-image:url(../img/payments/coinkite.svg)}.payment-provider-coinkite-dark{background-image:url(../img/payments/coinkite-dark.svg)}.payment-provider-dinersclub{background-image:url(../img/payments/dinersclub.svg)}.payment-provider-dinersclub-dark{background-image:url(../img/payments/dinersclub-dark.svg)}.payment-provider-directdebit{background-image:url(../img/payments/directdebit.svg)}.payment-provider-directdebit-dark{background-image:url(../img/payments/directdebit-dark.svg)}.payment-provider-discover{background-image:url(../img/payments/discover.svg)}.payment-provider-discover-dark{background-image:url(../img/payments/discover-dark.svg)}.payment-provider-dotpay{background-image:url(../img/payments/dotpay.svg)}.payment-provider-dotpay-dark{background-image:url(../img/payments/dotpay-dark.svg)}.payment-provider-dwolla{background-image:url(../img/payments/dwolla.svg)}.payment-provider-dwolla-dark{background-image:url(../img/payments/dwolla-dark.svg)}.payment-provider-ebay{background-image:url(../img/payments/ebay.svg)}.payment-provider-ebay-dark{background-image:url(../img/payments/ebay-dark.svg)}.payment-provider-epayco{background-image:url(../img/payments/epayco.svg)}.payment-provider-epayco-dark{background-image:url(../img/payments/epayco-dark.svg)}.payment-provider-eway{background-image:url(../img/payments/eway.svg)}.payment-provider-eway-dark{background-image:url(../img/payments/eway-dark.svg)}.payment-provider-giropay{background-image:url(../img/payments/giropay.svg)}.payment-provider-giropay-dark{background-image:url(../img/payments/giropay-dark.svg)}.payment-provider-googlewallet{background-image:url(../img/payments/googlewallet.svg)}.payment-provider-googlewallet-dark{background-image:url(../img/payments/googlewallet-dark.svg)}.payment-provider-ingenico{background-image:url(../img/payments/ingenico.svg)}.payment-provider-ingenico-dark{background-image:url(../img/payments/ingenico-dark.svg)}.payment-provider-jcb{background-image:url(../img/payments/jcb.svg)}.payment-provider-jcb-dark{background-image:url(../img/payments/jcb-dark.svg)}.payment-provider-klarna{background-image:url(../img/payments/klarna.svg)}.payment-provider-klarna-dark{background-image:url(../img/payments/klarna-dark.svg)}.payment-provider-laser{background-image:url(../img/payments/laser.svg)}.payment-provider-laser-dark{background-image:url(../img/payments/laser-dark.svg)}.payment-provider-maestro{background-image:url(../img/payments/maestro.svg)}.payment-provider-maestro-dark{background-image:url(../img/payments/maestro-dark.svg)}.payment-provider-mastercard{background-image:url(../img/payments/mastercard.svg)}.payment-provider-mastercard-dark{background-image:url(../img/payments/mastercard-dark.svg)}.payment-provider-mir{background-image:url(../img/payments/mir.svg)}.payment-provider-mir-dark{background-image:url(../img/payments/mir-dark.svg)}.payment-provider-monero{background-image:url(../img/payments/monero.svg)}.payment-provider-monero-dark{background-image:url(../img/payments/monero-dark.svg)}.payment-provider-neteller{background-image:url(../img/payments/neteller.svg)}.payment-provider-neteller-dark{background-image:url(../img/payments/neteller-dark.svg)}.payment-provider-ogone{background-image:url(../img/payments/ogone.svg)}.payment-provider-ogone-dark{background-image:url(../img/payments/ogone-dark.svg)}.payment-provider-okpay{background-image:url(../img/payments/okpay.svg)}.payment-provider-okpay-dark{background-image:url(../img/payments/okpay-dark.svg)}.payment-provider-paybox{background-image:url(../img/payments/paybox.svg)}.payment-provider-paybox-dark{background-image:url(../img/payments/paybox-dark.svg)}.payment-provider-paymill{background-image:url(../img/payments/paymill.svg)}.payment-provider-paymill-dark{background-image:url(../img/payments/paymill-dark.svg)}.payment-provider-payone{background-image:url(../img/payments/payone.svg)}.payment-provider-payone-dark{background-image:url(../img/payments/payone-dark.svg)}.payment-provider-payoneer{background-image:url(../img/payments/payoneer.svg)}.payment-provider-payoneer-dark{background-image:url(../img/payments/payoneer-dark.svg)}.payment-provider-paypal{background-image:url(../img/payments/paypal.svg)}.payment-provider-paypal-dark{background-image:url(../img/payments/paypal-dark.svg)}.payment-provider-paysafecard{background-image:url(../img/payments/paysafecard.svg)}.payment-provider-paysafecard-dark{background-image:url(../img/payments/paysafecard-dark.svg)}.payment-provider-payu{background-image:url(../img/payments/payu.svg)}.payment-provider-payu-dark{background-image:url(../img/payments/payu-dark.svg)}.payment-provider-payza{background-image:url(../img/payments/payza.svg)}.payment-provider-payza-dark{background-image:url(../img/payments/payza-dark.svg)}.payment-provider-przelewy24{background-image:url(../img/payments/przelewy24.svg)}.payment-provider-przelewy24-dark{background-image:url(../img/payments/przelewy24-dark.svg)}.payment-provider-ripple{background-image:url(../img/payments/ripple.svg)}.payment-provider-ripple-dark{background-image:url(../img/payments/ripple-dark.svg)}.payment-provider-sage{background-image:url(../img/payments/sage.svg)}.payment-provider-sage-dark{background-image:url(../img/payments/sage-dark.svg)}.payment-provider-sepa{background-image:url(../img/payments/sepa.svg)}.payment-provider-sepa-dark{background-image:url(../img/payments/sepa-dark.svg)}.payment-provider-shopify{background-image:url(../img/payments/shopify.svg)}.payment-provider-shopify-dark{background-image:url(../img/payments/shopify-dark.svg)}.payment-provider-skrill{background-image:url(../img/payments/skrill.svg)}.payment-provider-skrill-dark{background-image:url(../img/payments/skrill-dark.svg)}.payment-provider-solo{background-image:url(../img/payments/solo.svg)}.payment-provider-solo-dark{background-image:url(../img/payments/solo-dark.svg)}.payment-provider-square{background-image:url(../img/payments/square.svg)}.payment-provider-square-dark{background-image:url(../img/payments/square-dark.svg)}.payment-provider-stripe{background-image:url(../img/payments/stripe.svg)}.payment-provider-stripe-dark{background-image:url(../img/payments/stripe-dark.svg)}.payment-provider-switch{background-image:url(../img/payments/switch.svg)}.payment-provider-switch-dark{background-image:url(../img/payments/switch-dark.svg)}.payment-provider-tpay{background-image:url(../img/payments/tpay.svg)}.payment-provider-tpay-dark{background-image:url(../img/payments/tpay-dark.svg)}.payment-provider-ukash{background-image:url(../img/payments/ukash.svg)}.payment-provider-ukash-dark{background-image:url(../img/payments/ukash-dark.svg)}.payment-provider-unionpay{background-image:url(../img/payments/unionpay.svg)}.payment-provider-unionpay-dark{background-image:url(../img/payments/unionpay-dark.svg)}.payment-provider-verifone{background-image:url(../img/payments/verifone.svg)}.payment-provider-verifone-dark{background-image:url(../img/payments/verifone-dark.svg)}.payment-provider-verisign{background-image:url(../img/payments/verisign.svg)}.payment-provider-verisign-dark{background-image:url(../img/payments/verisign-dark.svg)}.payment-provider-visa{background-image:url(../img/payments/visa.svg)}.payment-provider-visa-dark{background-image:url(../img/payments/visa-dark.svg)}.payment-provider-webmoney{background-image:url(../img/payments/webmoney.svg)}.payment-provider-webmoney-dark{background-image:url(../img/payments/webmoney-dark.svg)}.payment-provider-westernunion{background-image:url(../img/payments/westernunion.svg)}.payment-provider-westernunion-dark{background-image:url(../img/payments/westernunion-dark.svg)}.payment-provider-worldpay{background-image:url(../img/payments/worldpay.svg)}.payment-provider-worldpay-dark{background-image:url(../img/payments/worldpay-dark.svg)}.payment-xxs{height:1rem}.payment-xs{height:1.25rem}.payment-sm{height:2rem}.payment-md{height:2.5rem}.payment-lg{height:3rem}.payment-xl{height:5rem}.payment-2xl{height:7rem} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-payments.rtl.css b/gin_ops/static/dist/css/tabler-payments.rtl.css new file mode 100644 index 0000000..6710904 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-payments.rtl.css @@ -0,0 +1,528 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +.payment { + height: 2.5rem; + aspect-ratio: 1.66666; + display: inline-block; + background: no-repeat center/100% 100%; + vertical-align: bottom; + font-style: normal; + box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1); + border-radius: 2px; +} + +.payment-provider-2checkout { + background-image: url("../img/payments/2checkout.svg"); +} + +.payment-provider-2checkout-dark { + background-image: url("../img/payments/2checkout-dark.svg"); +} + +.payment-provider-alipay { + background-image: url("../img/payments/alipay.svg"); +} + +.payment-provider-alipay-dark { + background-image: url("../img/payments/alipay-dark.svg"); +} + +.payment-provider-amazon { + background-image: url("../img/payments/amazon.svg"); +} + +.payment-provider-amazon-dark { + background-image: url("../img/payments/amazon-dark.svg"); +} + +.payment-provider-americanexpress { + background-image: url("../img/payments/americanexpress.svg"); +} + +.payment-provider-americanexpress-dark { + background-image: url("../img/payments/americanexpress-dark.svg"); +} + +.payment-provider-applepay { + background-image: url("../img/payments/applepay.svg"); +} + +.payment-provider-applepay-dark { + background-image: url("../img/payments/applepay-dark.svg"); +} + +.payment-provider-bancontact { + background-image: url("../img/payments/bancontact.svg"); +} + +.payment-provider-bancontact-dark { + background-image: url("../img/payments/bancontact-dark.svg"); +} + +.payment-provider-bitcoin { + background-image: url("../img/payments/bitcoin.svg"); +} + +.payment-provider-bitcoin-dark { + background-image: url("../img/payments/bitcoin-dark.svg"); +} + +.payment-provider-bitpay { + background-image: url("../img/payments/bitpay.svg"); +} + +.payment-provider-bitpay-dark { + background-image: url("../img/payments/bitpay-dark.svg"); +} + +.payment-provider-blik { + background-image: url("../img/payments/blik.svg"); +} + +.payment-provider-blik-dark { + background-image: url("../img/payments/blik-dark.svg"); +} + +.payment-provider-cirrus { + background-image: url("../img/payments/cirrus.svg"); +} + +.payment-provider-cirrus-dark { + background-image: url("../img/payments/cirrus-dark.svg"); +} + +.payment-provider-clickandbuy { + background-image: url("../img/payments/clickandbuy.svg"); +} + +.payment-provider-clickandbuy-dark { + background-image: url("../img/payments/clickandbuy-dark.svg"); +} + +.payment-provider-coinkite { + background-image: url("../img/payments/coinkite.svg"); +} + +.payment-provider-coinkite-dark { + background-image: url("../img/payments/coinkite-dark.svg"); +} + +.payment-provider-dinersclub { + background-image: url("../img/payments/dinersclub.svg"); +} + +.payment-provider-dinersclub-dark { + background-image: url("../img/payments/dinersclub-dark.svg"); +} + +.payment-provider-directdebit { + background-image: url("../img/payments/directdebit.svg"); +} + +.payment-provider-directdebit-dark { + background-image: url("../img/payments/directdebit-dark.svg"); +} + +.payment-provider-discover { + background-image: url("../img/payments/discover.svg"); +} + +.payment-provider-discover-dark { + background-image: url("../img/payments/discover-dark.svg"); +} + +.payment-provider-dotpay { + background-image: url("../img/payments/dotpay.svg"); +} + +.payment-provider-dotpay-dark { + background-image: url("../img/payments/dotpay-dark.svg"); +} + +.payment-provider-dwolla { + background-image: url("../img/payments/dwolla.svg"); +} + +.payment-provider-dwolla-dark { + background-image: url("../img/payments/dwolla-dark.svg"); +} + +.payment-provider-ebay { + background-image: url("../img/payments/ebay.svg"); +} + +.payment-provider-ebay-dark { + background-image: url("../img/payments/ebay-dark.svg"); +} + +.payment-provider-epayco { + background-image: url("../img/payments/epayco.svg"); +} + +.payment-provider-epayco-dark { + background-image: url("../img/payments/epayco-dark.svg"); +} + +.payment-provider-eway { + background-image: url("../img/payments/eway.svg"); +} + +.payment-provider-eway-dark { + background-image: url("../img/payments/eway-dark.svg"); +} + +.payment-provider-giropay { + background-image: url("../img/payments/giropay.svg"); +} + +.payment-provider-giropay-dark { + background-image: url("../img/payments/giropay-dark.svg"); +} + +.payment-provider-googlewallet { + background-image: url("../img/payments/googlewallet.svg"); +} + +.payment-provider-googlewallet-dark { + background-image: url("../img/payments/googlewallet-dark.svg"); +} + +.payment-provider-ingenico { + background-image: url("../img/payments/ingenico.svg"); +} + +.payment-provider-ingenico-dark { + background-image: url("../img/payments/ingenico-dark.svg"); +} + +.payment-provider-jcb { + background-image: url("../img/payments/jcb.svg"); +} + +.payment-provider-jcb-dark { + background-image: url("../img/payments/jcb-dark.svg"); +} + +.payment-provider-klarna { + background-image: url("../img/payments/klarna.svg"); +} + +.payment-provider-klarna-dark { + background-image: url("../img/payments/klarna-dark.svg"); +} + +.payment-provider-laser { + background-image: url("../img/payments/laser.svg"); +} + +.payment-provider-laser-dark { + background-image: url("../img/payments/laser-dark.svg"); +} + +.payment-provider-maestro { + background-image: url("../img/payments/maestro.svg"); +} + +.payment-provider-maestro-dark { + background-image: url("../img/payments/maestro-dark.svg"); +} + +.payment-provider-mastercard { + background-image: url("../img/payments/mastercard.svg"); +} + +.payment-provider-mastercard-dark { + background-image: url("../img/payments/mastercard-dark.svg"); +} + +.payment-provider-mir { + background-image: url("../img/payments/mir.svg"); +} + +.payment-provider-mir-dark { + background-image: url("../img/payments/mir-dark.svg"); +} + +.payment-provider-monero { + background-image: url("../img/payments/monero.svg"); +} + +.payment-provider-monero-dark { + background-image: url("../img/payments/monero-dark.svg"); +} + +.payment-provider-neteller { + background-image: url("../img/payments/neteller.svg"); +} + +.payment-provider-neteller-dark { + background-image: url("../img/payments/neteller-dark.svg"); +} + +.payment-provider-ogone { + background-image: url("../img/payments/ogone.svg"); +} + +.payment-provider-ogone-dark { + background-image: url("../img/payments/ogone-dark.svg"); +} + +.payment-provider-okpay { + background-image: url("../img/payments/okpay.svg"); +} + +.payment-provider-okpay-dark { + background-image: url("../img/payments/okpay-dark.svg"); +} + +.payment-provider-paybox { + background-image: url("../img/payments/paybox.svg"); +} + +.payment-provider-paybox-dark { + background-image: url("../img/payments/paybox-dark.svg"); +} + +.payment-provider-paymill { + background-image: url("../img/payments/paymill.svg"); +} + +.payment-provider-paymill-dark { + background-image: url("../img/payments/paymill-dark.svg"); +} + +.payment-provider-payone { + background-image: url("../img/payments/payone.svg"); +} + +.payment-provider-payone-dark { + background-image: url("../img/payments/payone-dark.svg"); +} + +.payment-provider-payoneer { + background-image: url("../img/payments/payoneer.svg"); +} + +.payment-provider-payoneer-dark { + background-image: url("../img/payments/payoneer-dark.svg"); +} + +.payment-provider-paypal { + background-image: url("../img/payments/paypal.svg"); +} + +.payment-provider-paypal-dark { + background-image: url("../img/payments/paypal-dark.svg"); +} + +.payment-provider-paysafecard { + background-image: url("../img/payments/paysafecard.svg"); +} + +.payment-provider-paysafecard-dark { + background-image: url("../img/payments/paysafecard-dark.svg"); +} + +.payment-provider-payu { + background-image: url("../img/payments/payu.svg"); +} + +.payment-provider-payu-dark { + background-image: url("../img/payments/payu-dark.svg"); +} + +.payment-provider-payza { + background-image: url("../img/payments/payza.svg"); +} + +.payment-provider-payza-dark { + background-image: url("../img/payments/payza-dark.svg"); +} + +.payment-provider-przelewy24 { + background-image: url("../img/payments/przelewy24.svg"); +} + +.payment-provider-przelewy24-dark { + background-image: url("../img/payments/przelewy24-dark.svg"); +} + +.payment-provider-ripple { + background-image: url("../img/payments/ripple.svg"); +} + +.payment-provider-ripple-dark { + background-image: url("../img/payments/ripple-dark.svg"); +} + +.payment-provider-sage { + background-image: url("../img/payments/sage.svg"); +} + +.payment-provider-sage-dark { + background-image: url("../img/payments/sage-dark.svg"); +} + +.payment-provider-sepa { + background-image: url("../img/payments/sepa.svg"); +} + +.payment-provider-sepa-dark { + background-image: url("../img/payments/sepa-dark.svg"); +} + +.payment-provider-shopify { + background-image: url("../img/payments/shopify.svg"); +} + +.payment-provider-shopify-dark { + background-image: url("../img/payments/shopify-dark.svg"); +} + +.payment-provider-skrill { + background-image: url("../img/payments/skrill.svg"); +} + +.payment-provider-skrill-dark { + background-image: url("../img/payments/skrill-dark.svg"); +} + +.payment-provider-solo { + background-image: url("../img/payments/solo.svg"); +} + +.payment-provider-solo-dark { + background-image: url("../img/payments/solo-dark.svg"); +} + +.payment-provider-square { + background-image: url("../img/payments/square.svg"); +} + +.payment-provider-square-dark { + background-image: url("../img/payments/square-dark.svg"); +} + +.payment-provider-stripe { + background-image: url("../img/payments/stripe.svg"); +} + +.payment-provider-stripe-dark { + background-image: url("../img/payments/stripe-dark.svg"); +} + +.payment-provider-switch { + background-image: url("../img/payments/switch.svg"); +} + +.payment-provider-switch-dark { + background-image: url("../img/payments/switch-dark.svg"); +} + +.payment-provider-tpay { + background-image: url("../img/payments/tpay.svg"); +} + +.payment-provider-tpay-dark { + background-image: url("../img/payments/tpay-dark.svg"); +} + +.payment-provider-ukash { + background-image: url("../img/payments/ukash.svg"); +} + +.payment-provider-ukash-dark { + background-image: url("../img/payments/ukash-dark.svg"); +} + +.payment-provider-unionpay { + background-image: url("../img/payments/unionpay.svg"); +} + +.payment-provider-unionpay-dark { + background-image: url("../img/payments/unionpay-dark.svg"); +} + +.payment-provider-verifone { + background-image: url("../img/payments/verifone.svg"); +} + +.payment-provider-verifone-dark { + background-image: url("../img/payments/verifone-dark.svg"); +} + +.payment-provider-verisign { + background-image: url("../img/payments/verisign.svg"); +} + +.payment-provider-verisign-dark { + background-image: url("../img/payments/verisign-dark.svg"); +} + +.payment-provider-visa { + background-image: url("../img/payments/visa.svg"); +} + +.payment-provider-visa-dark { + background-image: url("../img/payments/visa-dark.svg"); +} + +.payment-provider-webmoney { + background-image: url("../img/payments/webmoney.svg"); +} + +.payment-provider-webmoney-dark { + background-image: url("../img/payments/webmoney-dark.svg"); +} + +.payment-provider-westernunion { + background-image: url("../img/payments/westernunion.svg"); +} + +.payment-provider-westernunion-dark { + background-image: url("../img/payments/westernunion-dark.svg"); +} + +.payment-provider-worldpay { + background-image: url("../img/payments/worldpay.svg"); +} + +.payment-provider-worldpay-dark { + background-image: url("../img/payments/worldpay-dark.svg"); +} + +.payment-xxs { + height: 1rem; +} + +.payment-xs { + height: 1.25rem; +} + +.payment-sm { + height: 2rem; +} + +.payment-md { + height: 2.5rem; +} + +.payment-lg { + height: 3rem; +} + +.payment-xl { + height: 5rem; +} + +.payment-2xl { + height: 7rem; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-payments.rtl.min.css b/gin_ops/static/dist/css/tabler-payments.rtl.min.css new file mode 100644 index 0000000..59cd582 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-payments.rtl.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.payment{height:2.5rem;aspect-ratio:1.66666;display:inline-block;background:no-repeat center/100% 100%;vertical-align:bottom;font-style:normal;box-shadow:0 0 1px 1px rgba(0,0,0,.1);border-radius:2px}.payment-provider-2checkout{background-image:url(../img/payments/2checkout.svg)}.payment-provider-2checkout-dark{background-image:url(../img/payments/2checkout-dark.svg)}.payment-provider-alipay{background-image:url(../img/payments/alipay.svg)}.payment-provider-alipay-dark{background-image:url(../img/payments/alipay-dark.svg)}.payment-provider-amazon{background-image:url(../img/payments/amazon.svg)}.payment-provider-amazon-dark{background-image:url(../img/payments/amazon-dark.svg)}.payment-provider-americanexpress{background-image:url(../img/payments/americanexpress.svg)}.payment-provider-americanexpress-dark{background-image:url(../img/payments/americanexpress-dark.svg)}.payment-provider-applepay{background-image:url(../img/payments/applepay.svg)}.payment-provider-applepay-dark{background-image:url(../img/payments/applepay-dark.svg)}.payment-provider-bancontact{background-image:url(../img/payments/bancontact.svg)}.payment-provider-bancontact-dark{background-image:url(../img/payments/bancontact-dark.svg)}.payment-provider-bitcoin{background-image:url(../img/payments/bitcoin.svg)}.payment-provider-bitcoin-dark{background-image:url(../img/payments/bitcoin-dark.svg)}.payment-provider-bitpay{background-image:url(../img/payments/bitpay.svg)}.payment-provider-bitpay-dark{background-image:url(../img/payments/bitpay-dark.svg)}.payment-provider-blik{background-image:url(../img/payments/blik.svg)}.payment-provider-blik-dark{background-image:url(../img/payments/blik-dark.svg)}.payment-provider-cirrus{background-image:url(../img/payments/cirrus.svg)}.payment-provider-cirrus-dark{background-image:url(../img/payments/cirrus-dark.svg)}.payment-provider-clickandbuy{background-image:url(../img/payments/clickandbuy.svg)}.payment-provider-clickandbuy-dark{background-image:url(../img/payments/clickandbuy-dark.svg)}.payment-provider-coinkite{background-image:url(../img/payments/coinkite.svg)}.payment-provider-coinkite-dark{background-image:url(../img/payments/coinkite-dark.svg)}.payment-provider-dinersclub{background-image:url(../img/payments/dinersclub.svg)}.payment-provider-dinersclub-dark{background-image:url(../img/payments/dinersclub-dark.svg)}.payment-provider-directdebit{background-image:url(../img/payments/directdebit.svg)}.payment-provider-directdebit-dark{background-image:url(../img/payments/directdebit-dark.svg)}.payment-provider-discover{background-image:url(../img/payments/discover.svg)}.payment-provider-discover-dark{background-image:url(../img/payments/discover-dark.svg)}.payment-provider-dotpay{background-image:url(../img/payments/dotpay.svg)}.payment-provider-dotpay-dark{background-image:url(../img/payments/dotpay-dark.svg)}.payment-provider-dwolla{background-image:url(../img/payments/dwolla.svg)}.payment-provider-dwolla-dark{background-image:url(../img/payments/dwolla-dark.svg)}.payment-provider-ebay{background-image:url(../img/payments/ebay.svg)}.payment-provider-ebay-dark{background-image:url(../img/payments/ebay-dark.svg)}.payment-provider-epayco{background-image:url(../img/payments/epayco.svg)}.payment-provider-epayco-dark{background-image:url(../img/payments/epayco-dark.svg)}.payment-provider-eway{background-image:url(../img/payments/eway.svg)}.payment-provider-eway-dark{background-image:url(../img/payments/eway-dark.svg)}.payment-provider-giropay{background-image:url(../img/payments/giropay.svg)}.payment-provider-giropay-dark{background-image:url(../img/payments/giropay-dark.svg)}.payment-provider-googlewallet{background-image:url(../img/payments/googlewallet.svg)}.payment-provider-googlewallet-dark{background-image:url(../img/payments/googlewallet-dark.svg)}.payment-provider-ingenico{background-image:url(../img/payments/ingenico.svg)}.payment-provider-ingenico-dark{background-image:url(../img/payments/ingenico-dark.svg)}.payment-provider-jcb{background-image:url(../img/payments/jcb.svg)}.payment-provider-jcb-dark{background-image:url(../img/payments/jcb-dark.svg)}.payment-provider-klarna{background-image:url(../img/payments/klarna.svg)}.payment-provider-klarna-dark{background-image:url(../img/payments/klarna-dark.svg)}.payment-provider-laser{background-image:url(../img/payments/laser.svg)}.payment-provider-laser-dark{background-image:url(../img/payments/laser-dark.svg)}.payment-provider-maestro{background-image:url(../img/payments/maestro.svg)}.payment-provider-maestro-dark{background-image:url(../img/payments/maestro-dark.svg)}.payment-provider-mastercard{background-image:url(../img/payments/mastercard.svg)}.payment-provider-mastercard-dark{background-image:url(../img/payments/mastercard-dark.svg)}.payment-provider-mir{background-image:url(../img/payments/mir.svg)}.payment-provider-mir-dark{background-image:url(../img/payments/mir-dark.svg)}.payment-provider-monero{background-image:url(../img/payments/monero.svg)}.payment-provider-monero-dark{background-image:url(../img/payments/monero-dark.svg)}.payment-provider-neteller{background-image:url(../img/payments/neteller.svg)}.payment-provider-neteller-dark{background-image:url(../img/payments/neteller-dark.svg)}.payment-provider-ogone{background-image:url(../img/payments/ogone.svg)}.payment-provider-ogone-dark{background-image:url(../img/payments/ogone-dark.svg)}.payment-provider-okpay{background-image:url(../img/payments/okpay.svg)}.payment-provider-okpay-dark{background-image:url(../img/payments/okpay-dark.svg)}.payment-provider-paybox{background-image:url(../img/payments/paybox.svg)}.payment-provider-paybox-dark{background-image:url(../img/payments/paybox-dark.svg)}.payment-provider-paymill{background-image:url(../img/payments/paymill.svg)}.payment-provider-paymill-dark{background-image:url(../img/payments/paymill-dark.svg)}.payment-provider-payone{background-image:url(../img/payments/payone.svg)}.payment-provider-payone-dark{background-image:url(../img/payments/payone-dark.svg)}.payment-provider-payoneer{background-image:url(../img/payments/payoneer.svg)}.payment-provider-payoneer-dark{background-image:url(../img/payments/payoneer-dark.svg)}.payment-provider-paypal{background-image:url(../img/payments/paypal.svg)}.payment-provider-paypal-dark{background-image:url(../img/payments/paypal-dark.svg)}.payment-provider-paysafecard{background-image:url(../img/payments/paysafecard.svg)}.payment-provider-paysafecard-dark{background-image:url(../img/payments/paysafecard-dark.svg)}.payment-provider-payu{background-image:url(../img/payments/payu.svg)}.payment-provider-payu-dark{background-image:url(../img/payments/payu-dark.svg)}.payment-provider-payza{background-image:url(../img/payments/payza.svg)}.payment-provider-payza-dark{background-image:url(../img/payments/payza-dark.svg)}.payment-provider-przelewy24{background-image:url(../img/payments/przelewy24.svg)}.payment-provider-przelewy24-dark{background-image:url(../img/payments/przelewy24-dark.svg)}.payment-provider-ripple{background-image:url(../img/payments/ripple.svg)}.payment-provider-ripple-dark{background-image:url(../img/payments/ripple-dark.svg)}.payment-provider-sage{background-image:url(../img/payments/sage.svg)}.payment-provider-sage-dark{background-image:url(../img/payments/sage-dark.svg)}.payment-provider-sepa{background-image:url(../img/payments/sepa.svg)}.payment-provider-sepa-dark{background-image:url(../img/payments/sepa-dark.svg)}.payment-provider-shopify{background-image:url(../img/payments/shopify.svg)}.payment-provider-shopify-dark{background-image:url(../img/payments/shopify-dark.svg)}.payment-provider-skrill{background-image:url(../img/payments/skrill.svg)}.payment-provider-skrill-dark{background-image:url(../img/payments/skrill-dark.svg)}.payment-provider-solo{background-image:url(../img/payments/solo.svg)}.payment-provider-solo-dark{background-image:url(../img/payments/solo-dark.svg)}.payment-provider-square{background-image:url(../img/payments/square.svg)}.payment-provider-square-dark{background-image:url(../img/payments/square-dark.svg)}.payment-provider-stripe{background-image:url(../img/payments/stripe.svg)}.payment-provider-stripe-dark{background-image:url(../img/payments/stripe-dark.svg)}.payment-provider-switch{background-image:url(../img/payments/switch.svg)}.payment-provider-switch-dark{background-image:url(../img/payments/switch-dark.svg)}.payment-provider-tpay{background-image:url(../img/payments/tpay.svg)}.payment-provider-tpay-dark{background-image:url(../img/payments/tpay-dark.svg)}.payment-provider-ukash{background-image:url(../img/payments/ukash.svg)}.payment-provider-ukash-dark{background-image:url(../img/payments/ukash-dark.svg)}.payment-provider-unionpay{background-image:url(../img/payments/unionpay.svg)}.payment-provider-unionpay-dark{background-image:url(../img/payments/unionpay-dark.svg)}.payment-provider-verifone{background-image:url(../img/payments/verifone.svg)}.payment-provider-verifone-dark{background-image:url(../img/payments/verifone-dark.svg)}.payment-provider-verisign{background-image:url(../img/payments/verisign.svg)}.payment-provider-verisign-dark{background-image:url(../img/payments/verisign-dark.svg)}.payment-provider-visa{background-image:url(../img/payments/visa.svg)}.payment-provider-visa-dark{background-image:url(../img/payments/visa-dark.svg)}.payment-provider-webmoney{background-image:url(../img/payments/webmoney.svg)}.payment-provider-webmoney-dark{background-image:url(../img/payments/webmoney-dark.svg)}.payment-provider-westernunion{background-image:url(../img/payments/westernunion.svg)}.payment-provider-westernunion-dark{background-image:url(../img/payments/westernunion-dark.svg)}.payment-provider-worldpay{background-image:url(../img/payments/worldpay.svg)}.payment-provider-worldpay-dark{background-image:url(../img/payments/worldpay-dark.svg)}.payment-xxs{height:1rem}.payment-xs{height:1.25rem}.payment-sm{height:2rem}.payment-md{height:2.5rem}.payment-lg{height:3rem}.payment-xl{height:5rem}.payment-2xl{height:7rem} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-social.css b/gin_ops/static/dist/css/tabler-social.css new file mode 100644 index 0000000..fc8f231 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-social.css @@ -0,0 +1,10 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-social.min.css b/gin_ops/static/dist/css/tabler-social.min.css new file mode 100644 index 0000000..8147999 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-social.min.css @@ -0,0 +1,8 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ diff --git a/gin_ops/static/dist/css/tabler-social.rtl.css b/gin_ops/static/dist/css/tabler-social.rtl.css new file mode 100644 index 0000000..fc8f231 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-social.rtl.css @@ -0,0 +1,10 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-social.rtl.min.css b/gin_ops/static/dist/css/tabler-social.rtl.min.css new file mode 100644 index 0000000..8147999 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-social.rtl.min.css @@ -0,0 +1,8 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ diff --git a/gin_ops/static/dist/css/tabler-vendors.css b/gin_ops/static/dist/css/tabler-vendors.css new file mode 100644 index 0000000..8724fe0 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-vendors.css @@ -0,0 +1,1504 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + touch-action: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + box-sizing: border-box; +} + +.noUi-target { + position: relative; +} + +.noUi-base, +.noUi-connects { + width: 100%; + height: 100%; + position: relative; + z-index: 1; +} + +/* Wrapper for all connect elements. + */ +.noUi-connects { + overflow: hidden; + z-index: 0; +} + +.noUi-connect, +.noUi-origin { + will-change: transform; + position: absolute; + z-index: 1; + top: 0; + right: 0; + height: 100%; + width: 100%; + -ms-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -webkit-transform-style: preserve-3d; + transform-origin: 0 0; + transform-style: flat; +} + +/* Offset direction + */ +.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin { + left: 0; + right: auto; +} + +/* Give origins 0 height/width so they don't interfere with clicking the + * connect elements. + */ +.noUi-vertical .noUi-origin { + top: -100%; + width: 0; +} + +.noUi-horizontal .noUi-origin { + height: 0; +} + +.noUi-handle { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + position: absolute; +} + +.noUi-touch-area { + height: 100%; + width: 100%; +} + +.noUi-state-tap .noUi-connect, +.noUi-state-tap .noUi-origin { + transition: transform 0.3s; +} + +.noUi-state-drag * { + cursor: inherit !important; +} + +/* Slider size and handle placement; + */ +.noUi-horizontal { + height: 18px; +} + +.noUi-horizontal .noUi-handle { + width: 34px; + height: 28px; + right: -17px; + top: -6px; +} + +.noUi-vertical { + width: 18px; +} + +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + right: -6px; + bottom: -17px; +} + +.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { + left: -17px; + right: auto; +} + +/* Styling; + * Giving the connect element a border radius causes issues with using transform: scale + */ +.noUi-target { + background: #FAFAFA; + border-radius: 4px; + border: 1px solid #D3D3D3; + box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; +} + +.noUi-connects { + border-radius: 3px; +} + +.noUi-connect { + background: #3FB8AF; +} + +/* Handles and cursors; + */ +.noUi-draggable { + cursor: ew-resize; +} + +.noUi-vertical .noUi-draggable { + cursor: ns-resize; +} + +.noUi-handle { + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; +} + +.noUi-active { + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; +} + +/* Handle stripes; + */ +.noUi-handle:before, +.noUi-handle:after { + content: ""; + display: block; + position: absolute; + height: 14px; + width: 1px; + background: #E8E7E6; + left: 14px; + top: 6px; +} + +.noUi-handle:after { + left: 17px; +} + +.noUi-vertical .noUi-handle:before, +.noUi-vertical .noUi-handle:after { + width: 14px; + height: 1px; + left: 6px; + top: 14px; +} + +.noUi-vertical .noUi-handle:after { + top: 17px; +} + +/* Disabled state; + */ +[disabled] .noUi-connect { + background: #B8B8B8; +} + +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} + +/* Base; + * + */ +.noUi-pips, +.noUi-pips * { + box-sizing: border-box; +} + +.noUi-pips { + position: absolute; + color: #999; +} + +/* Values; + * + */ +.noUi-value { + position: absolute; + white-space: nowrap; + text-align: center; +} + +.noUi-value-sub { + color: #ccc; + font-size: 10px; +} + +/* Markings; + * + */ +.noUi-marker { + position: absolute; + background: #CCC; +} + +.noUi-marker-sub { + background: #AAA; +} + +.noUi-marker-large { + background: #AAA; +} + +/* Horizontal layout; + * + */ +.noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + left: 0; + width: 100%; +} + +.noUi-value-horizontal { + transform: translate(-50%, 50%); +} + +.noUi-rtl .noUi-value-horizontal { + transform: translate(50%, 50%); +} + +.noUi-marker-horizontal.noUi-marker { + margin-left: -1px; + width: 2px; + height: 5px; +} + +.noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} + +.noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} + +/* Vertical layout; + * + */ +.noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + left: 100%; +} + +.noUi-value-vertical { + transform: translate(0, -50%); + padding-left: 25px; +} + +.noUi-rtl .noUi-value-vertical { + transform: translate(0, 50%); +} + +.noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} + +.noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} + +.noUi-marker-vertical.noUi-marker-large { + width: 15px; +} + +.noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; + white-space: nowrap; +} + +.noUi-horizontal .noUi-tooltip { + transform: translate(-50%, 0); + left: 50%; + bottom: 120%; +} + +.noUi-vertical .noUi-tooltip { + transform: translate(0, -50%); + top: 50%; + right: 120%; +} + +.noUi-horizontal .noUi-origin > .noUi-tooltip { + transform: translate(50%, 0); + left: auto; + bottom: 10px; +} + +.noUi-vertical .noUi-origin > .noUi-tooltip { + transform: translate(0, -18px); + top: auto; + right: 28px; +} + +.noUi-target { + border: 0; + box-shadow: none; + background: none; + border-radius: 0; + color: var(--tblr-primary); +} + +.noUi-horizontal { + height: 1.25rem; + padding: 0.5rem 0; +} + +.noUi-base { + background: var(--tblr-border-color); + border-radius: 1rem; +} + +.noUi-handle { + width: 1rem; + height: 1rem; + border: 2px var(--tblr-border-style) #ffffff; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + border-radius: 1rem; + background: currentColor; + outline: 0; +} +.noUi-handle:before, .noUi-handle:after { + content: none; +} +.noUi-horizontal .noUi-handle { + width: 1rem; + height: 1rem; + top: -0.5rem; + right: -0.5rem; + margin: 1px 1px 0 0; +} +.noUi-handle.noUi-active, .noUi-handle:focus { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +.noUi-connect { + background: currentColor; +} + +.litepicker { + --litepicker-month-weekday-color: var(--tblr-secondary); + --litepicker-button-prev-month-color: var(--tblr-secondary); + --litepicker-button-next-month-color: var(--tblr-secondary); + --litepicker-button-prev-month-color-hover: var(--tblr-primary); + --litepicker-button-next-month-color-hover: var(--tblr-primary); + --litepicker-day-color: var(--tblr-body-color); + --litepicker-day-color-hover: var(--tblr-primary); + --litepicker-is-end-color-bg: var(--tblr-primary); + --litepicker-is-today-color: var(--tblr-primary); + --litepicker-month-header-color: var(--tblr-body-color); + --litepicker-container-months-color-bg: var(--tblr-bg-surface); + font: inherit; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.litepicker svg { + fill: none !important; +} +.litepicker .container__main { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: none; +} +.litepicker .container__months .month-item-name, +.litepicker .container__months .month-item-year { + font-weight: var(--tblr-font-weight-medium) !important; +} +.litepicker .container__months .button-next-month, +.litepicker .container__months .button-prev-month { + cursor: pointer !important; +} +.litepicker .container__months .month-item-weekdays-row > div { + padding: 0.5rem 0 !important; + font-size: 0.75rem; +} +.litepicker .container__days .day-item { + cursor: pointer !important; + padding: 0.5rem 0 !important; + transition: color 0.3s, background-color 0.3s, border-color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .litepicker .container__days .day-item { + transition: none; + } +} +.datepicker-inline .litepicker { + box-shadow: var(--tblr-box-shadow-input); +} +.datepicker-inline .litepicker .container__months { + box-shadow: none; + background-color: var(--tblr-bg-forms); +} + +/** + * Tom Select bootstrap 5 + */ +/** + * tom-select.css (v//@@version) + * Copyright (c) contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at: + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + */ +:root { + --ts-pr-clear-button: 0; + --ts-pr-caret: 0; + --ts-pr-min: .75rem; +} + +.ts-wrapper.single .ts-control, .ts-wrapper.single .ts-control input { + cursor: pointer; +} + +.ts-control { + padding-right: max(var(--ts-pr-min), var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important; +} + +.ts-wrapper.plugin-drag_drop.multi > .ts-control > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; +} +.ts-wrapper.plugin-drag_drop .ui-sortable-placeholder::after { + content: "!"; + visibility: hidden; +} +.ts-wrapper.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); +} + +.plugin-checkbox_options .option input { + margin-right: 0.5rem; +} + +.plugin-clear_button { + --ts-pr-clear-button: 1em; +} +.plugin-clear_button .clear-button { + opacity: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: calc(0.75rem - 5px); + margin-right: 0 !important; + background: transparent !important; + transition: opacity 0.5s; + cursor: pointer; +} +.plugin-clear_button.form-select .clear-button, .plugin-clear_button.single .clear-button { + right: max( var(--ts-pr-caret), 0.75rem); +} +.plugin-clear_button.focus.has-items .clear-button, .plugin-clear_button:not(.disabled):hover.has-items .clear-button { + opacity: 1; +} + +.ts-wrapper .dropdown-header { + position: relative; + padding: 6px 0.75rem; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: var(--tblr-border-radius) var(--tblr-border-radius) 0 0; +} +.ts-wrapper .dropdown-header-close { + position: absolute; + right: 0.75rem; + top: 50%; + color: #182433; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; +} +.ts-wrapper .dropdown-header-close:hover { + color: black; +} + +.plugin-dropdown_input.focus.dropdown-active .ts-control { + box-shadow: none; + border: 1px solid var(--tblr-border-color); + box-shadow: var(--tblr-box-shadow-input); +} +.plugin-dropdown_input .dropdown-input { + border: 1px solid #d0d0d0; + border-width: 0 0 1px 0; + display: block; + padding: 0.5625rem 0.75rem; + box-shadow: none; + width: 100%; + background: transparent; +} +.plugin-dropdown_input.focus .ts-dropdown .dropdown-input { + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.plugin-dropdown_input .items-placeholder { + border: 0 none !important; + box-shadow: none !important; + width: 100%; +} +.plugin-dropdown_input.has-items .items-placeholder, .plugin-dropdown_input.dropdown-active .items-placeholder { + display: none !important; +} + +.ts-wrapper.plugin-input_autogrow.has-items .ts-control > input { + min-width: 0; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input { + flex: none; + min-width: 4px; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::-webkit-input-placeholder { + color: transparent; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input:-ms-input-placeholder { + color: transparent; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::-ms-input-placeholder { + color: transparent; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::placeholder { + color: transparent; +} + +.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content { + display: flex; +} +.ts-dropdown.plugin-optgroup_columns .optgroup { + border-right: 1px solid #f2f2f2; + border-top: 0 none; + flex-grow: 1; + flex-basis: 0; + min-width: 0; +} +.ts-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-right: 0 none; +} +.ts-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; +} +.ts-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; +} + +.ts-wrapper.plugin-remove_button .item { + display: inline-flex; + align-items: center; + padding-right: 0 !important; +} +.ts-wrapper.plugin-remove_button .item .remove { + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 0 5px; + border-radius: 0 2px 2px 0; + box-sizing: border-box; +} +.ts-wrapper.plugin-remove_button .item .remove:hover { + background: rgba(0, 0, 0, 0.05); +} +.ts-wrapper.plugin-remove_button.disabled .item .remove:hover { + background: none; +} +.ts-wrapper.plugin-remove_button .remove-single { + position: absolute; + right: 0; + top: 0; + font-size: 23px; +} + +.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove { + border-left: 1px solid #dadfe5; + margin-left: 5px; +} +.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove { + border-left-color: rgba(0, 0, 0, 0); +} +.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove { + border-left-color: white; +} + +.ts-wrapper.plugin-remove_button.rtl .item .remove { + border-right: 1px solid #dadfe5; + margin-right: 5px; +} +.ts-wrapper.plugin-remove_button.rtl .item.active .remove { + border-right-color: rgba(0, 0, 0, 0); +} +.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove { + border-right-color: white; +} + +.ts-wrapper { + position: relative; +} + +.ts-dropdown, +.ts-control, +.ts-control input { + color: #182433; + font-family: inherit; + font-size: inherit; + line-height: 1.4285714286; + font-smoothing: inherit; +} + +.ts-control, +.ts-wrapper.single.input-active .ts-control { + background: var(--tblr-bg-forms); + cursor: text; +} + +.ts-control { + border: 1px solid var(--tblr-border-color); + padding: 0.5625rem 0.75rem; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + box-shadow: none; + border-radius: var(--tblr-border-radius); + display: flex; + flex-wrap: wrap; +} +.ts-wrapper.multi.has-items .ts-control { + padding: calc( 0.5625rem - 1px - 0px) 0.75rem calc( 0.5625rem - 1px - 3px - 0px); +} +.full .ts-control { + background-color: var(--tblr-bg-forms); +} +.disabled .ts-control, .disabled .ts-control * { + cursor: default !important; +} +.focus .ts-control { + box-shadow: none; +} +.ts-control > * { + vertical-align: baseline; + display: inline-block; +} +.ts-wrapper.multi .ts-control > div { + cursor: pointer; + margin: 0 3px 3px 0; + padding: 1px 5px; + background: #efefef; + color: #182433; + border: 0px solid #dadfe5; +} +.ts-wrapper.multi .ts-control > div.active { + background: #0054a6; + color: #fff; + border: 0px solid rgba(0, 0, 0, 0); +} +.ts-wrapper.multi.disabled .ts-control > div, .ts-wrapper.multi.disabled .ts-control > div.active { + color: #727272; + background: white; + border: 0px solid white; +} +.ts-control > input { + flex: 1 1 auto; + min-width: 7rem; + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; + box-shadow: none !important; +} +.ts-control > input::-ms-clear { + display: none; +} +.ts-control > input:focus { + outline: none !important; +} +.has-items .ts-control > input { + margin: 0px 4px !important; +} +.ts-control.rtl { + text-align: right; +} +.ts-control.rtl.single .ts-control:after { + left: calc(0.75rem + 5px); + right: auto; +} +.ts-control.rtl .ts-control > input { + margin: 0px 4px 0px -2px !important; +} +.disabled .ts-control { + opacity: 0.5; + background-color: var(--tblr-bg-surface-secondary); +} +.input-hidden .ts-control > input { + opacity: 0; + position: absolute; + left: -10000px; +} + +.ts-dropdown { + position: absolute; + top: 100%; + left: 0; + width: 100%; + z-index: 10; + border: 1px solid #d0d0d0; + background: #fff; + margin: 0.25rem 0 0 0; + border-top: 0 none; + box-sizing: border-box; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius); +} +.ts-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; +} +.ts-dropdown [data-selectable] .highlight { + background: rgba(255, 237, 40, 0.4); + border-radius: 1px; +} +.ts-dropdown .option, +.ts-dropdown .optgroup-header, +.ts-dropdown .no-results, +.ts-dropdown .create { + padding: 3px 0.75rem; +} +.ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option { + cursor: inherit; + opacity: 0.5; +} +.ts-dropdown [data-selectable].option { + opacity: 1; + cursor: pointer; +} +.ts-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; +} +.ts-dropdown .optgroup-header { + color: #667382; + background: var(--tblr-bg-surface); + cursor: default; +} +.ts-dropdown .active { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); + color: inherit; +} +.ts-dropdown .active.create { + color: inherit; +} +.ts-dropdown .create { + color: rgba(24, 36, 51, 0.5); +} +.ts-dropdown .spinner { + display: inline-block; + width: 30px; + height: 30px; + margin: 3px 0.75rem; +} +.ts-dropdown .spinner:after { + content: " "; + display: block; + width: 24px; + height: 24px; + margin: 3px; + border-radius: 50%; + border: 5px solid #d0d0d0; + border-color: #d0d0d0 transparent #d0d0d0 transparent; + animation: lds-dual-ring 1.2s linear infinite; +} +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.ts-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + overflow-scrolling: touch; + scroll-behavior: smooth; +} + +.ts-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; +} + +.ts-wrapper.form-control, +.ts-wrapper.form-select { + padding: 0 !important; + height: auto; + box-shadow: none; + display: flex; +} + +.ts-dropdown, +.ts-dropdown.form-control, +.ts-dropdown.form-select { + height: auto; + padding: 0; + z-index: 1000; + background: #fff; + border: 1px solid var(--tblr-border-color-translucent); + border-radius: 4px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} + +.ts-dropdown .optgroup-header { + font-size: 0.765625rem; + line-height: 1.4285714286; +} +.ts-dropdown .optgroup:first-child:before { + display: none; +} +.ts-dropdown .optgroup:before { + content: " "; + display: block; + height: 0; + margin: var(--tblr-spacer) 0; + overflow: hidden; + border-top: 1px solid var(--tblr-border-color-translucent); + margin-left: -0.75rem; + margin-right: -0.75rem; +} +.ts-dropdown .create { + padding-left: 0.75rem; +} + +.ts-dropdown-content { + padding: 5px 0; +} + +.ts-control { + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + display: flex; + align-items: center; +} +@media (prefers-reduced-motion: reduce) { + .ts-control { + transition: none; + } +} +.ts-control.dropdown -active { + border-radius: var(--tblr-border-radius); +} +.focus .ts-control { + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.ts-control .item { + display: flex; + align-items: center; +} + +.ts-wrapper.is-invalid, +.was-validated .invalid, +.was-validated :invalid + .ts-wrapper { + border-color: var(--tblr-form-invalid-color); +} +.ts-wrapper.is-invalid:not(.single), +.was-validated .invalid:not(.single), +.was-validated :invalid + .ts-wrapper:not(.single) { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-position: right calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-invalid.single, +.was-validated .invalid.single, +.was-validated :invalid + .ts-wrapper.single { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-invalid.focus .ts-control, +.was-validated .invalid.focus .ts-control, +.was-validated :invalid + .ts-wrapper.focus .ts-control { + border-color: var(--tblr-form-invalid-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-form-invalid-color), 0.25); +} + +.ts-wrapper.is-valid, +.was-validated .valid, +.was-validated :valid + .ts-wrapper { + border-color: var(--tblr-form-valid-color); +} +.ts-wrapper.is-valid:not(.single), +.was-validated .valid:not(.single), +.was-validated :valid + .ts-wrapper:not(.single) { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-position: right calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-valid.single, +.was-validated .valid.single, +.was-validated :valid + .ts-wrapper.single { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-valid.focus .ts-control, +.was-validated .valid.focus .ts-control, +.was-validated :valid + .ts-wrapper.focus .ts-control { + border-color: var(--tblr-form-valid-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-form-valid-color), 0.25); +} + +.ts-wrapper { + min-height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + display: flex; +} +.input-group-sm > .ts-wrapper, .ts-wrapper.form-select-sm, .ts-wrapper.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +.input-group-sm > .ts-wrapper .ts-control, .ts-wrapper.form-select-sm .ts-control, .ts-wrapper.form-control-sm .ts-control { + border-radius: var(--tblr-border-radius-sm); + font-size: 0.75rem; +} +.input-group-sm > .ts-wrapper.has-items .ts-control, .ts-wrapper.form-select-sm.has-items .ts-control, .ts-wrapper.form-control-sm.has-items .ts-control { + font-size: 0.75rem; + padding-bottom: 0; +} +.input-group-sm > .ts-wrapper.multi.has-items .ts-control, .ts-wrapper.form-select-sm.multi.has-items .ts-control, .ts-wrapper.form-control-sm.multi.has-items .ts-control { + padding-top: calc((calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)) - (1.4285714286 * 0.75rem) - 4px) / 2) !important; +} +.ts-wrapper.multi.has-items .ts-control { + padding-left: calc(0.75rem - 5px); + --ts-pr-min: calc(0.75rem - 5px); +} +.ts-wrapper.multi .ts-control > div { + border-radius: calc(var(--tblr-border-radius) - 1px); +} +.input-group-lg > .ts-wrapper, .ts-wrapper.form-control-lg, .ts-wrapper.form-select-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} +.input-group-lg > .ts-wrapper .ts-control, .ts-wrapper.form-control-lg .ts-control, .ts-wrapper.form-select-lg .ts-control { + border-radius: var(--tblr-border-radius-lg); + font-size: 1.25rem; +} + +.ts-wrapper:not(.form-control):not(.form-select) { + padding: 0; + border: none; + height: auto; + box-shadow: none; + background: none; +} +.ts-wrapper:not(.form-control):not(.form-select).single .ts-control { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; +} +.ts-wrapper.form-select, .ts-wrapper.single { + --ts-pr-caret: 2.25rem; +} + +.ts-wrapper.form-control .ts-control, .ts-wrapper.form-control.single.input-active .ts-control, +.ts-wrapper.form-select .ts-control, +.ts-wrapper.form-select.single.input-active .ts-control { + border: none !important; +} +.ts-wrapper.form-control:not(.disabled) .ts-control, .ts-wrapper.form-control:not(.disabled).single.input-active .ts-control, +.ts-wrapper.form-select:not(.disabled) .ts-control, +.ts-wrapper.form-select:not(.disabled).single.input-active .ts-control { + background: transparent !important; +} + +.input-group > .ts-wrapper { + flex-grow: 1; +} +.input-group > .ts-wrapper:not(:nth-child(2)) > .ts-control { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .ts-wrapper:not(:last-child) > .ts-control { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +:root { + --ts-pr-clear-button: 0rem; + --ts-pr-caret: 0rem; +} + +.ts-input { + color: inherit; +} + +.ts-control { + color: inherit; +} +.ts-control .dropdown-menu { + width: 100%; + height: auto; +} + +.ts-wrapper .form-control, +.ts-wrapper .form-select, .ts-wrapper.form-control, .ts-wrapper.form-select { + box-shadow: var(--tblr-box-shadow-input); +} +.ts-wrapper.is-invalid .ts-control, .ts-wrapper.is-valid .ts-control { + --ts-pr-clear-button: 1.5rem; +} + +.ts-dropdown { + background: var(--tblr-bg-surface); + color: var(--tblr-body-color); + box-shadow: var(--tblr-box-shadow-dropdown); +} +.ts-dropdown .option { + padding: 0.5rem 0.75rem; +} + +.ts-control, +.ts-control input { + color: var(--tblr-body-color); +} + +.ts-control input::-webkit-input-placeholder { + color: #929dab; +} + +.ts-control input:-ms-input-placeholder { + color: #929dab; +} + +.ts-control input::-ms-input-placeholder { + color: #929dab; +} + +.ts-control input::placeholder { + color: #929dab; +} + +.ts-wrapper.multi .ts-control > div { + background: var(--tblr-bg-surface-secondary); + border: 1px solid var(--tblr-border-color); + color: var(--tblr-body-color); +} + +.apexcharts-tooltip { + color: var(--tblr-light) !important; + background: var(--tblr-bg-surface-dark) !important; + font-size: 0.765625rem !important; + padding: 0.25rem !important; + box-shadow: none !important; +} + +.apexcharts-tooltip-title { + background: transparent !important; + border: 0 !important; + margin: 0 !important; + font-weight: var(--tblr-font-weight-bold); + padding: 0.25rem 0.5rem !important; +} + +.apexcharts-tooltip-y-group { + padding: 2px 0 !important; +} + +.apexcharts-tooltip-series-group { + padding: 0 0.5rem 0 !important; +} + +.apexcharts-tooltip-marker { + width: 10px !important; + height: 10px !important; +} + +.apexcharts-text { + fill: var(--tblr-body-color) !important; +} + +.apexcharts-gridline { + stroke: var(--tblr-border-color) !important; +} + +.apexcharts-legend-text { + color: inherit !important; +} + +.apexcharts-radialbar-area { + stroke: var(--tblr-border-color-dark) !important; +} + +svg { + touch-action: none; +} + +image, text, .jvm-zoomin, .jvm-zoomout { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jvm-container { + touch-action: none; + position: relative; + overflow: hidden; + height: 100%; + width: 100%; +} + +.jvm-tooltip { + border-radius: 3px; + background-color: #5c5cff; + font-family: sans-serif, Verdana; + font-size: smaller; + box-shadow: 1px 2px 12px rgba(0, 0, 0, 0.2); + padding: 3px 5px; + white-space: nowrap; + position: absolute; + display: none; + color: #FFF; +} + +.jvm-tooltip.active { + display: block; +} + +.jvm-zoom-btn { + border-radius: 3px; + background-color: #292929; + padding: 3px; + box-sizing: border-box; + position: absolute; + line-height: 10px; + cursor: pointer; + color: #FFF; + height: 15px; + width: 15px; + left: 10px; +} + +.jvm-zoom-btn.jvm-zoomout { + top: 30px; +} + +.jvm-zoom-btn.jvm-zoomin { + top: 10px; +} + +.jvm-series-container { + right: 15px; + position: absolute; +} + +.jvm-series-container.jvm-series-h { + bottom: 15px; +} + +.jvm-series-container.jvm-series-v { + top: 15px; +} + +.jvm-series-container .jvm-legend { + background-color: #FFF; + border: 1px solid #e5e7eb; + margin-left: 0.75rem; + border-radius: 0.25rem; + border-color: #e5e7eb; + padding: 0.6rem; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + float: left; +} + +.jvm-series-container .jvm-legend .jvm-legend-title { + line-height: 1; + border-bottom: 1px solid #e5e7eb; + padding-bottom: 0.5rem; + margin-bottom: 0.575rem; + text-align: left; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner { + overflow: hidden; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick { + overflow: hidden; + min-width: 40px; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick:not(:first-child) { + margin-top: 0.575rem; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample { + border-radius: 4px; + margin-right: 0.65rem; + height: 16px; + width: 16px; + float: left; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-text { + font-size: 12px; + text-align: center; + float: left; +} + +.jvm-line[animation=true] { + animation: jvm-line-animation 10s linear forwards infinite; +} +@keyframes jvm-line-animation { + from { + stroke-dashoffset: 250; + } +} +.jvm-tooltip { + background: #182433; + font-family: inherit; + font-size: 0.75rem; + box-shadow: var(--tblr-shadow-card); +} + +.jvm-series-container .jvm-legend .jvm-legend-title { + border-bottom: 0; + font-weight: var(--tblr-font-weight-medium); +} + +.jvm-series-container .jvm-legend { + background-color: var(--tblr-card-bg, var(--tblr-bg-surface)); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + min-width: 8rem; +} +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick { + display: flex; + align-items: center; +} +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample { + width: 0.75rem; + height: 0.75rem; +} + +.jvm-zoom-btn { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + color: var(--tblr-body-color); + padding: 0; + display: flex; + align-items: center; + justify-content: center; + line-height: 1; + width: 1.5rem; + height: 1.5rem; + font-size: 1rem; + box-shadow: var(--tblr-shadow-card); +} +.jvm-zoom-btn.jvm-zoomout { + top: 2.5rem; +} + +.dropzone { + border: var(--tblr-border-width) dashed var(--tblr-border-color); + color: var(--tblr-secondary); + padding: 1rem; +} +.dropzone.dz-drag-hover { + border: var(--tblr-border-width) dashed var(--tblr-primary); + background: rgba(var(--tblr-primary-rgb), 0.01); + color: var(--tblr-primary); +} +.dropzone.dz-drag-hover .dz-message { + opacity: 1; +} +.dropzone .dz-preview { + margin: 0.5rem; +} +.dropzone .dz-preview .dz-image { + border-radius: var(--tblr-border-radius); +} +.dropzone .dz-preview .dz-success-mark { + height: 54px; +} + +.fslightbox-container { + font-family: inherit !important; + background: rgba(24, 36, 51, 0.24) !important; + -webkit-backdrop-filter: blur(4px) !important; + backdrop-filter: blur(4px) !important; +} + +.fslightbox-slide-number-container { + color: inherit !important; +} + +.fslightbox-slash { + background: currentColor !important; +} + +body { + --plyr-color-main: var(--tblr-primary); +} + +.tox-tinymce { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + border-radius: 4px !important; + font-family: var(--tblr-font-sans-serif) !important; +} + +.tox-toolbar__group { + padding: 0 0.5rem 0; +} + +.tox .tox-toolbar__primary { + background: transparent !important; +} + +.tox:not(.tox-tinymce-inline) .tox-editor-header { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + box-shadow: none !important; + padding: 0 !important; +} + +.tox-tbtn { + margin: 0 !important; +} + +.tox-statusbar { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; +} + +.tox .tox-toolbar-overlord, +.tox:not(.tox-tinymce-inline) .tox-editor-header { + background: transparent !important; +} + +:root { + --gl-star-size: auto; + --gl-star-color: var(--tblr-yellow); + --gl-star-color-inactive: var(--tblr-border-color); +} + +[data-star-rating] svg { + width: var(--tblr-icon-size, --gl-star-size); + height: var(--tblr-icon-size, --gl-star-size); +} +[data-star-rating] :not(.gl-active) > .gl-star-full { + color: var(--gl-star-color-inactive) !important; +} +[data-star-rating] .gl-active > .gl-star-full { + color: var(--gl-star-color); +} + +.clr-picker { + box-shadow: var(--tblr-box-shadow-dropdown); + background-color: var(--tblr-bg-surface); +} + +input.clr-color { + border-radius: var(--tblr-border-radius); + color: var(--tblr-body-color); + border-color: var(--tblr-border-color); + background: transparent; +} +input.clr-color:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + border-color: rgba(var(--tblr-primary-rgb), 0.25); +} + +.clr-swatches button { + border-radius: var(--tblr-border-radius); + padding: 0 2px 4px 2px; +} +.clr-swatches button:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +.clr-preview { + border-radius: var(--tblr-border-radius); + overflow: visible; +} +.clr-preview button, .clr-preview:before, .clr-preview:after { + border-radius: var(--tblr-border-radius); +} +.clr-preview button:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +.clr-field { + display: block; +} +.clr-field button { + width: 1.5rem; + height: 1.5rem; + left: 6px; + right: auto; + border-radius: var(--tblr-border-radius); +} +.clr-field button:after { + box-shadow: inset 0 0 0 1px var(--tblr-border-color-translucent); +} +.clr-field button:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.clr-field input { + padding-left: 2.5rem; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-vendors.min.css b/gin_ops/static/dist/css/tabler-vendors.min.css new file mode 100644 index 0000000..0a750c2 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-vendors.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;height:100%;width:100%;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{left:0;right:auto}.noUi-vertical .noUi-origin{top:-100%;width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;right:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;right:-6px;bottom:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{left:-17px;right:auto}.noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #bbb}.noUi-connects{border-radius:3px}.noUi-connect{background:#3fb8af}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#fff;cursor:default;box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ebebeb,0 3px 6px -3px #bbb}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#b8b8b8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#ccc}.noUi-marker-sub{background:#aaa}.noUi-marker-large{background:#aaa}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{transform:translate(0,-50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{transform:translate(0,-50%);top:50%;right:120%}.noUi-horizontal .noUi-origin>.noUi-tooltip{transform:translate(50%,0);left:auto;bottom:10px}.noUi-vertical .noUi-origin>.noUi-tooltip{transform:translate(0,-18px);top:auto;right:28px}.noUi-target{border:0;box-shadow:none;background:0 0;border-radius:0;color:var(--tblr-primary)}.noUi-horizontal{height:1.25rem;padding:.5rem 0}.noUi-base{background:var(--tblr-border-color);border-radius:1rem}.noUi-handle{width:1rem;height:1rem;border:2px var(--tblr-border-style) #fff;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);border-radius:1rem;background:currentColor;outline:0}.noUi-handle:after,.noUi-handle:before{content:none}.noUi-horizontal .noUi-handle{width:1rem;height:1rem;top:-.5rem;right:-.5rem;margin:1px 1px 0 0}.noUi-handle.noUi-active,.noUi-handle:focus{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.noUi-connect{background:currentColor}.litepicker{--litepicker-month-weekday-color:var(--tblr-secondary);--litepicker-button-prev-month-color:var(--tblr-secondary);--litepicker-button-next-month-color:var(--tblr-secondary);--litepicker-button-prev-month-color-hover:var(--tblr-primary);--litepicker-button-next-month-color-hover:var(--tblr-primary);--litepicker-day-color:var(--tblr-body-color);--litepicker-day-color-hover:var(--tblr-primary);--litepicker-is-end-color-bg:var(--tblr-primary);--litepicker-is-today-color:var(--tblr-primary);--litepicker-month-header-color:var(--tblr-body-color);--litepicker-container-months-color-bg:var(--tblr-bg-surface);font:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.litepicker svg{fill:none!important}.litepicker .container__main{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:none}.litepicker .container__months .month-item-name,.litepicker .container__months .month-item-year{font-weight:var(--tblr-font-weight-medium)!important}.litepicker .container__months .button-next-month,.litepicker .container__months .button-prev-month{cursor:pointer!important}.litepicker .container__months .month-item-weekdays-row>div{padding:.5rem 0!important;font-size:.75rem}.litepicker .container__days .day-item{cursor:pointer!important;padding:.5rem 0!important;transition:color .3s,background-color .3s,border-color .3s}@media (prefers-reduced-motion:reduce){.litepicker .container__days .day-item{transition:none}}.datepicker-inline .litepicker{box-shadow:var(--tblr-box-shadow-input)}.datepicker-inline .litepicker .container__months{box-shadow:none;background-color:var(--tblr-bg-forms)}:root{--ts-pr-clear-button:0;--ts-pr-caret:0;--ts-pr-min:.75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control{padding-right:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper.plugin-drag_drop.multi>.ts-control>div.ui-sortable-placeholder{visibility:visible!important;background:#f2f2f2!important;background:rgba(0,0,0,.06)!important;border:0 none!important;box-shadow:inset 0 0 12px 4px #fff}.ts-wrapper.plugin-drag_drop .ui-sortable-placeholder::after{content:"!";visibility:hidden}.ts-wrapper.plugin-drag_drop .ui-sortable-helper{box-shadow:0 2px 5px rgba(0,0,0,.2)}.plugin-checkbox_options .option input{margin-right:.5rem}.plugin-clear_button{--ts-pr-clear-button:1em}.plugin-clear_button .clear-button{opacity:0;position:absolute;top:50%;transform:translateY(-50%);right:calc(.75rem - 5px);margin-right:0!important;background:0 0!important;transition:opacity .5s;cursor:pointer}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{right:max(var(--ts-pr-caret),.75rem)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{position:relative;padding:6px .75rem;border-bottom:1px solid #d0d0d0;background:#f8f8f8;border-radius:var(--tblr-border-radius) var(--tblr-border-radius) 0 0}.ts-wrapper .dropdown-header-close{position:absolute;right:.75rem;top:50%;color:#182433;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input.focus.dropdown-active .ts-control{box-shadow:none;border:1px solid var(--tblr-border-color);box-shadow:var(--tblr-box-shadow-input)}.plugin-dropdown_input .dropdown-input{border:1px solid #d0d0d0;border-width:0 0 1px 0;display:block;padding:.5625rem .75rem;box-shadow:none;width:100%;background:0 0}.plugin-dropdown_input.focus .ts-dropdown .dropdown-input{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.plugin-dropdown_input .items-placeholder{border:0 none!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.dropdown-active .items-placeholder,.plugin-dropdown_input.has-items .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-webkit-input-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input:-ms-input-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-ms-input-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.ts-wrapper.plugin-remove_button .item{display:inline-flex;align-items:center;padding-right:0!important}.ts-wrapper.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:0 5px;border-radius:0 2px 2px 0;box-sizing:border-box}.ts-wrapper.plugin-remove_button .item .remove:hover{background:rgba(0,0,0,.05)}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:0 0}.ts-wrapper.plugin-remove_button .remove-single{position:absolute;right:0;top:0;font-size:23px}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-left:1px solid #dadfe5;margin-left:5px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-left-color:transparent}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-left-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-right:1px solid #dadfe5;margin-right:5px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-right-color:transparent}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-right-color:#fff}.ts-wrapper{position:relative}.ts-control,.ts-control input,.ts-dropdown{color:#182433;font-family:inherit;font-size:inherit;line-height:1.4285714286;font-smoothing:inherit}.ts-control,.ts-wrapper.single.input-active .ts-control{background:var(--tblr-bg-forms);cursor:text}.ts-control{border:1px solid var(--tblr-border-color);padding:.5625rem .75rem;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:var(--tblr-border-radius);display:flex;flex-wrap:wrap}.ts-wrapper.multi.has-items .ts-control{padding:calc(.5625rem - 1px - 0px) .75rem calc(.5625rem - 1px - 3px - 0px)}.full .ts-control{background-color:var(--tblr-bg-forms)}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{vertical-align:baseline;display:inline-block}.ts-wrapper.multi .ts-control>div{cursor:pointer;margin:0 3px 3px 0;padding:1px 5px;background:#efefef;color:#182433;border:0 solid #dadfe5}.ts-wrapper.multi .ts-control>div.active{background:#0054a6;color:#fff;border:0 solid transparent}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{color:#727272;background:#fff;border:0 solid #fff}.ts-control>input{flex:1 1 auto;min-width:7rem;display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0!important;text-indent:0!important;border:0 none!important;background:0 0!important;line-height:inherit!important;-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important;box-shadow:none!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:0!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:right}.ts-control.rtl.single .ts-control:after{left:calc(.75rem + 5px);right:auto}.ts-control.rtl .ts-control>input{margin:0 4px 0 -2px!important}.disabled .ts-control{opacity:.5;background-color:var(--tblr-bg-surface-secondary)}.input-hidden .ts-control>input{opacity:0;position:absolute;left:-10000px}.ts-dropdown{position:absolute;top:100%;left:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:#fff;margin:.25rem 0 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:rgba(255,237,40,.4);border-radius:1px}.ts-dropdown .create,.ts-dropdown .no-results,.ts-dropdown .optgroup-header,.ts-dropdown .option{padding:3px .75rem}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{opacity:1;cursor:pointer}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.ts-dropdown .optgroup-header{color:#667382;background:var(--tblr-bg-surface);cursor:default}.ts-dropdown .active{background-color:rgba(var(--tblr-text-secondary-rgb),.04);color:inherit}.ts-dropdown .active.create{color:inherit}.ts-dropdown .create{color:rgba(24,36,51,.5)}.ts-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:3px .75rem}.ts-dropdown .spinner:after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 transparent #d0d0d0 transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ts-dropdown-content{overflow-y:auto;overflow-x:hidden;max-height:200px;overflow-scrolling:touch;scroll-behavior:smooth}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.ts-wrapper.form-control,.ts-wrapper.form-select{padding:0!important;height:auto;box-shadow:none;display:flex}.ts-dropdown,.ts-dropdown.form-control,.ts-dropdown.form-select{height:auto;padding:0;z-index:1000;background:#fff;border:1px solid var(--tblr-border-color-translucent);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.ts-dropdown .optgroup-header{font-size:.765625rem;line-height:1.4285714286}.ts-dropdown .optgroup:first-child:before{display:none}.ts-dropdown .optgroup:before{content:" ";display:block;height:0;margin:var(--tblr-spacer) 0;overflow:hidden;border-top:1px solid var(--tblr-border-color-translucent);margin-left:-.75rem;margin-right:-.75rem}.ts-dropdown .create{padding-left:.75rem}.ts-dropdown-content{padding:5px 0}.ts-control{box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex;align-items:center}@media (prefers-reduced-motion:reduce){.ts-control{transition:none}}.ts-control.dropdown -active{border-radius:var(--tblr-border-radius)}.focus .ts-control{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.ts-control .item{display:flex;align-items:center}.ts-wrapper.is-invalid,.was-validated .invalid,.was-validated :invalid+.ts-wrapper{border-color:var(--tblr-form-invalid-color)}.ts-wrapper.is-invalid:not(.single),.was-validated .invalid:not(.single),.was-validated :invalid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:right calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-invalid.single,.was-validated .invalid.single,.was-validated :invalid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-invalid.focus .ts-control,.was-validated .invalid.focus .ts-control,.was-validated :invalid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-invalid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-invalid-color),.25)}.ts-wrapper.is-valid,.was-validated .valid,.was-validated :valid+.ts-wrapper{border-color:var(--tblr-form-valid-color)}.ts-wrapper.is-valid:not(.single),.was-validated .valid:not(.single),.was-validated :valid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:right calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-valid.single,.was-validated .valid.single,.was-validated :valid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-valid.focus .ts-control,.was-validated .valid.focus .ts-control,.was-validated :valid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-valid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-valid-color),.25)}.ts-wrapper{min-height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));display:flex}.input-group-sm>.ts-wrapper,.ts-wrapper.form-control-sm,.ts-wrapper.form-select-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}.input-group-sm>.ts-wrapper .ts-control,.ts-wrapper.form-control-sm .ts-control,.ts-wrapper.form-select-sm .ts-control{border-radius:var(--tblr-border-radius-sm);font-size:.75rem}.input-group-sm>.ts-wrapper.has-items .ts-control,.ts-wrapper.form-control-sm.has-items .ts-control,.ts-wrapper.form-select-sm.has-items .ts-control{font-size:.75rem;padding-bottom:0}.input-group-sm>.ts-wrapper.multi.has-items .ts-control,.ts-wrapper.form-control-sm.multi.has-items .ts-control,.ts-wrapper.form-select-sm.multi.has-items .ts-control{padding-top:calc((calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2)) - (1.4285714286 * .75rem) - 4px)/ 2)!important}.ts-wrapper.multi.has-items .ts-control{padding-left:calc(.75rem - 5px);--ts-pr-min:calc(0.75rem - 5px)}.ts-wrapper.multi .ts-control>div{border-radius:calc(var(--tblr-border-radius) - 1px)}.input-group-lg>.ts-wrapper,.ts-wrapper.form-control-lg,.ts-wrapper.form-select-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.input-group-lg>.ts-wrapper .ts-control,.ts-wrapper.form-control-lg .ts-control,.ts-wrapper.form-select-lg .ts-control{border-radius:var(--tblr-border-radius-lg);font-size:1.25rem}.ts-wrapper:not(.form-control):not(.form-select){padding:0;border:none;height:auto;box-shadow:none;background:0 0}.ts-wrapper:not(.form-control):not(.form-select).single .ts-control{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px}.ts-wrapper.form-select,.ts-wrapper.single{--ts-pr-caret:2.25rem}.ts-wrapper.form-control .ts-control,.ts-wrapper.form-control.single.input-active .ts-control,.ts-wrapper.form-select .ts-control,.ts-wrapper.form-select.single.input-active .ts-control{border:none!important}.ts-wrapper.form-control:not(.disabled) .ts-control,.ts-wrapper.form-control:not(.disabled).single.input-active .ts-control,.ts-wrapper.form-select:not(.disabled) .ts-control,.ts-wrapper.form-select:not(.disabled).single.input-active .ts-control{background:0 0!important}.input-group>.ts-wrapper{flex-grow:1}.input-group>.ts-wrapper:not(:nth-child(2))>.ts-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.ts-wrapper:not(:last-child)>.ts-control{border-top-right-radius:0;border-bottom-right-radius:0}:root{--ts-pr-clear-button:0rem;--ts-pr-caret:0rem}.ts-input{color:inherit}.ts-control{color:inherit}.ts-control .dropdown-menu{width:100%;height:auto}.ts-wrapper .form-control,.ts-wrapper .form-select,.ts-wrapper.form-control,.ts-wrapper.form-select{box-shadow:var(--tblr-box-shadow-input)}.ts-wrapper.is-invalid .ts-control,.ts-wrapper.is-valid .ts-control{--ts-pr-clear-button:1.5rem}.ts-dropdown{background:var(--tblr-bg-surface);color:var(--tblr-body-color);box-shadow:var(--tblr-box-shadow-dropdown)}.ts-dropdown .option{padding:.5rem .75rem}.ts-control,.ts-control input{color:var(--tblr-body-color)}.ts-control input::-webkit-input-placeholder{color:#929dab}.ts-control input:-ms-input-placeholder{color:#929dab}.ts-control input::-ms-input-placeholder{color:#929dab}.ts-control input::placeholder{color:#929dab}.ts-wrapper.multi .ts-control>div{background:var(--tblr-bg-surface-secondary);border:1px solid var(--tblr-border-color);color:var(--tblr-body-color)}.apexcharts-tooltip{color:var(--tblr-light)!important;background:var(--tblr-bg-surface-dark)!important;font-size:.765625rem!important;padding:.25rem!important;box-shadow:none!important}.apexcharts-tooltip-title{background:0 0!important;border:0!important;margin:0!important;font-weight:var(--tblr-font-weight-bold);padding:.25rem .5rem!important}.apexcharts-tooltip-y-group{padding:2px 0!important}.apexcharts-tooltip-series-group{padding:0 .5rem 0!important}.apexcharts-tooltip-marker{width:10px!important;height:10px!important}.apexcharts-text{fill:var(--tblr-body-color)!important}.apexcharts-gridline{stroke:var(--tblr-border-color)!important}.apexcharts-legend-text{color:inherit!important}.apexcharts-radialbar-area{stroke:var(--tblr-border-color-dark)!important}svg{touch-action:none}.jvm-zoomin,.jvm-zoomout,image,text{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jvm-container{touch-action:none;position:relative;overflow:hidden;height:100%;width:100%}.jvm-tooltip{border-radius:3px;background-color:#5c5cff;font-family:sans-serif,Verdana;font-size:smaller;box-shadow:1px 2px 12px rgba(0,0,0,.2);padding:3px 5px;white-space:nowrap;position:absolute;display:none;color:#fff}.jvm-tooltip.active{display:block}.jvm-zoom-btn{border-radius:3px;background-color:#292929;padding:3px;box-sizing:border-box;position:absolute;line-height:10px;cursor:pointer;color:#fff;height:15px;width:15px;left:10px}.jvm-zoom-btn.jvm-zoomout{top:30px}.jvm-zoom-btn.jvm-zoomin{top:10px}.jvm-series-container{right:15px;position:absolute}.jvm-series-container.jvm-series-h{bottom:15px}.jvm-series-container.jvm-series-v{top:15px}.jvm-series-container .jvm-legend{background-color:#fff;border:1px solid #e5e7eb;margin-left:.75rem;border-radius:.25rem;border-color:#e5e7eb;padding:.6rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);float:left}.jvm-series-container .jvm-legend .jvm-legend-title{line-height:1;border-bottom:1px solid #e5e7eb;padding-bottom:.5rem;margin-bottom:.575rem;text-align:left}.jvm-series-container .jvm-legend .jvm-legend-inner{overflow:hidden}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick{overflow:hidden;min-width:40px}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick:not(:first-child){margin-top:.575rem}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample{border-radius:4px;margin-right:.65rem;height:16px;width:16px;float:left}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-text{font-size:12px;text-align:center;float:left}.jvm-line[animation=true]{animation:jvm-line-animation 10s linear forwards infinite}@keyframes jvm-line-animation{from{stroke-dashoffset:250}}.jvm-tooltip{background:#182433;font-family:inherit;font-size:.75rem;box-shadow:var(--tblr-shadow-card)}.jvm-series-container .jvm-legend .jvm-legend-title{border-bottom:0;font-weight:var(--tblr-font-weight-medium)}.jvm-series-container .jvm-legend{background-color:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);min-width:8rem}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick{display:flex;align-items:center}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample{width:.75rem;height:.75rem}.jvm-zoom-btn{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-card-bg,var(--tblr-bg-surface));color:var(--tblr-body-color);padding:0;display:flex;align-items:center;justify-content:center;line-height:1;width:1.5rem;height:1.5rem;font-size:1rem;box-shadow:var(--tblr-shadow-card)}.jvm-zoom-btn.jvm-zoomout{top:2.5rem}.dropzone{border:var(--tblr-border-width) dashed var(--tblr-border-color);color:var(--tblr-secondary);padding:1rem}.dropzone.dz-drag-hover{border:var(--tblr-border-width) dashed var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.01);color:var(--tblr-primary)}.dropzone.dz-drag-hover .dz-message{opacity:1}.dropzone .dz-preview{margin:.5rem}.dropzone .dz-preview .dz-image{border-radius:var(--tblr-border-radius)}.dropzone .dz-preview .dz-success-mark{height:54px}.fslightbox-container{font-family:inherit!important;background:rgba(24,36,51,.24)!important;-webkit-backdrop-filter:blur(4px)!important;backdrop-filter:blur(4px)!important}.fslightbox-slide-number-container{color:inherit!important}.fslightbox-slash{background:currentColor!important}body{--plyr-color-main:var(--tblr-primary)}.tox-tinymce{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;border-radius:4px!important;font-family:var(--tblr-font-sans-serif)!important}.tox-toolbar__group{padding:0 .5rem 0}.tox .tox-toolbar__primary{background:0 0!important}.tox:not(.tox-tinymce-inline) .tox-editor-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;box-shadow:none!important;padding:0!important}.tox-tbtn{margin:0!important}.tox-statusbar{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important}.tox .tox-toolbar-overlord,.tox:not(.tox-tinymce-inline) .tox-editor-header{background:0 0!important}:root{--gl-star-size:auto;--gl-star-color:var(--tblr-yellow);--gl-star-color-inactive:var(--tblr-border-color)}[data-star-rating] svg{width:var(--tblr-icon-size,--gl-star-size);height:var(--tblr-icon-size,--gl-star-size)}[data-star-rating] :not(.gl-active)>.gl-star-full{color:var(--gl-star-color-inactive)!important}[data-star-rating] .gl-active>.gl-star-full{color:var(--gl-star-color)}.clr-picker{box-shadow:var(--tblr-box-shadow-dropdown);background-color:var(--tblr-bg-surface)}input.clr-color{border-radius:var(--tblr-border-radius);color:var(--tblr-body-color);border-color:var(--tblr-border-color);background:0 0}input.clr-color:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-color:rgba(var(--tblr-primary-rgb),.25)}.clr-swatches button{border-radius:var(--tblr-border-radius);padding:0 2px 4px 2px}.clr-swatches button:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.clr-preview{border-radius:var(--tblr-border-radius);overflow:visible}.clr-preview button,.clr-preview:after,.clr-preview:before{border-radius:var(--tblr-border-radius)}.clr-preview button:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.clr-field{display:block}.clr-field button{width:1.5rem;height:1.5rem;left:6px;right:auto;border-radius:var(--tblr-border-radius)}.clr-field button:after{box-shadow:inset 0 0 0 1px var(--tblr-border-color-translucent)}.clr-field button:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.clr-field input{padding-left:2.5rem} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-vendors.rtl.css b/gin_ops/static/dist/css/tabler-vendors.rtl.css new file mode 100644 index 0000000..5bd75f1 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-vendors.rtl.css @@ -0,0 +1,1504 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +/* prettier-ignore */ +/* prettier-ignore */ +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + touch-action: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + box-sizing: border-box; +} + +.noUi-target { + position: relative; +} + +.noUi-base, +.noUi-connects { + width: 100%; + height: 100%; + position: relative; + z-index: 1; +} + +/* Wrapper for all connect elements. + */ +.noUi-connects { + overflow: hidden; + z-index: 0; +} + +.noUi-connect, +.noUi-origin { + will-change: transform; + position: absolute; + z-index: 1; + top: 0; + left: 0; + height: 100%; + width: 100%; + -ms-transform-origin: 100% 0; + -webkit-transform-origin: 100% 0; + -webkit-transform-style: preserve-3d; + transform-origin: 100% 0; + transform-style: flat; +} + +/* Offset direction + */ +.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin { + right: 0; + left: auto; +} + +/* Give origins 0 height/width so they don't interfere with clicking the + * connect elements. + */ +.noUi-vertical .noUi-origin { + top: -100%; + width: 0; +} + +.noUi-horizontal .noUi-origin { + height: 0; +} + +.noUi-handle { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + position: absolute; +} + +.noUi-touch-area { + height: 100%; + width: 100%; +} + +.noUi-state-tap .noUi-connect, +.noUi-state-tap .noUi-origin { + transition: transform 0.3s; +} + +.noUi-state-drag * { + cursor: inherit !important; +} + +/* Slider size and handle placement; + */ +.noUi-horizontal { + height: 18px; +} + +.noUi-horizontal .noUi-handle { + width: 34px; + height: 28px; + left: -17px; + top: -6px; +} + +.noUi-vertical { + width: 18px; +} + +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + left: -6px; + bottom: -17px; +} + +.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { + right: -17px; + left: auto; +} + +/* Styling; + * Giving the connect element a border radius causes issues with using transform: scale + */ +.noUi-target { + background: #FAFAFA; + border-radius: 4px; + border: 1px solid #D3D3D3; + box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; +} + +.noUi-connects { + border-radius: 3px; +} + +.noUi-connect { + background: #3FB8AF; +} + +/* Handles and cursors; + */ +.noUi-draggable { + cursor: ew-resize; +} + +.noUi-vertical .noUi-draggable { + cursor: ns-resize; +} + +.noUi-handle { + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; +} + +.noUi-active { + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; +} + +/* Handle stripes; + */ +.noUi-handle:before, +.noUi-handle:after { + content: ""; + display: block; + position: absolute; + height: 14px; + width: 1px; + background: #E8E7E6; + right: 14px; + top: 6px; +} + +.noUi-handle:after { + right: 17px; +} + +.noUi-vertical .noUi-handle:before, +.noUi-vertical .noUi-handle:after { + width: 14px; + height: 1px; + right: 6px; + top: 14px; +} + +.noUi-vertical .noUi-handle:after { + top: 17px; +} + +/* Disabled state; + */ +[disabled] .noUi-connect { + background: #B8B8B8; +} + +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} + +/* Base; + * + */ +.noUi-pips, +.noUi-pips * { + box-sizing: border-box; +} + +.noUi-pips { + position: absolute; + color: #999; +} + +/* Values; + * + */ +.noUi-value { + position: absolute; + white-space: nowrap; + text-align: center; +} + +.noUi-value-sub { + color: #ccc; + font-size: 10px; +} + +/* Markings; + * + */ +.noUi-marker { + position: absolute; + background: #CCC; +} + +.noUi-marker-sub { + background: #AAA; +} + +.noUi-marker-large { + background: #AAA; +} + +/* Horizontal layout; + * + */ +.noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + right: 0; + width: 100%; +} + +.noUi-value-horizontal { + transform: translate(50%, 50%); +} + +.noUi-rtl .noUi-value-horizontal { + transform: translate(-50%, 50%); +} + +.noUi-marker-horizontal.noUi-marker { + margin-right: -1px; + width: 2px; + height: 5px; +} + +.noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} + +.noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} + +/* Vertical layout; + * + */ +.noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + right: 100%; +} + +.noUi-value-vertical { + transform: translate(0, -50%); + padding-right: 25px; +} + +.noUi-rtl .noUi-value-vertical { + transform: translate(0, 50%); +} + +.noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} + +.noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} + +.noUi-marker-vertical.noUi-marker-large { + width: 15px; +} + +.noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; + white-space: nowrap; +} + +.noUi-horizontal .noUi-tooltip { + transform: translate(50%, 0); + right: 50%; + bottom: 120%; +} + +.noUi-vertical .noUi-tooltip { + transform: translate(0, -50%); + top: 50%; + left: 120%; +} + +.noUi-horizontal .noUi-origin > .noUi-tooltip { + transform: translate(-50%, 0); + right: auto; + bottom: 10px; +} + +.noUi-vertical .noUi-origin > .noUi-tooltip { + transform: translate(0, -18px); + top: auto; + left: 28px; +} + +.noUi-target { + border: 0; + box-shadow: none; + background: none; + border-radius: 0; + color: var(--tblr-primary); +} + +.noUi-horizontal { + height: 1.25rem; + padding: 0.5rem 0; +} + +.noUi-base { + background: var(--tblr-border-color); + border-radius: 1rem; +} + +.noUi-handle { + width: 1rem; + height: 1rem; + border: 2px var(--tblr-border-style) #ffffff; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + border-radius: 1rem; + background: currentColor; + outline: 0; +} +.noUi-handle:before, .noUi-handle:after { + content: none; +} +.noUi-horizontal .noUi-handle { + width: 1rem; + height: 1rem; + top: -0.5rem; + left: -0.5rem; + margin: 1px 0 0 1px; +} +.noUi-handle.noUi-active, .noUi-handle:focus { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +.noUi-connect { + background: currentColor; +} + +.litepicker { + --litepicker-month-weekday-color: var(--tblr-secondary); + --litepicker-button-prev-month-color: var(--tblr-secondary); + --litepicker-button-next-month-color: var(--tblr-secondary); + --litepicker-button-prev-month-color-hover: var(--tblr-primary); + --litepicker-button-next-month-color-hover: var(--tblr-primary); + --litepicker-day-color: var(--tblr-body-color); + --litepicker-day-color-hover: var(--tblr-primary); + --litepicker-is-end-color-bg: var(--tblr-primary); + --litepicker-is-today-color: var(--tblr-primary); + --litepicker-month-header-color: var(--tblr-body-color); + --litepicker-container-months-color-bg: var(--tblr-bg-surface); + font: inherit; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.litepicker svg { + fill: none !important; +} +.litepicker .container__main { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: none; +} +.litepicker .container__months .month-item-name, +.litepicker .container__months .month-item-year { + font-weight: var(--tblr-font-weight-medium) !important; +} +.litepicker .container__months .button-next-month, +.litepicker .container__months .button-prev-month { + cursor: pointer !important; +} +.litepicker .container__months .month-item-weekdays-row > div { + padding: 0.5rem 0 !important; + font-size: 0.75rem; +} +.litepicker .container__days .day-item { + cursor: pointer !important; + padding: 0.5rem 0 !important; + transition: color 0.3s, background-color 0.3s, border-color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .litepicker .container__days .day-item { + transition: none; + } +} +.datepicker-inline .litepicker { + box-shadow: var(--tblr-box-shadow-input); +} +.datepicker-inline .litepicker .container__months { + box-shadow: none; + background-color: var(--tblr-bg-forms); +} + +/** + * Tom Select bootstrap 5 + */ +/** + * tom-select.css (v//@@version) + * Copyright (c) contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this + * file except in compliance with the License. You may obtain a copy of the License at: + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + * + */ +:root { + --ts-pr-clear-button: 0; + --ts-pr-caret: 0; + --ts-pr-min: .75rem; +} + +.ts-wrapper.single .ts-control, .ts-wrapper.single .ts-control input { + cursor: pointer; +} + +.ts-control { + padding-left: max(var(--ts-pr-min), var(--ts-pr-clear-button) + var(--ts-pr-caret)) !important; +} + +.ts-wrapper.plugin-drag_drop.multi > .ts-control > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; +} +.ts-wrapper.plugin-drag_drop .ui-sortable-placeholder::after { + content: "!"; + visibility: hidden; +} +.ts-wrapper.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); +} + +.plugin-checkbox_options .option input { + margin-left: 0.5rem; +} + +.plugin-clear_button { + --ts-pr-clear-button: 1em; +} +.plugin-clear_button .clear-button { + opacity: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); + left: calc(0.75rem - 5px); + margin-left: 0 !important; + background: transparent !important; + transition: opacity 0.5s; + cursor: pointer; +} +.plugin-clear_button.form-select .clear-button, .plugin-clear_button.single .clear-button { + left: max( var(--ts-pr-caret), 0.75rem); +} +.plugin-clear_button.focus.has-items .clear-button, .plugin-clear_button:not(.disabled):hover.has-items .clear-button { + opacity: 1; +} + +.ts-wrapper .dropdown-header { + position: relative; + padding: 6px 0.75rem; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: var(--tblr-border-radius) var(--tblr-border-radius) 0 0; +} +.ts-wrapper .dropdown-header-close { + position: absolute; + left: 0.75rem; + top: 50%; + color: #182433; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; +} +.ts-wrapper .dropdown-header-close:hover { + color: black; +} + +.plugin-dropdown_input.focus.dropdown-active .ts-control { + box-shadow: none; + border: 1px solid var(--tblr-border-color); + box-shadow: var(--tblr-box-shadow-input); +} +.plugin-dropdown_input .dropdown-input { + border: 1px solid #d0d0d0; + border-width: 0 0 1px 0; + display: block; + padding: 0.5625rem 0.75rem; + box-shadow: none; + width: 100%; + background: transparent; +} +.plugin-dropdown_input.focus .ts-dropdown .dropdown-input { + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.plugin-dropdown_input .items-placeholder { + border: 0 none !important; + box-shadow: none !important; + width: 100%; +} +.plugin-dropdown_input.has-items .items-placeholder, .plugin-dropdown_input.dropdown-active .items-placeholder { + display: none !important; +} + +.ts-wrapper.plugin-input_autogrow.has-items .ts-control > input { + min-width: 0; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input { + flex: none; + min-width: 4px; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::-webkit-input-placeholder { + color: transparent; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input:-ms-input-placeholder { + color: transparent; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::-ms-input-placeholder { + color: transparent; +} +.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control > input::placeholder { + color: transparent; +} + +.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content { + display: flex; +} +.ts-dropdown.plugin-optgroup_columns .optgroup { + border-left: 1px solid #f2f2f2; + border-top: 0 none; + flex-grow: 1; + flex-basis: 0; + min-width: 0; +} +.ts-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-left: 0 none; +} +.ts-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; +} +.ts-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; +} + +.ts-wrapper.plugin-remove_button .item { + display: inline-flex; + align-items: center; + padding-left: 0 !important; +} +.ts-wrapper.plugin-remove_button .item .remove { + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 0 5px; + border-radius: 2px 0 0 2px; + box-sizing: border-box; +} +.ts-wrapper.plugin-remove_button .item .remove:hover { + background: rgba(0, 0, 0, 0.05); +} +.ts-wrapper.plugin-remove_button.disabled .item .remove:hover { + background: none; +} +.ts-wrapper.plugin-remove_button .remove-single { + position: absolute; + left: 0; + top: 0; + font-size: 23px; +} + +.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove { + border-right: 1px solid #dadfe5; + margin-right: 5px; +} +.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove { + border-right-color: rgba(0, 0, 0, 0); +} +.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove { + border-right-color: white; +} + +.ts-wrapper.plugin-remove_button.rtl .item .remove { + border-left: 1px solid #dadfe5; + margin-left: 5px; +} +.ts-wrapper.plugin-remove_button.rtl .item.active .remove { + border-left-color: rgba(0, 0, 0, 0); +} +.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove { + border-left-color: white; +} + +.ts-wrapper { + position: relative; +} + +.ts-dropdown, +.ts-control, +.ts-control input { + color: #182433; + font-family: inherit; + font-size: inherit; + line-height: 1.4285714286; + font-smoothing: inherit; +} + +.ts-control, +.ts-wrapper.single.input-active .ts-control { + background: var(--tblr-bg-forms); + cursor: text; +} + +.ts-control { + border: 1px solid var(--tblr-border-color); + padding: 0.5625rem 0.75rem; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + box-shadow: none; + border-radius: var(--tblr-border-radius); + display: flex; + flex-wrap: wrap; +} +.ts-wrapper.multi.has-items .ts-control { + padding: calc( 0.5625rem - 1px - 0px) 0.75rem calc( 0.5625rem - 1px - 3px - 0px); +} +.full .ts-control { + background-color: var(--tblr-bg-forms); +} +.disabled .ts-control, .disabled .ts-control * { + cursor: default !important; +} +.focus .ts-control { + box-shadow: none; +} +.ts-control > * { + vertical-align: baseline; + display: inline-block; +} +.ts-wrapper.multi .ts-control > div { + cursor: pointer; + margin: 0 0 3px 3px; + padding: 1px 5px; + background: #efefef; + color: #182433; + border: 0px solid #dadfe5; +} +.ts-wrapper.multi .ts-control > div.active { + background: #0054a6; + color: #fff; + border: 0px solid rgba(0, 0, 0, 0); +} +.ts-wrapper.multi.disabled .ts-control > div, .ts-wrapper.multi.disabled .ts-control > div.active { + color: #727272; + background: white; + border: 0px solid white; +} +.ts-control > input { + flex: 1 1 auto; + min-width: 7rem; + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; + box-shadow: none !important; +} +.ts-control > input::-ms-clear { + display: none; +} +.ts-control > input:focus { + outline: none !important; +} +.has-items .ts-control > input { + margin: 0px 4px !important; +} +.ts-control.rtl { + text-align: left; +} +.ts-control.rtl.single .ts-control:after { + right: calc(0.75rem + 5px); + left: auto; +} +.ts-control.rtl .ts-control > input { + margin: 0px -2px 0px 4px !important; +} +.disabled .ts-control { + opacity: 0.5; + background-color: var(--tblr-bg-surface-secondary); +} +.input-hidden .ts-control > input { + opacity: 0; + position: absolute; + right: -10000px; +} + +.ts-dropdown { + position: absolute; + top: 100%; + right: 0; + width: 100%; + z-index: 10; + border: 1px solid #d0d0d0; + background: #fff; + margin: 0.25rem 0 0 0; + border-top: 0 none; + box-sizing: border-box; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius); +} +.ts-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; +} +.ts-dropdown [data-selectable] .highlight { + background: rgba(255, 237, 40, 0.4); + border-radius: 1px; +} +.ts-dropdown .option, +.ts-dropdown .optgroup-header, +.ts-dropdown .no-results, +.ts-dropdown .create { + padding: 3px 0.75rem; +} +.ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option { + cursor: inherit; + opacity: 0.5; +} +.ts-dropdown [data-selectable].option { + opacity: 1; + cursor: pointer; +} +.ts-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; +} +.ts-dropdown .optgroup-header { + color: #667382; + background: var(--tblr-bg-surface); + cursor: default; +} +.ts-dropdown .active { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); + color: inherit; +} +.ts-dropdown .active.create { + color: inherit; +} +.ts-dropdown .create { + color: rgba(24, 36, 51, 0.5); +} +.ts-dropdown .spinner { + display: inline-block; + width: 30px; + height: 30px; + margin: 3px 0.75rem; +} +.ts-dropdown .spinner:after { + content: " "; + display: block; + width: 24px; + height: 24px; + margin: 3px; + border-radius: 50%; + border: 5px solid #d0d0d0; + border-color: #d0d0d0 transparent #d0d0d0 transparent; + animation: lds-dual-ring 1.2s linear infinite; +} +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-360deg); + } +} + +.ts-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + overflow-scrolling: touch; + scroll-behavior: smooth; +} + +.ts-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; +} + +.ts-wrapper.form-control, +.ts-wrapper.form-select { + padding: 0 !important; + height: auto; + box-shadow: none; + display: flex; +} + +.ts-dropdown, +.ts-dropdown.form-control, +.ts-dropdown.form-select { + height: auto; + padding: 0; + z-index: 1000; + background: #fff; + border: 1px solid var(--tblr-border-color-translucent); + border-radius: 4px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); +} + +.ts-dropdown .optgroup-header { + font-size: 0.765625rem; + line-height: 1.4285714286; +} +.ts-dropdown .optgroup:first-child:before { + display: none; +} +.ts-dropdown .optgroup:before { + content: " "; + display: block; + height: 0; + margin: var(--tblr-spacer) 0; + overflow: hidden; + border-top: 1px solid var(--tblr-border-color-translucent); + margin-right: -0.75rem; + margin-left: -0.75rem; +} +.ts-dropdown .create { + padding-right: 0.75rem; +} + +.ts-dropdown-content { + padding: 5px 0; +} + +.ts-control { + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + display: flex; + align-items: center; +} +@media (prefers-reduced-motion: reduce) { + .ts-control { + transition: none; + } +} +.ts-control.dropdown -active { + border-radius: var(--tblr-border-radius); +} +.focus .ts-control { + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.ts-control .item { + display: flex; + align-items: center; +} + +.ts-wrapper.is-invalid, +.was-validated .invalid, +.was-validated :invalid + .ts-wrapper { + border-color: var(--tblr-form-invalid-color); +} +.ts-wrapper.is-invalid:not(.single), +.was-validated .invalid:not(.single), +.was-validated :invalid + .ts-wrapper:not(.single) { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-position: left calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-invalid.single, +.was-validated .invalid.single, +.was-validated :invalid + .ts-wrapper.single { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-position: left 0.75rem center, center left 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-invalid.focus .ts-control, +.was-validated .invalid.focus .ts-control, +.was-validated :invalid + .ts-wrapper.focus .ts-control { + border-color: var(--tblr-form-invalid-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-form-invalid-color), 0.25); +} + +.ts-wrapper.is-valid, +.was-validated .valid, +.was-validated :valid + .ts-wrapper { + border-color: var(--tblr-form-valid-color); +} +.ts-wrapper.is-valid:not(.single), +.was-validated .valid:not(.single), +.was-validated :valid + .ts-wrapper:not(.single) { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-position: left calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-valid.single, +.was-validated .valid.single, +.was-validated :valid + .ts-wrapper.single { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-position: left 0.75rem center, center left 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); + background-repeat: no-repeat; +} +.ts-wrapper.is-valid.focus .ts-control, +.was-validated .valid.focus .ts-control, +.was-validated :valid + .ts-wrapper.focus .ts-control { + border-color: var(--tblr-form-valid-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-form-valid-color), 0.25); +} + +.ts-wrapper { + min-height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + display: flex; +} +.input-group-sm > .ts-wrapper, .ts-wrapper.form-select-sm, .ts-wrapper.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +.input-group-sm > .ts-wrapper .ts-control, .ts-wrapper.form-select-sm .ts-control, .ts-wrapper.form-control-sm .ts-control { + border-radius: var(--tblr-border-radius-sm); + font-size: 0.75rem; +} +.input-group-sm > .ts-wrapper.has-items .ts-control, .ts-wrapper.form-select-sm.has-items .ts-control, .ts-wrapper.form-control-sm.has-items .ts-control { + font-size: 0.75rem; + padding-bottom: 0; +} +.input-group-sm > .ts-wrapper.multi.has-items .ts-control, .ts-wrapper.form-select-sm.multi.has-items .ts-control, .ts-wrapper.form-control-sm.multi.has-items .ts-control { + padding-top: calc((calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)) - (1.4285714286 * 0.75rem) - 4px) / 2) !important; +} +.ts-wrapper.multi.has-items .ts-control { + padding-right: calc(0.75rem - 5px); + --ts-pr-min: calc(0.75rem - 5px); +} +.ts-wrapper.multi .ts-control > div { + border-radius: calc(var(--tblr-border-radius) - 1px); +} +.input-group-lg > .ts-wrapper, .ts-wrapper.form-control-lg, .ts-wrapper.form-select-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} +.input-group-lg > .ts-wrapper .ts-control, .ts-wrapper.form-control-lg .ts-control, .ts-wrapper.form-select-lg .ts-control { + border-radius: var(--tblr-border-radius-lg); + font-size: 1.25rem; +} + +.ts-wrapper:not(.form-control):not(.form-select) { + padding: 0; + border: none; + height: auto; + box-shadow: none; + background: none; +} +.ts-wrapper:not(.form-control):not(.form-select).single .ts-control { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: left 0.75rem center; + background-size: 16px 12px; +} +.ts-wrapper.form-select, .ts-wrapper.single { + --ts-pr-caret: 2.25rem; +} + +.ts-wrapper.form-control .ts-control, .ts-wrapper.form-control.single.input-active .ts-control, +.ts-wrapper.form-select .ts-control, +.ts-wrapper.form-select.single.input-active .ts-control { + border: none !important; +} +.ts-wrapper.form-control:not(.disabled) .ts-control, .ts-wrapper.form-control:not(.disabled).single.input-active .ts-control, +.ts-wrapper.form-select:not(.disabled) .ts-control, +.ts-wrapper.form-select:not(.disabled).single.input-active .ts-control { + background: transparent !important; +} + +.input-group > .ts-wrapper { + flex-grow: 1; +} +.input-group > .ts-wrapper:not(:nth-child(2)) > .ts-control { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > .ts-wrapper:not(:last-child) > .ts-control { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +:root { + --ts-pr-clear-button: 0rem; + --ts-pr-caret: 0rem; +} + +.ts-input { + color: inherit; +} + +.ts-control { + color: inherit; +} +.ts-control .dropdown-menu { + width: 100%; + height: auto; +} + +.ts-wrapper .form-control, +.ts-wrapper .form-select, .ts-wrapper.form-control, .ts-wrapper.form-select { + box-shadow: var(--tblr-box-shadow-input); +} +.ts-wrapper.is-invalid .ts-control, .ts-wrapper.is-valid .ts-control { + --ts-pr-clear-button: 1.5rem; +} + +.ts-dropdown { + background: var(--tblr-bg-surface); + color: var(--tblr-body-color); + box-shadow: var(--tblr-box-shadow-dropdown); +} +.ts-dropdown .option { + padding: 0.5rem 0.75rem; +} + +.ts-control, +.ts-control input { + color: var(--tblr-body-color); +} + +.ts-control input::-webkit-input-placeholder { + color: #929dab; +} + +.ts-control input:-ms-input-placeholder { + color: #929dab; +} + +.ts-control input::-ms-input-placeholder { + color: #929dab; +} + +.ts-control input::placeholder { + color: #929dab; +} + +.ts-wrapper.multi .ts-control > div { + background: var(--tblr-bg-surface-secondary); + border: 1px solid var(--tblr-border-color); + color: var(--tblr-body-color); +} + +.apexcharts-tooltip { + color: var(--tblr-light) !important; + background: var(--tblr-bg-surface-dark) !important; + font-size: 0.765625rem !important; + padding: 0.25rem !important; + box-shadow: none !important; +} + +.apexcharts-tooltip-title { + background: transparent !important; + border: 0 !important; + margin: 0 !important; + font-weight: var(--tblr-font-weight-bold); + padding: 0.25rem 0.5rem !important; +} + +.apexcharts-tooltip-y-group { + padding: 2px 0 !important; +} + +.apexcharts-tooltip-series-group { + padding: 0 0.5rem 0 !important; +} + +.apexcharts-tooltip-marker { + width: 10px !important; + height: 10px !important; +} + +.apexcharts-text { + fill: var(--tblr-body-color) !important; +} + +.apexcharts-gridline { + stroke: var(--tblr-border-color) !important; +} + +.apexcharts-legend-text { + color: inherit !important; +} + +.apexcharts-radialbar-area { + stroke: var(--tblr-border-color-dark) !important; +} + +svg { + touch-action: none; +} + +image, text, .jvm-zoomin, .jvm-zoomout { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jvm-container { + touch-action: none; + position: relative; + overflow: hidden; + height: 100%; + width: 100%; +} + +.jvm-tooltip { + border-radius: 3px; + background-color: #5c5cff; + font-family: sans-serif, Verdana; + font-size: smaller; + box-shadow: -1px 2px 12px rgba(0, 0, 0, 0.2); + padding: 3px 5px; + white-space: nowrap; + position: absolute; + display: none; + color: #FFF; +} + +.jvm-tooltip.active { + display: block; +} + +.jvm-zoom-btn { + border-radius: 3px; + background-color: #292929; + padding: 3px; + box-sizing: border-box; + position: absolute; + line-height: 10px; + cursor: pointer; + color: #FFF; + height: 15px; + width: 15px; + right: 10px; +} + +.jvm-zoom-btn.jvm-zoomout { + top: 30px; +} + +.jvm-zoom-btn.jvm-zoomin { + top: 10px; +} + +.jvm-series-container { + left: 15px; + position: absolute; +} + +.jvm-series-container.jvm-series-h { + bottom: 15px; +} + +.jvm-series-container.jvm-series-v { + top: 15px; +} + +.jvm-series-container .jvm-legend { + background-color: #FFF; + border: 1px solid #e5e7eb; + margin-right: 0.75rem; + border-radius: 0.25rem; + border-color: #e5e7eb; + padding: 0.6rem; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + float: right; +} + +.jvm-series-container .jvm-legend .jvm-legend-title { + line-height: 1; + border-bottom: 1px solid #e5e7eb; + padding-bottom: 0.5rem; + margin-bottom: 0.575rem; + text-align: right; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner { + overflow: hidden; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick { + overflow: hidden; + min-width: 40px; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick:not(:first-child) { + margin-top: 0.575rem; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample { + border-radius: 4px; + margin-left: 0.65rem; + height: 16px; + width: 16px; + float: right; +} + +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-text { + font-size: 12px; + text-align: center; + float: right; +} + +.jvm-line[animation=true] { + animation: jvm-line-animation 10s linear forwards infinite; +} +@keyframes jvm-line-animation { + from { + stroke-dashoffset: 250; + } +} +.jvm-tooltip { + background: #182433; + font-family: inherit; + font-size: 0.75rem; + box-shadow: var(--tblr-shadow-card); +} + +.jvm-series-container .jvm-legend .jvm-legend-title { + border-bottom: 0; + font-weight: var(--tblr-font-weight-medium); +} + +.jvm-series-container .jvm-legend { + background-color: var(--tblr-card-bg, var(--tblr-bg-surface)); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + min-width: 8rem; +} +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick { + display: flex; + align-items: center; +} +.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample { + width: 0.75rem; + height: 0.75rem; +} + +.jvm-zoom-btn { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + color: var(--tblr-body-color); + padding: 0; + display: flex; + align-items: center; + justify-content: center; + line-height: 1; + width: 1.5rem; + height: 1.5rem; + font-size: 1rem; + box-shadow: var(--tblr-shadow-card); +} +.jvm-zoom-btn.jvm-zoomout { + top: 2.5rem; +} + +.dropzone { + border: var(--tblr-border-width) dashed var(--tblr-border-color); + color: var(--tblr-secondary); + padding: 1rem; +} +.dropzone.dz-drag-hover { + border: var(--tblr-border-width) dashed var(--tblr-primary); + background: rgba(var(--tblr-primary-rgb), 0.01); + color: var(--tblr-primary); +} +.dropzone.dz-drag-hover .dz-message { + opacity: 1; +} +.dropzone .dz-preview { + margin: 0.5rem; +} +.dropzone .dz-preview .dz-image { + border-radius: var(--tblr-border-radius); +} +.dropzone .dz-preview .dz-success-mark { + height: 54px; +} + +.fslightbox-container { + font-family: inherit !important; + background: rgba(24, 36, 51, 0.24) !important; + -webkit-backdrop-filter: blur(4px) !important; + backdrop-filter: blur(4px) !important; +} + +.fslightbox-slide-number-container { + color: inherit !important; +} + +.fslightbox-slash { + background: currentColor !important; +} + +body { + --plyr-color-main: var(--tblr-primary); +} + +.tox-tinymce { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + border-radius: 4px !important; + font-family: var(--tblr-font-sans-serif) !important; +} + +.tox-toolbar__group { + padding: 0 0.5rem 0; +} + +.tox .tox-toolbar__primary { + background: transparent !important; +} + +.tox:not(.tox-tinymce-inline) .tox-editor-header { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + box-shadow: none !important; + padding: 0 !important; +} + +.tox-tbtn { + margin: 0 !important; +} + +.tox-statusbar { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; +} + +.tox .tox-toolbar-overlord, +.tox:not(.tox-tinymce-inline) .tox-editor-header { + background: transparent !important; +} + +:root { + --gl-star-size: auto; + --gl-star-color: var(--tblr-yellow); + --gl-star-color-inactive: var(--tblr-border-color); +} + +[data-star-rating] svg { + width: var(--tblr-icon-size, --gl-star-size); + height: var(--tblr-icon-size, --gl-star-size); +} +[data-star-rating] :not(.gl-active) > .gl-star-full { + color: var(--gl-star-color-inactive) !important; +} +[data-star-rating] .gl-active > .gl-star-full { + color: var(--gl-star-color); +} + +.clr-picker { + box-shadow: var(--tblr-box-shadow-dropdown); + background-color: var(--tblr-bg-surface); +} + +input.clr-color { + border-radius: var(--tblr-border-radius); + color: var(--tblr-body-color); + border-color: var(--tblr-border-color); + background: transparent; +} +input.clr-color:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + border-color: rgba(var(--tblr-primary-rgb), 0.25); +} + +.clr-swatches button { + border-radius: var(--tblr-border-radius); + padding: 0 2px 4px 2px; +} +.clr-swatches button:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +.clr-preview { + border-radius: var(--tblr-border-radius); + overflow: visible; +} +.clr-preview button, .clr-preview:before, .clr-preview:after { + border-radius: var(--tblr-border-radius); +} +.clr-preview button:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +.clr-field { + display: block; +} +.clr-field button { + width: 1.5rem; + height: 1.5rem; + right: 6px; + left: auto; + border-radius: var(--tblr-border-radius); +} +.clr-field button:after { + box-shadow: inset 0 0 0 1px var(--tblr-border-color-translucent); +} +.clr-field button:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.clr-field input { + padding-right: 2.5rem; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler-vendors.rtl.min.css b/gin_ops/static/dist/css/tabler-vendors.rtl.min.css new file mode 100644 index 0000000..a574e72 --- /dev/null +++ b/gin_ops/static/dist/css/tabler-vendors.rtl.min.css @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;left:0;height:100%;width:100%;-ms-transform-origin:100% 0;-webkit-transform-origin:100% 0;-webkit-transform-style:preserve-3d;transform-origin:100% 0;transform-style:flat}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{right:0;left:auto}.noUi-vertical .noUi-origin{top:-100%;width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;left:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;left:-6px;bottom:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{right:-17px;left:auto}.noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #bbb}.noUi-connects{border-radius:3px}.noUi-connect{background:#3fb8af}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#fff;cursor:default;box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ebebeb,0 3px 6px -3px #bbb}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;right:14px;top:6px}.noUi-handle:after{right:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;right:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#b8b8b8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#ccc}.noUi-marker-sub{background:#aaa}.noUi-marker-large{background:#aaa}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;right:0;width:100%}.noUi-value-horizontal{transform:translate(50%,50%)}.noUi-rtl .noUi-value-horizontal{transform:translate(-50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-right:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;right:100%}.noUi-value-vertical{transform:translate(0,-50%);padding-right:25px}.noUi-rtl .noUi-value-vertical{transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{transform:translate(50%,0);right:50%;bottom:120%}.noUi-vertical .noUi-tooltip{transform:translate(0,-50%);top:50%;left:120%}.noUi-horizontal .noUi-origin>.noUi-tooltip{transform:translate(-50%,0);right:auto;bottom:10px}.noUi-vertical .noUi-origin>.noUi-tooltip{transform:translate(0,-18px);top:auto;left:28px}.noUi-target{border:0;box-shadow:none;background:0 0;border-radius:0;color:var(--tblr-primary)}.noUi-horizontal{height:1.25rem;padding:.5rem 0}.noUi-base{background:var(--tblr-border-color);border-radius:1rem}.noUi-handle{width:1rem;height:1rem;border:2px var(--tblr-border-style) #fff;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);border-radius:1rem;background:currentColor;outline:0}.noUi-handle:after,.noUi-handle:before{content:none}.noUi-horizontal .noUi-handle{width:1rem;height:1rem;top:-.5rem;left:-.5rem;margin:1px 0 0 1px}.noUi-handle.noUi-active,.noUi-handle:focus{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.noUi-connect{background:currentColor}.litepicker{--litepicker-month-weekday-color:var(--tblr-secondary);--litepicker-button-prev-month-color:var(--tblr-secondary);--litepicker-button-next-month-color:var(--tblr-secondary);--litepicker-button-prev-month-color-hover:var(--tblr-primary);--litepicker-button-next-month-color-hover:var(--tblr-primary);--litepicker-day-color:var(--tblr-body-color);--litepicker-day-color-hover:var(--tblr-primary);--litepicker-is-end-color-bg:var(--tblr-primary);--litepicker-is-today-color:var(--tblr-primary);--litepicker-month-header-color:var(--tblr-body-color);--litepicker-container-months-color-bg:var(--tblr-bg-surface);font:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.litepicker svg{fill:none!important}.litepicker .container__main{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:none}.litepicker .container__months .month-item-name,.litepicker .container__months .month-item-year{font-weight:var(--tblr-font-weight-medium)!important}.litepicker .container__months .button-next-month,.litepicker .container__months .button-prev-month{cursor:pointer!important}.litepicker .container__months .month-item-weekdays-row>div{padding:.5rem 0!important;font-size:.75rem}.litepicker .container__days .day-item{cursor:pointer!important;padding:.5rem 0!important;transition:color .3s,background-color .3s,border-color .3s}@media (prefers-reduced-motion:reduce){.litepicker .container__days .day-item{transition:none}}.datepicker-inline .litepicker{box-shadow:var(--tblr-box-shadow-input)}.datepicker-inline .litepicker .container__months{box-shadow:none;background-color:var(--tblr-bg-forms)}:root{--ts-pr-clear-button:0;--ts-pr-caret:0;--ts-pr-min:.75rem}.ts-wrapper.single .ts-control,.ts-wrapper.single .ts-control input{cursor:pointer}.ts-control{padding-left:max(var(--ts-pr-min),var(--ts-pr-clear-button) + var(--ts-pr-caret))!important}.ts-wrapper.plugin-drag_drop.multi>.ts-control>div.ui-sortable-placeholder{visibility:visible!important;background:#f2f2f2!important;background:rgba(0,0,0,.06)!important;border:0 none!important;box-shadow:inset 0 0 12px 4px #fff}.ts-wrapper.plugin-drag_drop .ui-sortable-placeholder::after{content:"!";visibility:hidden}.ts-wrapper.plugin-drag_drop .ui-sortable-helper{box-shadow:0 2px 5px rgba(0,0,0,.2)}.plugin-checkbox_options .option input{margin-left:.5rem}.plugin-clear_button{--ts-pr-clear-button:1em}.plugin-clear_button .clear-button{opacity:0;position:absolute;top:50%;transform:translateY(-50%);left:calc(.75rem - 5px);margin-left:0!important;background:0 0!important;transition:opacity .5s;cursor:pointer}.plugin-clear_button.form-select .clear-button,.plugin-clear_button.single .clear-button{left:max(var(--ts-pr-caret),.75rem)}.plugin-clear_button.focus.has-items .clear-button,.plugin-clear_button:not(.disabled):hover.has-items .clear-button{opacity:1}.ts-wrapper .dropdown-header{position:relative;padding:6px .75rem;border-bottom:1px solid #d0d0d0;background:#f8f8f8;border-radius:var(--tblr-border-radius) var(--tblr-border-radius) 0 0}.ts-wrapper .dropdown-header-close{position:absolute;left:.75rem;top:50%;color:#182433;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.ts-wrapper .dropdown-header-close:hover{color:#000}.plugin-dropdown_input.focus.dropdown-active .ts-control{box-shadow:none;border:1px solid var(--tblr-border-color);box-shadow:var(--tblr-box-shadow-input)}.plugin-dropdown_input .dropdown-input{border:1px solid #d0d0d0;border-width:0 0 1px 0;display:block;padding:.5625rem .75rem;box-shadow:none;width:100%;background:0 0}.plugin-dropdown_input.focus .ts-dropdown .dropdown-input{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.plugin-dropdown_input .items-placeholder{border:0 none!important;box-shadow:none!important;width:100%}.plugin-dropdown_input.dropdown-active .items-placeholder,.plugin-dropdown_input.has-items .items-placeholder{display:none!important}.ts-wrapper.plugin-input_autogrow.has-items .ts-control>input{min-width:0}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input{flex:none;min-width:4px}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-webkit-input-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input:-ms-input-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::-ms-input-placeholder{color:transparent}.ts-wrapper.plugin-input_autogrow.has-items.focus .ts-control>input::placeholder{color:transparent}.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content{display:flex}.ts-dropdown.plugin-optgroup_columns .optgroup{border-left:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.ts-dropdown.plugin-optgroup_columns .optgroup:last-child{border-left:0 none}.ts-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.ts-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.ts-wrapper.plugin-remove_button .item{display:inline-flex;align-items:center;padding-left:0!important}.ts-wrapper.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:0 5px;border-radius:2px 0 0 2px;box-sizing:border-box}.ts-wrapper.plugin-remove_button .item .remove:hover{background:rgba(0,0,0,.05)}.ts-wrapper.plugin-remove_button.disabled .item .remove:hover{background:0 0}.ts-wrapper.plugin-remove_button .remove-single{position:absolute;left:0;top:0;font-size:23px}.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{border-right:1px solid #dadfe5;margin-right:5px}.ts-wrapper.plugin-remove_button:not(.rtl) .item.active .remove{border-right-color:transparent}.ts-wrapper.plugin-remove_button:not(.rtl).disabled .item .remove{border-right-color:#fff}.ts-wrapper.plugin-remove_button.rtl .item .remove{border-left:1px solid #dadfe5;margin-left:5px}.ts-wrapper.plugin-remove_button.rtl .item.active .remove{border-left-color:transparent}.ts-wrapper.plugin-remove_button.rtl.disabled .item .remove{border-left-color:#fff}.ts-wrapper{position:relative}.ts-control,.ts-control input,.ts-dropdown{color:#182433;font-family:inherit;font-size:inherit;line-height:1.4285714286;font-smoothing:inherit}.ts-control,.ts-wrapper.single.input-active .ts-control{background:var(--tblr-bg-forms);cursor:text}.ts-control{border:1px solid var(--tblr-border-color);padding:.5625rem .75rem;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:var(--tblr-border-radius);display:flex;flex-wrap:wrap}.ts-wrapper.multi.has-items .ts-control{padding:calc(.5625rem - 1px - 0px) .75rem calc(.5625rem - 1px - 3px - 0px)}.full .ts-control{background-color:var(--tblr-bg-forms)}.disabled .ts-control,.disabled .ts-control *{cursor:default!important}.focus .ts-control{box-shadow:none}.ts-control>*{vertical-align:baseline;display:inline-block}.ts-wrapper.multi .ts-control>div{cursor:pointer;margin:0 0 3px 3px;padding:1px 5px;background:#efefef;color:#182433;border:0 solid #dadfe5}.ts-wrapper.multi .ts-control>div.active{background:#0054a6;color:#fff;border:0 solid transparent}.ts-wrapper.multi.disabled .ts-control>div,.ts-wrapper.multi.disabled .ts-control>div.active{color:#727272;background:#fff;border:0 solid #fff}.ts-control>input{flex:1 1 auto;min-width:7rem;display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0!important;text-indent:0!important;border:0 none!important;background:0 0!important;line-height:inherit!important;-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important;box-shadow:none!important}.ts-control>input::-ms-clear{display:none}.ts-control>input:focus{outline:0!important}.has-items .ts-control>input{margin:0 4px!important}.ts-control.rtl{text-align:left}.ts-control.rtl.single .ts-control:after{right:calc(.75rem + 5px);left:auto}.ts-control.rtl .ts-control>input{margin:0 -2px 0 4px!important}.disabled .ts-control{opacity:.5;background-color:var(--tblr-bg-surface-secondary)}.input-hidden .ts-control>input{opacity:0;position:absolute;right:-10000px}.ts-dropdown{position:absolute;top:100%;right:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:#fff;margin:.25rem 0 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.ts-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.ts-dropdown [data-selectable] .highlight{background:rgba(255,237,40,.4);border-radius:1px}.ts-dropdown .create,.ts-dropdown .no-results,.ts-dropdown .optgroup-header,.ts-dropdown .option{padding:3px .75rem}.ts-dropdown .option,.ts-dropdown [data-disabled],.ts-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.ts-dropdown [data-selectable].option{opacity:1;cursor:pointer}.ts-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.ts-dropdown .optgroup-header{color:#667382;background:var(--tblr-bg-surface);cursor:default}.ts-dropdown .active{background-color:rgba(var(--tblr-text-secondary-rgb),.04);color:inherit}.ts-dropdown .active.create{color:inherit}.ts-dropdown .create{color:rgba(24,36,51,.5)}.ts-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:3px .75rem}.ts-dropdown .spinner:after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 transparent #d0d0d0 transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}100%{transform:rotate(-360deg)}}.ts-dropdown-content{overflow-y:auto;overflow-x:hidden;max-height:200px;overflow-scrolling:touch;scroll-behavior:smooth}.ts-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.ts-wrapper.form-control,.ts-wrapper.form-select{padding:0!important;height:auto;box-shadow:none;display:flex}.ts-dropdown,.ts-dropdown.form-control,.ts-dropdown.form-select{height:auto;padding:0;z-index:1000;background:#fff;border:1px solid var(--tblr-border-color-translucent);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.ts-dropdown .optgroup-header{font-size:.765625rem;line-height:1.4285714286}.ts-dropdown .optgroup:first-child:before{display:none}.ts-dropdown .optgroup:before{content:" ";display:block;height:0;margin:var(--tblr-spacer) 0;overflow:hidden;border-top:1px solid var(--tblr-border-color-translucent);margin-right:-.75rem;margin-left:-.75rem}.ts-dropdown .create{padding-right:.75rem}.ts-dropdown-content{padding:5px 0}.ts-control{box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex;align-items:center}@media (prefers-reduced-motion:reduce){.ts-control{transition:none}}.ts-control.dropdown -active{border-radius:var(--tblr-border-radius)}.focus .ts-control{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.ts-control .item{display:flex;align-items:center}.ts-wrapper.is-invalid,.was-validated .invalid,.was-validated :invalid+.ts-wrapper{border-color:var(--tblr-form-invalid-color)}.ts-wrapper.is-invalid:not(.single),.was-validated .invalid:not(.single),.was-validated :invalid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:left calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-invalid.single,.was-validated .invalid.single,.was-validated :invalid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-invalid.focus .ts-control,.was-validated .invalid.focus .ts-control,.was-validated :invalid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-invalid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-invalid-color),.25)}.ts-wrapper.is-valid,.was-validated .valid,.was-validated :valid+.ts-wrapper{border-color:var(--tblr-form-valid-color)}.ts-wrapper.is-valid:not(.single),.was-validated .valid:not(.single),.was-validated :valid+.ts-wrapper:not(.single){background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:left calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-valid.single,.was-validated .valid.single,.was-validated :valid+.ts-wrapper.single{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem);background-repeat:no-repeat}.ts-wrapper.is-valid.focus .ts-control,.was-validated .valid.focus .ts-control,.was-validated :valid+.ts-wrapper.focus .ts-control{border-color:var(--tblr-form-valid-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-form-valid-color),.25)}.ts-wrapper{min-height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));display:flex}.input-group-sm>.ts-wrapper,.ts-wrapper.form-control-sm,.ts-wrapper.form-select-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}.input-group-sm>.ts-wrapper .ts-control,.ts-wrapper.form-control-sm .ts-control,.ts-wrapper.form-select-sm .ts-control{border-radius:var(--tblr-border-radius-sm);font-size:.75rem}.input-group-sm>.ts-wrapper.has-items .ts-control,.ts-wrapper.form-control-sm.has-items .ts-control,.ts-wrapper.form-select-sm.has-items .ts-control{font-size:.75rem;padding-bottom:0}.input-group-sm>.ts-wrapper.multi.has-items .ts-control,.ts-wrapper.form-control-sm.multi.has-items .ts-control,.ts-wrapper.form-select-sm.multi.has-items .ts-control{padding-top:calc((calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2)) - (1.4285714286 * .75rem) - 4px)/ 2)!important}.ts-wrapper.multi.has-items .ts-control{padding-right:calc(.75rem - 5px);--ts-pr-min:calc(0.75rem - 5px)}.ts-wrapper.multi .ts-control>div{border-radius:calc(var(--tblr-border-radius) - 1px)}.input-group-lg>.ts-wrapper,.ts-wrapper.form-control-lg,.ts-wrapper.form-select-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.input-group-lg>.ts-wrapper .ts-control,.ts-wrapper.form-control-lg .ts-control,.ts-wrapper.form-select-lg .ts-control{border-radius:var(--tblr-border-radius-lg);font-size:1.25rem}.ts-wrapper:not(.form-control):not(.form-select){padding:0;border:none;height:auto;box-shadow:none;background:0 0}.ts-wrapper:not(.form-control):not(.form-select).single .ts-control{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left .75rem center;background-size:16px 12px}.ts-wrapper.form-select,.ts-wrapper.single{--ts-pr-caret:2.25rem}.ts-wrapper.form-control .ts-control,.ts-wrapper.form-control.single.input-active .ts-control,.ts-wrapper.form-select .ts-control,.ts-wrapper.form-select.single.input-active .ts-control{border:none!important}.ts-wrapper.form-control:not(.disabled) .ts-control,.ts-wrapper.form-control:not(.disabled).single.input-active .ts-control,.ts-wrapper.form-select:not(.disabled) .ts-control,.ts-wrapper.form-select:not(.disabled).single.input-active .ts-control{background:0 0!important}.input-group>.ts-wrapper{flex-grow:1}.input-group>.ts-wrapper:not(:nth-child(2))>.ts-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.ts-wrapper:not(:last-child)>.ts-control{border-top-left-radius:0;border-bottom-left-radius:0}:root{--ts-pr-clear-button:0rem;--ts-pr-caret:0rem}.ts-input{color:inherit}.ts-control{color:inherit}.ts-control .dropdown-menu{width:100%;height:auto}.ts-wrapper .form-control,.ts-wrapper .form-select,.ts-wrapper.form-control,.ts-wrapper.form-select{box-shadow:var(--tblr-box-shadow-input)}.ts-wrapper.is-invalid .ts-control,.ts-wrapper.is-valid .ts-control{--ts-pr-clear-button:1.5rem}.ts-dropdown{background:var(--tblr-bg-surface);color:var(--tblr-body-color);box-shadow:var(--tblr-box-shadow-dropdown)}.ts-dropdown .option{padding:.5rem .75rem}.ts-control,.ts-control input{color:var(--tblr-body-color)}.ts-control input::-webkit-input-placeholder{color:#929dab}.ts-control input:-ms-input-placeholder{color:#929dab}.ts-control input::-ms-input-placeholder{color:#929dab}.ts-control input::placeholder{color:#929dab}.ts-wrapper.multi .ts-control>div{background:var(--tblr-bg-surface-secondary);border:1px solid var(--tblr-border-color);color:var(--tblr-body-color)}.apexcharts-tooltip{color:var(--tblr-light)!important;background:var(--tblr-bg-surface-dark)!important;font-size:.765625rem!important;padding:.25rem!important;box-shadow:none!important}.apexcharts-tooltip-title{background:0 0!important;border:0!important;margin:0!important;font-weight:var(--tblr-font-weight-bold);padding:.25rem .5rem!important}.apexcharts-tooltip-y-group{padding:2px 0!important}.apexcharts-tooltip-series-group{padding:0 .5rem 0!important}.apexcharts-tooltip-marker{width:10px!important;height:10px!important}.apexcharts-text{fill:var(--tblr-body-color)!important}.apexcharts-gridline{stroke:var(--tblr-border-color)!important}.apexcharts-legend-text{color:inherit!important}.apexcharts-radialbar-area{stroke:var(--tblr-border-color-dark)!important}svg{touch-action:none}.jvm-zoomin,.jvm-zoomout,image,text{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jvm-container{touch-action:none;position:relative;overflow:hidden;height:100%;width:100%}.jvm-tooltip{border-radius:3px;background-color:#5c5cff;font-family:sans-serif,Verdana;font-size:smaller;box-shadow:-1px 2px 12px rgba(0,0,0,.2);padding:3px 5px;white-space:nowrap;position:absolute;display:none;color:#fff}.jvm-tooltip.active{display:block}.jvm-zoom-btn{border-radius:3px;background-color:#292929;padding:3px;box-sizing:border-box;position:absolute;line-height:10px;cursor:pointer;color:#fff;height:15px;width:15px;right:10px}.jvm-zoom-btn.jvm-zoomout{top:30px}.jvm-zoom-btn.jvm-zoomin{top:10px}.jvm-series-container{left:15px;position:absolute}.jvm-series-container.jvm-series-h{bottom:15px}.jvm-series-container.jvm-series-v{top:15px}.jvm-series-container .jvm-legend{background-color:#fff;border:1px solid #e5e7eb;margin-right:.75rem;border-radius:.25rem;border-color:#e5e7eb;padding:.6rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);float:right}.jvm-series-container .jvm-legend .jvm-legend-title{line-height:1;border-bottom:1px solid #e5e7eb;padding-bottom:.5rem;margin-bottom:.575rem;text-align:right}.jvm-series-container .jvm-legend .jvm-legend-inner{overflow:hidden}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick{overflow:hidden;min-width:40px}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick:not(:first-child){margin-top:.575rem}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample{border-radius:4px;margin-left:.65rem;height:16px;width:16px;float:right}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-text{font-size:12px;text-align:center;float:right}.jvm-line[animation=true]{animation:jvm-line-animation 10s linear forwards infinite}@keyframes jvm-line-animation{from{stroke-dashoffset:250}}.jvm-tooltip{background:#182433;font-family:inherit;font-size:.75rem;box-shadow:var(--tblr-shadow-card)}.jvm-series-container .jvm-legend .jvm-legend-title{border-bottom:0;font-weight:var(--tblr-font-weight-medium)}.jvm-series-container .jvm-legend{background-color:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);min-width:8rem}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick{display:flex;align-items:center}.jvm-series-container .jvm-legend .jvm-legend-inner .jvm-legend-tick .jvm-legend-tick-sample{width:.75rem;height:.75rem}.jvm-zoom-btn{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-card-bg,var(--tblr-bg-surface));color:var(--tblr-body-color);padding:0;display:flex;align-items:center;justify-content:center;line-height:1;width:1.5rem;height:1.5rem;font-size:1rem;box-shadow:var(--tblr-shadow-card)}.jvm-zoom-btn.jvm-zoomout{top:2.5rem}.dropzone{border:var(--tblr-border-width) dashed var(--tblr-border-color);color:var(--tblr-secondary);padding:1rem}.dropzone.dz-drag-hover{border:var(--tblr-border-width) dashed var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.01);color:var(--tblr-primary)}.dropzone.dz-drag-hover .dz-message{opacity:1}.dropzone .dz-preview{margin:.5rem}.dropzone .dz-preview .dz-image{border-radius:var(--tblr-border-radius)}.dropzone .dz-preview .dz-success-mark{height:54px}.fslightbox-container{font-family:inherit!important;background:rgba(24,36,51,.24)!important;-webkit-backdrop-filter:blur(4px)!important;backdrop-filter:blur(4px)!important}.fslightbox-slide-number-container{color:inherit!important}.fslightbox-slash{background:currentColor!important}body{--plyr-color-main:var(--tblr-primary)}.tox-tinymce{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;border-radius:4px!important;font-family:var(--tblr-font-sans-serif)!important}.tox-toolbar__group{padding:0 .5rem 0}.tox .tox-toolbar__primary{background:0 0!important}.tox:not(.tox-tinymce-inline) .tox-editor-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;box-shadow:none!important;padding:0!important}.tox-tbtn{margin:0!important}.tox-statusbar{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important}.tox .tox-toolbar-overlord,.tox:not(.tox-tinymce-inline) .tox-editor-header{background:0 0!important}:root{--gl-star-size:auto;--gl-star-color:var(--tblr-yellow);--gl-star-color-inactive:var(--tblr-border-color)}[data-star-rating] svg{width:var(--tblr-icon-size,--gl-star-size);height:var(--tblr-icon-size,--gl-star-size)}[data-star-rating] :not(.gl-active)>.gl-star-full{color:var(--gl-star-color-inactive)!important}[data-star-rating] .gl-active>.gl-star-full{color:var(--gl-star-color)}.clr-picker{box-shadow:var(--tblr-box-shadow-dropdown);background-color:var(--tblr-bg-surface)}input.clr-color{border-radius:var(--tblr-border-radius);color:var(--tblr-body-color);border-color:var(--tblr-border-color);background:0 0}input.clr-color:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-color:rgba(var(--tblr-primary-rgb),.25)}.clr-swatches button{border-radius:var(--tblr-border-radius);padding:0 2px 4px 2px}.clr-swatches button:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.clr-preview{border-radius:var(--tblr-border-radius);overflow:visible}.clr-preview button,.clr-preview:after,.clr-preview:before{border-radius:var(--tblr-border-radius)}.clr-preview button:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.clr-field{display:block}.clr-field button{width:1.5rem;height:1.5rem;right:6px;left:auto;border-radius:var(--tblr-border-radius)}.clr-field button:after{box-shadow:inset 0 0 0 1px var(--tblr-border-color-translucent)}.clr-field button:focus{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.clr-field input{padding-right:2.5rem} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler.css b/gin_ops/static/dist/css/tabler.css new file mode 100644 index 0000000..fc843b0 --- /dev/null +++ b/gin_ops/static/dist/css/tabler.css @@ -0,0 +1,25813 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8"; +/* prettier-ignore */ +/* prettier-ignore */ +:root, +[data-bs-theme=light] { + --tblr-blue: #0054a6; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-black: #000000; + --tblr-white: #ffffff; + --tblr-gray: #667382; + --tblr-gray-dark: #182433; + --tblr-gray-100: #f6f8fb; + --tblr-gray-200: #eef1f4; + --tblr-gray-300: #dadfe5; + --tblr-gray-400: #bbc3cd; + --tblr-gray-500: #929dab; + --tblr-gray-600: #667382; + --tblr-gray-700: #3a4859; + --tblr-gray-800: #182433; + --tblr-gray-900: #040a11; + --tblr-primary: #0054a6; + --tblr-secondary: #667382; + --tblr-success: #2fb344; + --tblr-info: #4299e1; + --tblr-warning: #f76707; + --tblr-danger: #d63939; + --tblr-light: #fcfdfe; + --tblr-dark: #182433; + --tblr-muted: #667382; + --tblr-blue: #0054a6; + --tblr-azure: #4299e1; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-lime: #74b816; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-facebook: #1877f2; + --tblr-twitter: #1da1f2; + --tblr-linkedin: #0a66c2; + --tblr-google: #dc4e41; + --tblr-youtube: #ff0000; + --tblr-vimeo: #1ab7ea; + --tblr-dribbble: #ea4c89; + --tblr-github: #181717; + --tblr-instagram: #e4405f; + --tblr-pinterest: #bd081c; + --tblr-vk: #6383a8; + --tblr-rss: #ffa500; + --tblr-flickr: #0063dc; + --tblr-bitbucket: #0052cc; + --tblr-tabler: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-success-rgb: 47, 179, 68; + --tblr-info-rgb: 66, 153, 225; + --tblr-warning-rgb: 247, 103, 7; + --tblr-danger-rgb: 214, 57, 57; + --tblr-light-rgb: 252, 253, 254; + --tblr-dark-rgb: 24, 36, 51; + --tblr-muted-rgb: 102, 115, 130; + --tblr-blue-rgb: 0, 84, 166; + --tblr-azure-rgb: 66, 153, 225; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-purple-rgb: 174, 62, 201; + --tblr-pink-rgb: 214, 51, 108; + --tblr-red-rgb: 214, 57, 57; + --tblr-orange-rgb: 247, 103, 7; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-lime-rgb: 116, 184, 22; + --tblr-green-rgb: 47, 179, 68; + --tblr-teal-rgb: 12, 166, 120; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-google-rgb: 220, 78, 65; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-github-rgb: 24, 23, 23; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-vk-rgb: 99, 131, 168; + --tblr-rss-rgb: 255, 165, 0; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-primary-text-emphasis: #002242; + --tblr-secondary-text-emphasis: #292e34; + --tblr-success-text-emphasis: #13481b; + --tblr-info-text-emphasis: #1a3d5a; + --tblr-warning-text-emphasis: #632903; + --tblr-danger-text-emphasis: #561717; + --tblr-light-text-emphasis: #3a4859; + --tblr-dark-text-emphasis: #3a4859; + --tblr-primary-bg-subtle: #ccdded; + --tblr-secondary-bg-subtle: #e0e3e6; + --tblr-success-bg-subtle: #d5f0da; + --tblr-info-bg-subtle: #d9ebf9; + --tblr-warning-bg-subtle: #fde1cd; + --tblr-danger-bg-subtle: #f7d7d7; + --tblr-light-bg-subtle: #fbfcfd; + --tblr-dark-bg-subtle: #bbc3cd; + --tblr-primary-border-subtle: #99bbdb; + --tblr-secondary-border-subtle: #c2c7cd; + --tblr-success-border-subtle: #ace1b4; + --tblr-info-border-subtle: #b3d6f3; + --tblr-warning-border-subtle: #fcc29c; + --tblr-danger-border-subtle: #efb0b0; + --tblr-light-border-subtle: #eef1f4; + --tblr-dark-border-subtle: #929dab; + --tblr-white-rgb: 255, 255, 255; + --tblr-black-rgb: 0, 0, 0; + --tblr-font-sans-serif: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; + --tblr-font-monospace: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + --tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --tblr-body-font-family: var(--tblr-font-sans-serif); + --tblr-body-font-size: 0.875rem; + --tblr-body-font-weight: 400; + --tblr-body-line-height: 1.4285714286; + --tblr-body-color: #182433; + --tblr-body-color-rgb: 24, 36, 51; + --tblr-body-bg: #f6f8fb; + --tblr-body-bg-rgb: 246, 248, 251; + --tblr-emphasis-color: #182433; + --tblr-emphasis-color-rgb: 24, 36, 51; + --tblr-secondary-color: rgba(24, 36, 51, 0.75); + --tblr-secondary-color-rgb: 24, 36, 51; + --tblr-secondary-bg: #eef1f4; + --tblr-secondary-bg-rgb: 238, 241, 244; + --tblr-tertiary-color: rgba(24, 36, 51, 0.5); + --tblr-tertiary-color-rgb: 24, 36, 51; + --tblr-tertiary-bg: #f6f8fb; + --tblr-tertiary-bg-rgb: 246, 248, 251; + --tblr-heading-color: inherit; + --tblr-link-color: #0054a6; + --tblr-link-color-rgb: 0, 84, 166; + --tblr-link-decoration: none; + --tblr-link-hover-color: #004385; + --tblr-link-hover-color-rgb: 0, 67, 133; + --tblr-link-hover-decoration: underline; + --tblr-code-color: var(--tblr-gray-600); + --tblr-highlight-bg: #fdeccc; + --tblr-border-width: 1px; + --tblr-border-style: solid; + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-radius: 4px; + --tblr-border-radius-sm: 2px; + --tblr-border-radius-lg: 8px; + --tblr-border-radius-xl: 1rem; + --tblr-border-radius-xxl: 2rem; + --tblr-border-radius-2xl: var(--tblr-border-radius-xxl); + --tblr-border-radius-pill: 100rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --tblr-box-shadow-inset: 0 0 transparent; + --tblr-focus-ring-width: 0.25rem; + --tblr-focus-ring-opacity: 0.25; + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), 0.25); + --tblr-form-valid-color: #2fb344; + --tblr-form-valid-border-color: #2fb344; + --tblr-form-invalid-color: #d63939; + --tblr-form-invalid-border-color: #d63939; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + color-scheme: dark; + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-body-bg: #040a11; + --tblr-body-bg-rgb: 4, 10, 17; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-secondary-color: rgba(252, 253, 254, 0.75); + --tblr-secondary-color-rgb: 252, 253, 254; + --tblr-secondary-bg: #182433; + --tblr-secondary-bg-rgb: 24, 36, 51; + --tblr-tertiary-color: rgba(252, 253, 254, 0.5); + --tblr-tertiary-color-rgb: 252, 253, 254; + --tblr-tertiary-bg: #0e1722; + --tblr-tertiary-bg-rgb: 14, 23, 34; + --tblr-primary-text-emphasis: #6698ca; + --tblr-secondary-text-emphasis: #a3abb4; + --tblr-success-text-emphasis: #82d18f; + --tblr-info-text-emphasis: #8ec2ed; + --tblr-warning-text-emphasis: #faa46a; + --tblr-danger-text-emphasis: #e68888; + --tblr-light-text-emphasis: #f6f8fb; + --tblr-dark-text-emphasis: #dadfe5; + --tblr-primary-bg-subtle: #001121; + --tblr-secondary-bg-subtle: #14171a; + --tblr-success-bg-subtle: #09240e; + --tblr-info-bg-subtle: #0d1f2d; + --tblr-warning-bg-subtle: #311501; + --tblr-danger-bg-subtle: #2b0b0b; + --tblr-light-bg-subtle: #182433; + --tblr-dark-bg-subtle: #0c121a; + --tblr-primary-border-subtle: #003264; + --tblr-secondary-border-subtle: #3d454e; + --tblr-success-border-subtle: #1c6b29; + --tblr-info-border-subtle: #285c87; + --tblr-warning-border-subtle: #943e04; + --tblr-danger-border-subtle: #802222; + --tblr-light-border-subtle: #3a4859; + --tblr-dark-border-subtle: #182433; + --tblr-heading-color: inherit; + --tblr-link-color: #6698ca; + --tblr-link-hover-color: #85add5; + --tblr-link-color-rgb: 102, 152, 202; + --tblr-link-hover-color-rgb: 133, 173, 213; + --tblr-code-color: var(--tblr-gray-300); + --tblr-border-color: #1f2e41; + --tblr-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-form-valid-color: #82d18f; + --tblr-form-valid-border-color: #82d18f; + --tblr-form-invalid-color: #e68888; + --tblr-form-invalid-border-color: #e68888; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--tblr-body-font-family); + font-size: var(--tblr-body-font-size); + font-weight: var(--tblr-body-font-weight); + line-height: var(--tblr-body-line-height); + color: var(--tblr-body-color); + text-align: var(--tblr-body-text-align); + background-color: var(--tblr-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr, .hr { + margin: 2rem 0; + color: inherit; + border: 0; + border-top: var(--tblr-border-width) solid; + opacity: 0.16; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: var(--tblr-spacer); + font-weight: var(--tblr-font-weight-bold); + line-height: 1.2; + color: var(--tblr-heading-color); +} + +h1, .h1 { + font-size: 1.5rem; +} + +h2, .h2 { + font-size: 1.25rem; +} + +h3, .h3 { + font-size: 1rem; +} + +h4, .h4 { + font-size: 0.875rem; +} + +h5, .h5 { + font-size: 0.75rem; +} + +h6, .h6 { + font-size: 0.625rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 600; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 85.714285%; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--tblr-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 1)); + text-decoration: none; +} +a:hover { + --tblr-link-color-rgb: var(--tblr-link-hover-color-rgb); + text-decoration: underline; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--tblr-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 85.714285%; + color: var(--tblr-light); +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 85.714285%; + color: var(--tblr-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.25rem 0.5rem; + font-size: var(--tblr-font-size-h5); + color: var(--tblr-text-secondary-dark); + background-color: var(--tblr-code-bg); + border-radius: 2px; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: var(--tblr-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: 1.5rem; + line-height: inherit; +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 0.875rem; + font-weight: var(--tblr-font-weight-normal); +} + +.display-1 { + font-size: 5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-5 { + font-size: 3rem; + font-weight: 300; + line-height: 1.2; +} + +.display-6 { + font-size: 2rem; + font-weight: 300; + line-height: 1.2; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 85.714285%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 0.875rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 85.714285%; + color: #667382; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--tblr-body-bg); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-sm); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --tblr-breakpoint-xs: 0; + --tblr-breakpoint-sm: 576px; + --tblr-breakpoint-md: 768px; + --tblr-breakpoint-lg: 992px; + --tblr-breakpoint-xl: 1200px; + --tblr-breakpoint-xxl: 1400px; +} + +.row { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--tblr-gutter-y)); + margin-right: calc(-0.5 * var(--tblr-gutter-x)); + margin-left: calc(-0.5 * var(--tblr-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-top: var(--tblr-gutter-y); +} + +.grid { + display: grid; + grid-template-rows: repeat(var(--tblr-rows, 1), 1fr); + grid-template-columns: repeat(var(--tblr-columns, 12), 1fr); + gap: var(--tblr-gap, var(--tblr-page-padding)); +} +.grid .g-col-1 { + grid-column: auto/span 1; +} +.grid .g-col-2 { + grid-column: auto/span 2; +} +.grid .g-col-3 { + grid-column: auto/span 3; +} +.grid .g-col-4 { + grid-column: auto/span 4; +} +.grid .g-col-5 { + grid-column: auto/span 5; +} +.grid .g-col-6 { + grid-column: auto/span 6; +} +.grid .g-col-7 { + grid-column: auto/span 7; +} +.grid .g-col-8 { + grid-column: auto/span 8; +} +.grid .g-col-9 { + grid-column: auto/span 9; +} +.grid .g-col-10 { + grid-column: auto/span 10; +} +.grid .g-col-11 { + grid-column: auto/span 11; +} +.grid .g-col-12 { + grid-column: auto/span 12; +} +.grid .g-start-1 { + grid-column-start: 1; +} +.grid .g-start-2 { + grid-column-start: 2; +} +.grid .g-start-3 { + grid-column-start: 3; +} +.grid .g-start-4 { + grid-column-start: 4; +} +.grid .g-start-5 { + grid-column-start: 5; +} +.grid .g-start-6 { + grid-column-start: 6; +} +.grid .g-start-7 { + grid-column-start: 7; +} +.grid .g-start-8 { + grid-column-start: 8; +} +.grid .g-start-9 { + grid-column-start: 9; +} +.grid .g-start-10 { + grid-column-start: 10; +} +.grid .g-start-11 { + grid-column-start: 11; +} +@media (min-width: 576px) { + .grid .g-col-sm-1 { + grid-column: auto/span 1; + } + .grid .g-col-sm-2 { + grid-column: auto/span 2; + } + .grid .g-col-sm-3 { + grid-column: auto/span 3; + } + .grid .g-col-sm-4 { + grid-column: auto/span 4; + } + .grid .g-col-sm-5 { + grid-column: auto/span 5; + } + .grid .g-col-sm-6 { + grid-column: auto/span 6; + } + .grid .g-col-sm-7 { + grid-column: auto/span 7; + } + .grid .g-col-sm-8 { + grid-column: auto/span 8; + } + .grid .g-col-sm-9 { + grid-column: auto/span 9; + } + .grid .g-col-sm-10 { + grid-column: auto/span 10; + } + .grid .g-col-sm-11 { + grid-column: auto/span 11; + } + .grid .g-col-sm-12 { + grid-column: auto/span 12; + } + .grid .g-start-sm-1 { + grid-column-start: 1; + } + .grid .g-start-sm-2 { + grid-column-start: 2; + } + .grid .g-start-sm-3 { + grid-column-start: 3; + } + .grid .g-start-sm-4 { + grid-column-start: 4; + } + .grid .g-start-sm-5 { + grid-column-start: 5; + } + .grid .g-start-sm-6 { + grid-column-start: 6; + } + .grid .g-start-sm-7 { + grid-column-start: 7; + } + .grid .g-start-sm-8 { + grid-column-start: 8; + } + .grid .g-start-sm-9 { + grid-column-start: 9; + } + .grid .g-start-sm-10 { + grid-column-start: 10; + } + .grid .g-start-sm-11 { + grid-column-start: 11; + } +} +@media (min-width: 768px) { + .grid .g-col-md-1 { + grid-column: auto/span 1; + } + .grid .g-col-md-2 { + grid-column: auto/span 2; + } + .grid .g-col-md-3 { + grid-column: auto/span 3; + } + .grid .g-col-md-4 { + grid-column: auto/span 4; + } + .grid .g-col-md-5 { + grid-column: auto/span 5; + } + .grid .g-col-md-6 { + grid-column: auto/span 6; + } + .grid .g-col-md-7 { + grid-column: auto/span 7; + } + .grid .g-col-md-8 { + grid-column: auto/span 8; + } + .grid .g-col-md-9 { + grid-column: auto/span 9; + } + .grid .g-col-md-10 { + grid-column: auto/span 10; + } + .grid .g-col-md-11 { + grid-column: auto/span 11; + } + .grid .g-col-md-12 { + grid-column: auto/span 12; + } + .grid .g-start-md-1 { + grid-column-start: 1; + } + .grid .g-start-md-2 { + grid-column-start: 2; + } + .grid .g-start-md-3 { + grid-column-start: 3; + } + .grid .g-start-md-4 { + grid-column-start: 4; + } + .grid .g-start-md-5 { + grid-column-start: 5; + } + .grid .g-start-md-6 { + grid-column-start: 6; + } + .grid .g-start-md-7 { + grid-column-start: 7; + } + .grid .g-start-md-8 { + grid-column-start: 8; + } + .grid .g-start-md-9 { + grid-column-start: 9; + } + .grid .g-start-md-10 { + grid-column-start: 10; + } + .grid .g-start-md-11 { + grid-column-start: 11; + } +} +@media (min-width: 992px) { + .grid .g-col-lg-1 { + grid-column: auto/span 1; + } + .grid .g-col-lg-2 { + grid-column: auto/span 2; + } + .grid .g-col-lg-3 { + grid-column: auto/span 3; + } + .grid .g-col-lg-4 { + grid-column: auto/span 4; + } + .grid .g-col-lg-5 { + grid-column: auto/span 5; + } + .grid .g-col-lg-6 { + grid-column: auto/span 6; + } + .grid .g-col-lg-7 { + grid-column: auto/span 7; + } + .grid .g-col-lg-8 { + grid-column: auto/span 8; + } + .grid .g-col-lg-9 { + grid-column: auto/span 9; + } + .grid .g-col-lg-10 { + grid-column: auto/span 10; + } + .grid .g-col-lg-11 { + grid-column: auto/span 11; + } + .grid .g-col-lg-12 { + grid-column: auto/span 12; + } + .grid .g-start-lg-1 { + grid-column-start: 1; + } + .grid .g-start-lg-2 { + grid-column-start: 2; + } + .grid .g-start-lg-3 { + grid-column-start: 3; + } + .grid .g-start-lg-4 { + grid-column-start: 4; + } + .grid .g-start-lg-5 { + grid-column-start: 5; + } + .grid .g-start-lg-6 { + grid-column-start: 6; + } + .grid .g-start-lg-7 { + grid-column-start: 7; + } + .grid .g-start-lg-8 { + grid-column-start: 8; + } + .grid .g-start-lg-9 { + grid-column-start: 9; + } + .grid .g-start-lg-10 { + grid-column-start: 10; + } + .grid .g-start-lg-11 { + grid-column-start: 11; + } +} +@media (min-width: 1200px) { + .grid .g-col-xl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xl-1 { + grid-column-start: 1; + } + .grid .g-start-xl-2 { + grid-column-start: 2; + } + .grid .g-start-xl-3 { + grid-column-start: 3; + } + .grid .g-start-xl-4 { + grid-column-start: 4; + } + .grid .g-start-xl-5 { + grid-column-start: 5; + } + .grid .g-start-xl-6 { + grid-column-start: 6; + } + .grid .g-start-xl-7 { + grid-column-start: 7; + } + .grid .g-start-xl-8 { + grid-column-start: 8; + } + .grid .g-start-xl-9 { + grid-column-start: 9; + } + .grid .g-start-xl-10 { + grid-column-start: 10; + } + .grid .g-start-xl-11 { + grid-column-start: 11; + } +} +@media (min-width: 1400px) { + .grid .g-col-xxl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xxl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xxl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xxl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xxl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xxl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xxl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xxl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xxl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xxl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xxl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xxl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xxl-1 { + grid-column-start: 1; + } + .grid .g-start-xxl-2 { + grid-column-start: 2; + } + .grid .g-start-xxl-3 { + grid-column-start: 3; + } + .grid .g-start-xxl-4 { + grid-column-start: 4; + } + .grid .g-start-xxl-5 { + grid-column-start: 5; + } + .grid .g-start-xxl-6 { + grid-column-start: 6; + } + .grid .g-start-xxl-7 { + grid-column-start: 7; + } + .grid .g-start-xxl-8 { + grid-column-start: 8; + } + .grid .g-start-xxl-9 { + grid-column-start: 9; + } + .grid .g-start-xxl-10 { + grid-column-start: 10; + } + .grid .g-start-xxl-11 { + grid-column-start: 11; + } +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --tblr-gutter-x: 0; +} + +.g-0, +.gy-0 { + --tblr-gutter-y: 0; +} + +.g-1, +.gx-1 { + --tblr-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --tblr-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --tblr-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --tblr-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --tblr-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --tblr-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --tblr-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --tblr-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --tblr-gutter-x: 2rem; +} + +.g-5, +.gy-5 { + --tblr-gutter-y: 2rem; +} + +.g-6, +.gx-6 { + --tblr-gutter-x: 3rem; +} + +.g-6, +.gy-6 { + --tblr-gutter-y: 3rem; +} + +.g-7, +.gx-7 { + --tblr-gutter-x: 5rem; +} + +.g-7, +.gy-7 { + --tblr-gutter-y: 5rem; +} + +.g-8, +.gx-8 { + --tblr-gutter-x: 8rem; +} + +.g-8, +.gy-8 { + --tblr-gutter-y: 8rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --tblr-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --tblr-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --tblr-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --tblr-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --tblr-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --tblr-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --tblr-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --tblr-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --tblr-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --tblr-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --tblr-gutter-x: 2rem; + } + .g-sm-5, + .gy-sm-5 { + --tblr-gutter-y: 2rem; + } + .g-sm-6, + .gx-sm-6 { + --tblr-gutter-x: 3rem; + } + .g-sm-6, + .gy-sm-6 { + --tblr-gutter-y: 3rem; + } + .g-sm-7, + .gx-sm-7 { + --tblr-gutter-x: 5rem; + } + .g-sm-7, + .gy-sm-7 { + --tblr-gutter-y: 5rem; + } + .g-sm-8, + .gx-sm-8 { + --tblr-gutter-x: 8rem; + } + .g-sm-8, + .gy-sm-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --tblr-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --tblr-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --tblr-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --tblr-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --tblr-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --tblr-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --tblr-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --tblr-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --tblr-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --tblr-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --tblr-gutter-x: 2rem; + } + .g-md-5, + .gy-md-5 { + --tblr-gutter-y: 2rem; + } + .g-md-6, + .gx-md-6 { + --tblr-gutter-x: 3rem; + } + .g-md-6, + .gy-md-6 { + --tblr-gutter-y: 3rem; + } + .g-md-7, + .gx-md-7 { + --tblr-gutter-x: 5rem; + } + .g-md-7, + .gy-md-7 { + --tblr-gutter-y: 5rem; + } + .g-md-8, + .gx-md-8 { + --tblr-gutter-x: 8rem; + } + .g-md-8, + .gy-md-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --tblr-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --tblr-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --tblr-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --tblr-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --tblr-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --tblr-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --tblr-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --tblr-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --tblr-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --tblr-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --tblr-gutter-x: 2rem; + } + .g-lg-5, + .gy-lg-5 { + --tblr-gutter-y: 2rem; + } + .g-lg-6, + .gx-lg-6 { + --tblr-gutter-x: 3rem; + } + .g-lg-6, + .gy-lg-6 { + --tblr-gutter-y: 3rem; + } + .g-lg-7, + .gx-lg-7 { + --tblr-gutter-x: 5rem; + } + .g-lg-7, + .gy-lg-7 { + --tblr-gutter-y: 5rem; + } + .g-lg-8, + .gx-lg-8 { + --tblr-gutter-x: 8rem; + } + .g-lg-8, + .gy-lg-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --tblr-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --tblr-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --tblr-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --tblr-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --tblr-gutter-x: 2rem; + } + .g-xl-5, + .gy-xl-5 { + --tblr-gutter-y: 2rem; + } + .g-xl-6, + .gx-xl-6 { + --tblr-gutter-x: 3rem; + } + .g-xl-6, + .gy-xl-6 { + --tblr-gutter-y: 3rem; + } + .g-xl-7, + .gx-xl-7 { + --tblr-gutter-x: 5rem; + } + .g-xl-7, + .gy-xl-7 { + --tblr-gutter-y: 5rem; + } + .g-xl-8, + .gx-xl-8 { + --tblr-gutter-x: 8rem; + } + .g-xl-8, + .gy-xl-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --tblr-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --tblr-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --tblr-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --tblr-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --tblr-gutter-x: 2rem; + } + .g-xxl-5, + .gy-xxl-5 { + --tblr-gutter-y: 2rem; + } + .g-xxl-6, + .gx-xxl-6 { + --tblr-gutter-x: 3rem; + } + .g-xxl-6, + .gy-xxl-6 { + --tblr-gutter-y: 3rem; + } + .g-xxl-7, + .gx-xxl-7 { + --tblr-gutter-x: 5rem; + } + .g-xxl-7, + .gy-xxl-7 { + --tblr-gutter-y: 5rem; + } + .g-xxl-8, + .gx-xxl-8 { + --tblr-gutter-x: 8rem; + } + .g-xxl-8, + .gy-xxl-8 { + --tblr-gutter-y: 8rem; + } +} +.table, .markdown > table { + --tblr-table-color-type: initial; + --tblr-table-bg-type: initial; + --tblr-table-color-state: initial; + --tblr-table-bg-state: initial; + --tblr-table-color: inherit; + --tblr-table-bg: transparent; + --tblr-table-border-color: var(--tblr-border-color-translucent); + --tblr-table-accent-bg: transparent; + --tblr-table-striped-color: inherit; + --tblr-table-striped-bg: var(--tblr-bg-surface-tertiary); + --tblr-table-active-color: inherit; + --tblr-table-active-bg: rgba(0, 0, 0, 0.1); + --tblr-table-hover-color: inherit; + --tblr-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--tblr-table-border-color); +} +.table > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + color: var(--tblr-table-color-state, var(--tblr-table-color-type, var(--tblr-table-color))); + background-color: var(--tblr-table-bg); + border-bottom-width: var(--tblr-border-width); + box-shadow: inset 0 0 0 9999px var(--tblr-table-bg-state, var(--tblr-table-bg-type, var(--tblr-table-accent-bg))); +} +.table > tbody, .markdown > table > tbody { + vertical-align: inherit; +} +.table > thead, .markdown > table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent); +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > *, .markdown > table > :not(caption) > * { + border-width: var(--tblr-border-width) 0; +} +.table-bordered > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + border-width: 0 var(--tblr-border-width); +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(even) > * { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-active { + --tblr-table-color-state: var(--tblr-table-active-color); + --tblr-table-bg-state: var(--tblr-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --tblr-table-color-state: var(--tblr-table-hover-color); + --tblr-table-bg-state: var(--tblr-table-hover-bg); +} + +.table-primary { + --tblr-table-color: #182433; + --tblr-table-bg: #ccdded; + --tblr-table-border-color: #bacbda; + --tblr-table-striped-bg: #c3d4e4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #bacbda; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #bfcfdf; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-secondary { + --tblr-table-color: #182433; + --tblr-table-bg: #e0e3e6; + --tblr-table-border-color: #ccd0d4; + --tblr-table-striped-bg: #d6d9dd; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #ccd0d4; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #d1d5d9; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-success { + --tblr-table-color: #182433; + --tblr-table-bg: #d5f0da; + --tblr-table-border-color: #c2dcc9; + --tblr-table-striped-bg: #cce6d2; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c2dcc9; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #c7e1cd; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-info { + --tblr-table-color: #182433; + --tblr-table-bg: #d9ebf9; + --tblr-table-border-color: #c6d7e5; + --tblr-table-striped-bg: #cfe1ef; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c6d7e5; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #cbdcea; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-warning { + --tblr-table-color: #182433; + --tblr-table-bg: #fde1cd; + --tblr-table-border-color: #e6cebe; + --tblr-table-striped-bg: #f2d8c5; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e6cebe; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ecd3c1; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-danger { + --tblr-table-color: #182433; + --tblr-table-bg: #f7d7d7; + --tblr-table-border-color: #e1c5c7; + --tblr-table-striped-bg: #eccecf; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e1c5c7; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #e6cacb; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-light { + --tblr-table-color: #182433; + --tblr-table-bg: #fcfdfe; + --tblr-table-border-color: #e5e7ea; + --tblr-table-striped-bg: #f1f2f4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e5e7ea; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ebedef; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-dark { + --tblr-table-color: #fcfdfe; + --tblr-table-bg: #182433; + --tblr-table-border-color: #2f3a47; + --tblr-table-striped-bg: #232f3d; + --tblr-table-striped-color: #fcfdfe; + --tblr-table-active-bg: #2f3a47; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #293442; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; + font-size: 0.875rem; + font-weight: var(--tblr-font-weight-medium); +} + +.col-form-label { + padding-top: calc(0.5625rem + var(--tblr-border-width)); + padding-bottom: calc(0.5625rem + var(--tblr-border-width)); + margin-bottom: 0; + font-size: inherit; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.4285714286; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--tblr-border-width)); + padding-bottom: calc(0.5rem + var(--tblr-border-width)); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.125rem + var(--tblr-border-width)); + padding-bottom: calc(0.125rem + var(--tblr-border-width)); + font-size: 0.75rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.form-control { + display: block; + width: 100%; + padding: 0.5625rem 0.75rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-clip: padding-box; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--tblr-body-color); + background-color: var(--tblr-bg-forms); + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.4285714286em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-webkit-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::placeholder { + color: #929dab; + opacity: 1; +} +.form-control:disabled { + background-color: var(--tblr-bg-surface-secondary); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--tblr-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-secondary-bg); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.5625rem 0; + margin-bottom: 0; + line-height: 1.4285714286; + color: var(--tblr-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--tblr-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} +.form-control-sm::file-selector-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} + +.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} + +textarea.form-control { + min-height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5625rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-select { + --tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.5625rem 2.25rem 0.5625rem 0.75rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-image: var(--tblr-form-select-bg-img), var(--tblr-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--tblr-bg-surface-secondary); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--tblr-body-color); +} + +.form-select-sm { + padding-top: 0.125rem; + padding-bottom: 0.125rem; + padding-left: 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +[data-bs-theme=dark] .form-select, body[data-bs-theme=dark] [data-bs-theme=light] .form-select { + --tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23fcfdfe' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} + +.form-check { + display: block; + min-height: 1.25rem; + padding-left: 2rem; + margin-bottom: 0.75rem; +} +.form-check .form-check-input { + float: left; + margin-left: -2rem; +} + +.form-check-reverse { + padding-right: 2rem; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -2rem; + margin-left: 0; +} + +.form-check-input { + --tblr-form-check-bg: var(--tblr-bg-forms); + width: 1.25rem; + height: 1.25rem; + margin-top: 0.0892857143rem; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-form-check-bg); + background-image: var(--tblr-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: var(--tblr-border-radius); +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #80aad3; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-check-input:checked { + background-color: var(--tblr-primary); + border-color: var(--tblr-border-color-translucent); +} +.form-check-input:checked[type=checkbox] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: var(--tblr-primary); + border-color: var(--tblr-primary); + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.7; +} + +.form-switch { + padding-left: 2.5rem; +} +.form-switch .form-check-input { + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23dadfe5'/%3e%3c/svg%3e"); + width: 2rem; + margin-left: -2.5rem; + background-image: var(--tblr-form-switch-bg); + background-position: left center; + border-radius: 2rem; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2380aad3'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5rem; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5rem; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.4; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} + +.form-range { + width: 100%; + height: 1.25rem; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.375rem; + -webkit-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b3cce4; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b3cce4; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--tblr-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--tblr-secondary-color); +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--tblr-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--tblr-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + z-index: 2; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--tblr-border-width) solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::-webkit-input-placeholder, .form-floating > .form-control-plaintext::-webkit-input-placeholder { + color: transparent; +} +.form-floating > .form-control:-ms-input-placeholder, .form-floating > .form-control-plaintext:-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::-ms-input-placeholder, .form-floating > .form-control-plaintext::-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-ms-input-placeholder), .form-floating > .form-control-plaintext:not(:-ms-input-placeholder) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--tblr-border-width) 0; +} +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #667382; +} +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--tblr-bg-surface-secondary); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.5625rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-secondary); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-bg-surface-secondary); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(var(--tblr-border-width) * -1); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-success); + border-radius: var(--tblr-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--tblr-form-valid-border-color); + padding-right: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) right calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--tblr-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--tblr-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-danger); + border-radius: var(--tblr-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--tblr-form-invalid-border-color); + padding-right: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) right calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--tblr-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--tblr-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --tblr-btn-padding-x: 1rem; + --tblr-btn-padding-y: 0.5625rem; + --tblr-btn-font-family: var(--tblr-font-sans-serif); + --tblr-btn-font-size: 0.875rem; + --tblr-btn-font-weight: var(--tblr-font-weight-medium); + --tblr-btn-line-height: 1.4285714286; + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-width: var(--tblr-border-width); + --tblr-btn-border-color: transparent; + --tblr-btn-border-radius: var(--tblr-border-radius); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-disabled-opacity: 0.4; + --tblr-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--tblr-btn-padding-y) var(--tblr-btn-padding-x); + font-family: var(--tblr-btn-font-family); + font-size: var(--tblr-btn-font-size); + font-weight: var(--tblr-btn-font-weight); + line-height: var(--tblr-btn-line-height); + color: var(--tblr-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-btn-border-width) solid var(--tblr-btn-border-color); + border-radius: var(--tblr-btn-border-radius); + background-color: var(--tblr-btn-bg); + box-shadow: var(--tblr-btn-box-shadow); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--tblr-btn-hover-color); + text-decoration: none; + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--tblr-btn-color); + background-color: var(--tblr-btn-bg); + border-color: var(--tblr-btn-border-color); +} +.btn:focus-visible { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--tblr-btn-active-color); + background-color: var(--tblr-btn-active-bg); + border-color: var(--tblr-btn-active-border-color); + box-shadow: var(--tblr-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--tblr-btn-active-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--tblr-btn-disabled-color); + pointer-events: none; + background-color: var(--tblr-btn-disabled-bg); + border-color: var(--tblr-btn-disabled-border-color); + opacity: var(--tblr-btn-disabled-opacity); + box-shadow: none; +} + +.btn-link { + --tblr-btn-font-weight: 400; + --tblr-btn-color: var(--tblr-link-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-link-hover-color); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-color: var(--tblr-link-hover-color); + --tblr-btn-active-border-color: transparent; + --tblr-btn-disabled-color: #667382; + --tblr-btn-disabled-border-color: transparent; + --tblr-btn-box-shadow: 0 0 0 #000; + --tblr-btn-focus-shadow-rgb: 38, 109, 179; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--tblr-btn-color); +} +.btn-link:hover { + color: var(--tblr-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-padding-y: 0.5rem; + --tblr-btn-padding-x: 0.75rem; + --tblr-btn-font-size: 1.25rem; + --tblr-btn-border-radius: var(--tblr-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-padding-y: 0.125rem; + --tblr-btn-padding-x: 0.25rem; + --tblr-btn-font-size: 0.75rem; + --tblr-btn-border-radius: var(--tblr-border-radius-sm); +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(-45deg); +} + +.dropdown-menu { + --tblr-dropdown-zindex: 1000; + --tblr-dropdown-min-width: 11rem; + --tblr-dropdown-padding-x: 0; + --tblr-dropdown-padding-y: 0.25rem; + --tblr-dropdown-spacer: 1px; + --tblr-dropdown-font-size: 0.875rem; + --tblr-dropdown-color: var(--tblr-body-color); + --tblr-dropdown-bg: var(--tblr-bg-surface); + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-border-radius: var(--tblr-border-radius); + --tblr-dropdown-border-width: var(--tblr-border-width); + --tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width)); + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-divider-margin-y: var(--tblr-spacer); + --tblr-dropdown-box-shadow: var(--tblr-box-shadow-dropdown); + --tblr-dropdown-link-color: inherit; + --tblr-dropdown-link-hover-color: inherit; + --tblr-dropdown-link-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color); + --tblr-dropdown-item-padding-x: 0.75rem; + --tblr-dropdown-item-padding-y: 0.5rem; + --tblr-dropdown-header-color: #667382; + --tblr-dropdown-header-padding-x: 0.75rem; + --tblr-dropdown-header-padding-y: 0.25rem; + position: absolute; + z-index: var(--tblr-dropdown-zindex); + display: none; + min-width: var(--tblr-dropdown-min-width); + padding: var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x); + margin: 0; + font-size: var(--tblr-dropdown-font-size); + color: var(--tblr-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--tblr-dropdown-bg); + background-clip: padding-box; + border: var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color); + border-radius: var(--tblr-dropdown-border-radius); + box-shadow: var(--tblr-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--tblr-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--tblr-dropdown-spacer); +} +.dropup .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(135deg); +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--tblr-dropdown-spacer); +} +.dropend .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(-135deg); +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--tblr-dropdown-spacer); +} +.dropstart .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(45deg); +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--tblr-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--tblr-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--tblr-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--tblr-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--tblr-dropdown-link-hover-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--tblr-dropdown-link-active-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--tblr-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.765625rem; + color: var(--tblr-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + color: var(--tblr-dropdown-link-color); +} + +.dropdown-menu-dark { + --tblr-dropdown-color: #dadfe5; + --tblr-dropdown-bg: #182433; + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-box-shadow: ; + --tblr-dropdown-link-color: #dadfe5; + --tblr-dropdown-link-hover-color: #ffffff; + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: #929dab; + --tblr-dropdown-header-color: #929dab; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: var(--tblr-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: calc(var(--tblr-border-width) * -1); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.1875rem; + padding-left: 0.1875rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--tblr-border-width) * -1); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --tblr-nav-link-padding-x: 0.75rem; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-secondary); + --tblr-nav-link-hover-color: var(--tblr-link-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-disabled-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x); + font-size: var(--tblr-nav-link-font-size); + font-weight: var(--tblr-nav-link-font-weight); + color: var(--tblr-nav-link-color); + background: none; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--tblr-nav-link-hover-color); + text-decoration: none; +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--tblr-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --tblr-nav-tabs-border-width: var(--tblr-border-width); + --tblr-nav-tabs-border-color: var(--tblr-border-color); + --tblr-nav-tabs-border-radius: var(--tblr-border-radius); + --tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + --tblr-nav-tabs-link-active-color: var(--tblr-body-color); + --tblr-nav-tabs-link-active-bg: var(--tblr-body-bg); + --tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + border-bottom: var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--tblr-nav-tabs-border-width)); + border: var(--tblr-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--tblr-nav-tabs-border-radius); + border-top-right-radius: var(--tblr-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--tblr-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--tblr-nav-tabs-link-active-color); + background-color: var(--tblr-nav-tabs-link-active-bg); + border-color: var(--tblr-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--tblr-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --tblr-nav-pills-border-radius: var(--tblr-border-radius); + --tblr-nav-pills-link-active-color: var(--tblr-primary); + --tblr-nav-pills-link-active-bg: var(--tblr-active-bg); +} +.nav-pills .nav-link { + border-radius: var(--tblr-nav-pills-border-radius); +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--tblr-nav-pills-link-active-color); + background-color: var(--tblr-nav-pills-link-active-bg); +} + +.nav-underline { + --tblr-nav-underline-gap: 1rem; + --tblr-nav-underline-border-width: 0.125rem; + --tblr-nav-underline-link-active-color: var(--tblr-emphasis-color); + gap: var(--tblr-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--tblr-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 600; + color: var(--tblr-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --tblr-navbar-padding-x: 0; + --tblr-navbar-padding-y: 0.25rem; + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-hover-color: rgba(var(--tblr-emphasis-color-rgb), 0.8); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: var(--tblr-body-color) color; + --tblr-navbar-brand-padding-y: 0.5rem; + --tblr-navbar-brand-margin-end: 1rem; + --tblr-navbar-brand-font-size: 1.25rem; + --tblr-navbar-brand-color: var(--tblr-body-color); + --tblr-navbar-brand-hover-color: var(--tblr-body-color) color; + --tblr-navbar-nav-link-padding-x: 0.75rem; + --tblr-navbar-toggler-padding-y: 0; + --tblr-navbar-toggler-padding-x: 0; + --tblr-navbar-toggler-font-size: 1rem; + --tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), 0.15); + --tblr-navbar-toggler-border-radius: var(--tblr-border-radius); + --tblr-navbar-toggler-focus-width: 0; + --tblr-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--tblr-navbar-brand-padding-y); + padding-bottom: var(--tblr-navbar-brand-padding-y); + margin-right: var(--tblr-navbar-brand-margin-end); + font-size: var(--tblr-navbar-brand-font-size); + color: var(--tblr-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--tblr-navbar-brand-hover-color); + text-decoration: none; +} + +.navbar-nav { + --tblr-nav-link-padding-x: 0; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-navbar-color); + --tblr-nav-link-hover-color: var(--tblr-navbar-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--tblr-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--tblr-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--tblr-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x); + font-size: var(--tblr-navbar-toggler-font-size); + line-height: 1; + color: var(--tblr-navbar-color); + background-color: transparent; + border: var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color); + border-radius: var(--tblr-navbar-toggler-border-radius); + transition: var(--tblr-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--tblr-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--tblr-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--tblr-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--tblr-navbar-nav-link-padding-x); + padding-left: var(--tblr-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark, +.navbar[data-bs-theme=dark], +body[data-bs-theme=dark] .navbar[data-bs-theme=light] { + --tblr-navbar-color: rgba(255, 255, 255, 0.7); + --tblr-navbar-hover-color: rgba(255, 255, 255, 0.75); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: #ffffff; + --tblr-navbar-brand-color: #ffffff; + --tblr-navbar-brand-hover-color: #ffffff; + --tblr-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +[data-bs-theme=dark] .navbar-toggler-icon, body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon { + --tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --tblr-card-spacer-y: 1.25rem; + --tblr-card-spacer-x: 1.25rem; + --tblr-card-title-spacer-y: 1.25rem; + --tblr-card-title-color: ; + --tblr-card-subtitle-color: ; + --tblr-card-border-width: var(--tblr-border-width); + --tblr-card-border-color: var(--tblr-border-color-translucent); + --tblr-card-border-radius: var(--tblr-border-radius); + --tblr-card-box-shadow: var(--tblr-shadow-card); + --tblr-card-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-card-cap-padding-y: 1.25rem; + --tblr-card-cap-padding-x: 1.25rem; + --tblr-card-cap-bg: var(--tblr-bg-surface-tertiary); + --tblr-card-cap-color: inherit; + --tblr-card-height: ; + --tblr-card-color: inherit; + --tblr-card-bg: var(--tblr-bg-surface); + --tblr-card-img-overlay-padding: 1rem; + --tblr-card-group-margin: 1.5rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--tblr-card-height); + color: var(--tblr-body-color); + word-wrap: break-word; + background-color: var(--tblr-card-bg); + background-clip: border-box; + border: var(--tblr-card-border-width) solid var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius); + box-shadow: var(--tblr-card-box-shadow); +} +.card > hr, .card > .hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--tblr-card-inner-border-radius); + border-top-right-radius: var(--tblr-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--tblr-card-inner-border-radius); + border-bottom-left-radius: var(--tblr-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--tblr-card-spacer-y) var(--tblr-card-spacer-x); + color: var(--tblr-card-color); +} + +.card-title { + margin-bottom: var(--tblr-card-title-spacer-y); + color: var(--tblr-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--tblr-card-title-spacer-y)); + margin-bottom: 0; + color: var(--tblr-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: var(--tblr-card-spacer-x); +} + +.card-header { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + margin-bottom: 0; + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-bottom: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-header:first-child { + border-radius: var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-top: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--tblr-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--tblr-card-bg); + border-bottom-color: var(--tblr-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--tblr-card-img-overlay-padding); + border-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--tblr-card-inner-border-radius); + border-top-right-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--tblr-card-inner-border-radius); + border-bottom-left-radius: var(--tblr-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--tblr-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); + --tblr-accordion-bg: transparent; + --tblr-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --tblr-accordion-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-border-width: var(--tblr-border-width); + --tblr-accordion-border-radius: var(--tblr-border-radius); + --tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-accordion-btn-padding-x: 1.25rem; + --tblr-accordion-btn-padding-y: 1rem; + --tblr-accordion-btn-color: var(--tblr-body-color); + --tblr-accordion-btn-bg: transparent; + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --tblr-accordion-btn-icon-width: 1rem; + --tblr-accordion-btn-icon-transform: rotate(-180deg); + --tblr-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --tblr-accordion-btn-focus-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-accordion-body-padding-x: 1.25rem; + --tblr-accordion-body-padding-y: 1rem; + --tblr-accordion-active-color: inherit; + --tblr-accordion-active-bg: transparent; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x); + font-size: 0.875rem; + color: var(--tblr-accordion-btn-color); + text-align: left; + background-color: var(--tblr-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--tblr-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--tblr-accordion-active-color); + background-color: var(--tblr-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--tblr-accordion-btn-active-icon); + transform: var(--tblr-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--tblr-accordion-btn-icon-width); + height: var(--tblr-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--tblr-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--tblr-accordion-btn-icon-width); + transition: var(--tblr-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--tblr-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--tblr-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--tblr-accordion-color); + background-color: var(--tblr-accordion-bg); + border: var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--tblr-accordion-border-radius); + border-top-right-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--tblr-accordion-inner-border-radius); + border-top-right-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--tblr-accordion-border-radius); + border-bottom-left-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--tblr-accordion-inner-border-radius); + border-bottom-left-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--tblr-accordion-border-radius); + border-bottom-left-radius: var(--tblr-accordion-border-radius); +} + +.accordion-body { + padding: var(--tblr-accordion-body-padding-y) var(--tblr-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.breadcrumb { + --tblr-breadcrumb-padding-x: 0; + --tblr-breadcrumb-padding-y: 0; + --tblr-breadcrumb-margin-bottom: 1rem; + --tblr-breadcrumb-bg: ; + --tblr-breadcrumb-border-radius: ; + --tblr-breadcrumb-divider-color: var(--tblr-secondary); + --tblr-breadcrumb-item-padding-x: 0.5rem; + --tblr-breadcrumb-item-active-color: inherit; + display: flex; + flex-wrap: wrap; + padding: var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x); + margin-bottom: var(--tblr-breadcrumb-margin-bottom); + font-size: var(--tblr-breadcrumb-font-size); + list-style: none; + background-color: var(--tblr-breadcrumb-bg); + border-radius: var(--tblr-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--tblr-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--tblr-breadcrumb-item-padding-x); + color: var(--tblr-breadcrumb-divider-color); + content: var(--tblr-breadcrumb-divider, "/") /* rtl: var(--tblr-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--tblr-breadcrumb-item-active-color); +} + +.pagination { + --tblr-pagination-padding-x: 0.25rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.875rem; + --tblr-pagination-color: var(--tblr-secondary); + --tblr-pagination-bg: transparent; + --tblr-pagination-border-width: 0; + --tblr-pagination-border-color: var(--tblr-border-color); + --tblr-pagination-border-radius: var(--tblr-border-radius); + --tblr-pagination-hover-color: var(--tblr-link-hover-color); + --tblr-pagination-hover-bg: var(--tblr-tertiary-bg); + --tblr-pagination-hover-border-color: var(--tblr-border-color); + --tblr-pagination-focus-color: var(--tblr-link-hover-color); + --tblr-pagination-focus-bg: var(--tblr-secondary-bg); + --tblr-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-pagination-active-color: #ffffff; + --tblr-pagination-active-bg: var(--tblr-primary); + --tblr-pagination-active-border-color: var(--tblr-primary); + --tblr-pagination-disabled-color: var(--tblr-disabled-color); + --tblr-pagination-disabled-bg: transparent; + --tblr-pagination-disabled-border-color: var(--tblr-border-color); + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x); + font-size: var(--tblr-pagination-font-size); + color: var(--tblr-pagination-color); + background-color: var(--tblr-pagination-bg); + border: var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--tblr-pagination-hover-color); + text-decoration: none; + background-color: var(--tblr-pagination-hover-bg); + border-color: var(--tblr-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--tblr-pagination-focus-color); + background-color: var(--tblr-pagination-focus-bg); + outline: 0; + box-shadow: var(--tblr-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--tblr-pagination-active-color); + background-color: var(--tblr-pagination-active-bg); + border-color: var(--tblr-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--tblr-pagination-disabled-color); + pointer-events: none; + background-color: var(--tblr-pagination-disabled-bg); + border-color: var(--tblr-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: calc(0 * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--tblr-pagination-border-radius); + border-bottom-left-radius: var(--tblr-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--tblr-pagination-border-radius); + border-bottom-right-radius: var(--tblr-pagination-border-radius); +} + +.pagination-lg { + --tblr-pagination-padding-x: 1.5rem; + --tblr-pagination-padding-y: 0.75rem; + --tblr-pagination-font-size: 1.09375rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-lg); +} + +.pagination-sm { + --tblr-pagination-padding-x: 0.5rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.765625rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-sm); +} + +.badge { + --tblr-badge-padding-x: 0.5em; + --tblr-badge-padding-y: 0.25em; + --tblr-badge-font-size: 85.714285%; + --tblr-badge-font-weight: var(--tblr-font-weight-medium); + --tblr-badge-color: var(--tblr-secondary); + --tblr-badge-border-radius: var(--tblr-border-radius); + display: inline-block; + padding: var(--tblr-badge-padding-y) var(--tblr-badge-padding-x); + font-size: var(--tblr-badge-font-size); + font-weight: var(--tblr-badge-font-weight); + line-height: 1; + color: var(--tblr-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--tblr-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --tblr-alert-bg: transparent; + --tblr-alert-padding-x: 1rem; + --tblr-alert-padding-y: 0.75rem; + --tblr-alert-margin-bottom: 1rem; + --tblr-alert-color: inherit; + --tblr-alert-border-color: transparent; + --tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color); + --tblr-alert-border-radius: var(--tblr-border-radius); + --tblr-alert-link-color: inherit; + position: relative; + padding: var(--tblr-alert-padding-y) var(--tblr-alert-padding-x); + margin-bottom: var(--tblr-alert-margin-bottom); + color: var(--tblr-alert-color); + background-color: var(--tblr-alert-bg); + border: var(--tblr-alert-border); + border-radius: var(--tblr-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: var(--tblr-font-weight-bold); + color: var(--tblr-alert-link-color); +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 0.9375rem 1rem; +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary-text-emphasis); + --tblr-alert-bg: var(--tblr-primary-bg-subtle); + --tblr-alert-border-color: var(--tblr-primary-border-subtle); + --tblr-alert-link-color: var(--tblr-primary-text-emphasis); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary-text-emphasis); + --tblr-alert-bg: var(--tblr-secondary-bg-subtle); + --tblr-alert-border-color: var(--tblr-secondary-border-subtle); + --tblr-alert-link-color: var(--tblr-secondary-text-emphasis); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success-text-emphasis); + --tblr-alert-bg: var(--tblr-success-bg-subtle); + --tblr-alert-border-color: var(--tblr-success-border-subtle); + --tblr-alert-link-color: var(--tblr-success-text-emphasis); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info-text-emphasis); + --tblr-alert-bg: var(--tblr-info-bg-subtle); + --tblr-alert-border-color: var(--tblr-info-border-subtle); + --tblr-alert-link-color: var(--tblr-info-text-emphasis); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning-text-emphasis); + --tblr-alert-bg: var(--tblr-warning-bg-subtle); + --tblr-alert-border-color: var(--tblr-warning-border-subtle); + --tblr-alert-link-color: var(--tblr-warning-text-emphasis); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger-text-emphasis); + --tblr-alert-bg: var(--tblr-danger-bg-subtle); + --tblr-alert-border-color: var(--tblr-danger-border-subtle); + --tblr-alert-link-color: var(--tblr-danger-text-emphasis); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light-text-emphasis); + --tblr-alert-bg: var(--tblr-light-bg-subtle); + --tblr-alert-border-color: var(--tblr-light-border-subtle); + --tblr-alert-link-color: var(--tblr-light-text-emphasis); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark-text-emphasis); + --tblr-alert-bg: var(--tblr-dark-bg-subtle); + --tblr-alert-border-color: var(--tblr-dark-border-subtle); + --tblr-alert-link-color: var(--tblr-dark-text-emphasis); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted-text-emphasis); + --tblr-alert-bg: var(--tblr-muted-bg-subtle); + --tblr-alert-border-color: var(--tblr-muted-border-subtle); + --tblr-alert-link-color: var(--tblr-muted-text-emphasis); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue-text-emphasis); + --tblr-alert-bg: var(--tblr-blue-bg-subtle); + --tblr-alert-border-color: var(--tblr-blue-border-subtle); + --tblr-alert-link-color: var(--tblr-blue-text-emphasis); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure-text-emphasis); + --tblr-alert-bg: var(--tblr-azure-bg-subtle); + --tblr-alert-border-color: var(--tblr-azure-border-subtle); + --tblr-alert-link-color: var(--tblr-azure-text-emphasis); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo-text-emphasis); + --tblr-alert-bg: var(--tblr-indigo-bg-subtle); + --tblr-alert-border-color: var(--tblr-indigo-border-subtle); + --tblr-alert-link-color: var(--tblr-indigo-text-emphasis); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple-text-emphasis); + --tblr-alert-bg: var(--tblr-purple-bg-subtle); + --tblr-alert-border-color: var(--tblr-purple-border-subtle); + --tblr-alert-link-color: var(--tblr-purple-text-emphasis); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink-text-emphasis); + --tblr-alert-bg: var(--tblr-pink-bg-subtle); + --tblr-alert-border-color: var(--tblr-pink-border-subtle); + --tblr-alert-link-color: var(--tblr-pink-text-emphasis); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red-text-emphasis); + --tblr-alert-bg: var(--tblr-red-bg-subtle); + --tblr-alert-border-color: var(--tblr-red-border-subtle); + --tblr-alert-link-color: var(--tblr-red-text-emphasis); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange-text-emphasis); + --tblr-alert-bg: var(--tblr-orange-bg-subtle); + --tblr-alert-border-color: var(--tblr-orange-border-subtle); + --tblr-alert-link-color: var(--tblr-orange-text-emphasis); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow-text-emphasis); + --tblr-alert-bg: var(--tblr-yellow-bg-subtle); + --tblr-alert-border-color: var(--tblr-yellow-border-subtle); + --tblr-alert-link-color: var(--tblr-yellow-text-emphasis); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime-text-emphasis); + --tblr-alert-bg: var(--tblr-lime-bg-subtle); + --tblr-alert-border-color: var(--tblr-lime-border-subtle); + --tblr-alert-link-color: var(--tblr-lime-text-emphasis); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green-text-emphasis); + --tblr-alert-bg: var(--tblr-green-bg-subtle); + --tblr-alert-border-color: var(--tblr-green-border-subtle); + --tblr-alert-link-color: var(--tblr-green-text-emphasis); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal-text-emphasis); + --tblr-alert-bg: var(--tblr-teal-bg-subtle); + --tblr-alert-border-color: var(--tblr-teal-border-subtle); + --tblr-alert-link-color: var(--tblr-teal-text-emphasis); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan-text-emphasis); + --tblr-alert-bg: var(--tblr-cyan-bg-subtle); + --tblr-alert-border-color: var(--tblr-cyan-border-subtle); + --tblr-alert-link-color: var(--tblr-cyan-text-emphasis); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook-text-emphasis); + --tblr-alert-bg: var(--tblr-facebook-bg-subtle); + --tblr-alert-border-color: var(--tblr-facebook-border-subtle); + --tblr-alert-link-color: var(--tblr-facebook-text-emphasis); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter-text-emphasis); + --tblr-alert-bg: var(--tblr-twitter-bg-subtle); + --tblr-alert-border-color: var(--tblr-twitter-border-subtle); + --tblr-alert-link-color: var(--tblr-twitter-text-emphasis); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin-text-emphasis); + --tblr-alert-bg: var(--tblr-linkedin-bg-subtle); + --tblr-alert-border-color: var(--tblr-linkedin-border-subtle); + --tblr-alert-link-color: var(--tblr-linkedin-text-emphasis); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google-text-emphasis); + --tblr-alert-bg: var(--tblr-google-bg-subtle); + --tblr-alert-border-color: var(--tblr-google-border-subtle); + --tblr-alert-link-color: var(--tblr-google-text-emphasis); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube-text-emphasis); + --tblr-alert-bg: var(--tblr-youtube-bg-subtle); + --tblr-alert-border-color: var(--tblr-youtube-border-subtle); + --tblr-alert-link-color: var(--tblr-youtube-text-emphasis); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo-text-emphasis); + --tblr-alert-bg: var(--tblr-vimeo-bg-subtle); + --tblr-alert-border-color: var(--tblr-vimeo-border-subtle); + --tblr-alert-link-color: var(--tblr-vimeo-text-emphasis); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble-text-emphasis); + --tblr-alert-bg: var(--tblr-dribbble-bg-subtle); + --tblr-alert-border-color: var(--tblr-dribbble-border-subtle); + --tblr-alert-link-color: var(--tblr-dribbble-text-emphasis); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github-text-emphasis); + --tblr-alert-bg: var(--tblr-github-bg-subtle); + --tblr-alert-border-color: var(--tblr-github-border-subtle); + --tblr-alert-link-color: var(--tblr-github-text-emphasis); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram-text-emphasis); + --tblr-alert-bg: var(--tblr-instagram-bg-subtle); + --tblr-alert-border-color: var(--tblr-instagram-border-subtle); + --tblr-alert-link-color: var(--tblr-instagram-text-emphasis); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest-text-emphasis); + --tblr-alert-bg: var(--tblr-pinterest-bg-subtle); + --tblr-alert-border-color: var(--tblr-pinterest-border-subtle); + --tblr-alert-link-color: var(--tblr-pinterest-text-emphasis); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk-text-emphasis); + --tblr-alert-bg: var(--tblr-vk-bg-subtle); + --tblr-alert-border-color: var(--tblr-vk-border-subtle); + --tblr-alert-link-color: var(--tblr-vk-text-emphasis); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss-text-emphasis); + --tblr-alert-bg: var(--tblr-rss-bg-subtle); + --tblr-alert-border-color: var(--tblr-rss-border-subtle); + --tblr-alert-link-color: var(--tblr-rss-text-emphasis); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr-text-emphasis); + --tblr-alert-bg: var(--tblr-flickr-bg-subtle); + --tblr-alert-border-color: var(--tblr-flickr-border-subtle); + --tblr-alert-link-color: var(--tblr-flickr-text-emphasis); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket-text-emphasis); + --tblr-alert-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-alert-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-alert-link-color: var(--tblr-bitbucket-text-emphasis); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler-text-emphasis); + --tblr-alert-bg: var(--tblr-tabler-bg-subtle); + --tblr-alert-border-color: var(--tblr-tabler-border-subtle); + --tblr-alert-link-color: var(--tblr-tabler-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 0.5rem; + } +} +.progress, +.progress-stacked { + --tblr-progress-height: 0.5rem; + --tblr-progress-font-size: 0.65625rem; + --tblr-progress-bg: var(--tblr-border-color); + --tblr-progress-border-radius: var(--tblr-border-radius); + --tblr-progress-box-shadow: var(--tblr-box-shadow-inset); + --tblr-progress-bar-color: #ffffff; + --tblr-progress-bar-bg: var(--tblr-primary); + --tblr-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--tblr-progress-height); + overflow: hidden; + font-size: var(--tblr-progress-font-size); + background-color: var(--tblr-progress-bg); + border-radius: var(--tblr-progress-border-radius); + box-shadow: var(--tblr-progress-box-shadow); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--tblr-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-progress-bar-bg); + transition: var(--tblr-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--tblr-progress-height) var(--tblr-progress-height); +} + +.progress-stacked > .progress { + overflow: visible; +} + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --tblr-list-group-color: var(--tblr-body-color); + --tblr-list-group-bg: inherit; + --tblr-list-group-border-color: var(--tblr-border-color); + --tblr-list-group-border-width: var(--tblr-border-width); + --tblr-list-group-border-radius: var(--tblr-border-radius); + --tblr-list-group-item-padding-x: 1.25rem; + --tblr-list-group-item-padding-y: 1.25rem; + --tblr-list-group-action-color: inherit; + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-list-group-action-active-color: var(--tblr-body-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-bg); + --tblr-list-group-disabled-color: var(--tblr-secondary-color); + --tblr-list-group-disabled-bg: inherit; + --tblr-list-group-active-color: inherit; + --tblr-list-group-active-bg: var(--tblr-active-bg); + --tblr-list-group-active-border-color: var(--tblr-border-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--tblr-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--tblr-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--tblr-list-group-action-hover-color); + text-decoration: none; + background-color: var(--tblr-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--tblr-list-group-action-active-color); + background-color: var(--tblr-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x); + color: var(--tblr-list-group-color); + background-color: var(--tblr-list-group-bg); + border: var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--tblr-list-group-disabled-color); + pointer-events: none; + background-color: var(--tblr-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--tblr-list-group-active-color); + background-color: var(--tblr-list-group-active-bg); + border-color: var(--tblr-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--tblr-list-group-border-width)); + border-top-width: var(--tblr-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--tblr-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--tblr-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--tblr-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--tblr-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--tblr-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--tblr-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--tblr-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--tblr-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--tblr-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--tblr-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--tblr-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--tblr-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--tblr-list-group-border-width)); + border-left-width: var(--tblr-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--tblr-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --tblr-list-group-color: var(--tblr-primary-text-emphasis); + --tblr-list-group-bg: var(--tblr-primary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-primary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-active-color: var(--tblr-primary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-primary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis); +} + +.list-group-item-secondary { + --tblr-list-group-color: var(--tblr-secondary-text-emphasis); + --tblr-list-group-bg: var(--tblr-secondary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-active-color: var(--tblr-secondary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis); +} + +.list-group-item-success { + --tblr-list-group-color: var(--tblr-success-text-emphasis); + --tblr-list-group-bg: var(--tblr-success-bg-subtle); + --tblr-list-group-border-color: var(--tblr-success-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-success-border-subtle); + --tblr-list-group-active-color: var(--tblr-success-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-success-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-success-text-emphasis); +} + +.list-group-item-info { + --tblr-list-group-color: var(--tblr-info-text-emphasis); + --tblr-list-group-bg: var(--tblr-info-bg-subtle); + --tblr-list-group-border-color: var(--tblr-info-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-info-border-subtle); + --tblr-list-group-active-color: var(--tblr-info-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-info-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-info-text-emphasis); +} + +.list-group-item-warning { + --tblr-list-group-color: var(--tblr-warning-text-emphasis); + --tblr-list-group-bg: var(--tblr-warning-bg-subtle); + --tblr-list-group-border-color: var(--tblr-warning-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-active-color: var(--tblr-warning-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-warning-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis); +} + +.list-group-item-danger { + --tblr-list-group-color: var(--tblr-danger-text-emphasis); + --tblr-list-group-bg: var(--tblr-danger-bg-subtle); + --tblr-list-group-border-color: var(--tblr-danger-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-active-color: var(--tblr-danger-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-danger-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis); +} + +.list-group-item-light { + --tblr-list-group-color: var(--tblr-light-text-emphasis); + --tblr-list-group-bg: var(--tblr-light-bg-subtle); + --tblr-list-group-border-color: var(--tblr-light-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-light-border-subtle); + --tblr-list-group-active-color: var(--tblr-light-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-light-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-light-text-emphasis); +} + +.list-group-item-dark { + --tblr-list-group-color: var(--tblr-dark-text-emphasis); + --tblr-list-group-bg: var(--tblr-dark-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dark-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-active-color: var(--tblr-dark-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dark-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis); +} + +.list-group-item-muted { + --tblr-list-group-color: var(--tblr-muted-text-emphasis); + --tblr-list-group-bg: var(--tblr-muted-bg-subtle); + --tblr-list-group-border-color: var(--tblr-muted-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-active-color: var(--tblr-muted-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-muted-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis); +} + +.list-group-item-blue { + --tblr-list-group-color: var(--tblr-blue-text-emphasis); + --tblr-list-group-bg: var(--tblr-blue-bg-subtle); + --tblr-list-group-border-color: var(--tblr-blue-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-active-color: var(--tblr-blue-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-blue-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis); +} + +.list-group-item-azure { + --tblr-list-group-color: var(--tblr-azure-text-emphasis); + --tblr-list-group-bg: var(--tblr-azure-bg-subtle); + --tblr-list-group-border-color: var(--tblr-azure-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-active-color: var(--tblr-azure-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-azure-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis); +} + +.list-group-item-indigo { + --tblr-list-group-color: var(--tblr-indigo-text-emphasis); + --tblr-list-group-bg: var(--tblr-indigo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-active-color: var(--tblr-indigo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis); +} + +.list-group-item-purple { + --tblr-list-group-color: var(--tblr-purple-text-emphasis); + --tblr-list-group-bg: var(--tblr-purple-bg-subtle); + --tblr-list-group-border-color: var(--tblr-purple-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-active-color: var(--tblr-purple-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-purple-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis); +} + +.list-group-item-pink { + --tblr-list-group-color: var(--tblr-pink-text-emphasis); + --tblr-list-group-bg: var(--tblr-pink-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pink-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-active-color: var(--tblr-pink-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pink-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis); +} + +.list-group-item-red { + --tblr-list-group-color: var(--tblr-red-text-emphasis); + --tblr-list-group-bg: var(--tblr-red-bg-subtle); + --tblr-list-group-border-color: var(--tblr-red-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-red-border-subtle); + --tblr-list-group-active-color: var(--tblr-red-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-red-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-red-text-emphasis); +} + +.list-group-item-orange { + --tblr-list-group-color: var(--tblr-orange-text-emphasis); + --tblr-list-group-bg: var(--tblr-orange-bg-subtle); + --tblr-list-group-border-color: var(--tblr-orange-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-active-color: var(--tblr-orange-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-orange-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis); +} + +.list-group-item-yellow { + --tblr-list-group-color: var(--tblr-yellow-text-emphasis); + --tblr-list-group-bg: var(--tblr-yellow-bg-subtle); + --tblr-list-group-border-color: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-active-color: var(--tblr-yellow-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis); +} + +.list-group-item-lime { + --tblr-list-group-color: var(--tblr-lime-text-emphasis); + --tblr-list-group-bg: var(--tblr-lime-bg-subtle); + --tblr-list-group-border-color: var(--tblr-lime-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-active-color: var(--tblr-lime-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-lime-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis); +} + +.list-group-item-green { + --tblr-list-group-color: var(--tblr-green-text-emphasis); + --tblr-list-group-bg: var(--tblr-green-bg-subtle); + --tblr-list-group-border-color: var(--tblr-green-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-green-border-subtle); + --tblr-list-group-active-color: var(--tblr-green-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-green-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-green-text-emphasis); +} + +.list-group-item-teal { + --tblr-list-group-color: var(--tblr-teal-text-emphasis); + --tblr-list-group-bg: var(--tblr-teal-bg-subtle); + --tblr-list-group-border-color: var(--tblr-teal-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-active-color: var(--tblr-teal-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-teal-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis); +} + +.list-group-item-cyan { + --tblr-list-group-color: var(--tblr-cyan-text-emphasis); + --tblr-list-group-bg: var(--tblr-cyan-bg-subtle); + --tblr-list-group-border-color: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-active-color: var(--tblr-cyan-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis); +} + +.list-group-item-facebook { + --tblr-list-group-color: var(--tblr-facebook-text-emphasis); + --tblr-list-group-bg: var(--tblr-facebook-bg-subtle); + --tblr-list-group-border-color: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-active-color: var(--tblr-facebook-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-facebook-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-facebook-text-emphasis); +} + +.list-group-item-twitter { + --tblr-list-group-color: var(--tblr-twitter-text-emphasis); + --tblr-list-group-bg: var(--tblr-twitter-bg-subtle); + --tblr-list-group-border-color: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-active-color: var(--tblr-twitter-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-twitter-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-twitter-text-emphasis); +} + +.list-group-item-linkedin { + --tblr-list-group-color: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-bg: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-border-color: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-active-color: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-linkedin-text-emphasis); +} + +.list-group-item-google { + --tblr-list-group-color: var(--tblr-google-text-emphasis); + --tblr-list-group-bg: var(--tblr-google-bg-subtle); + --tblr-list-group-border-color: var(--tblr-google-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-google-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-google-border-subtle); + --tblr-list-group-active-color: var(--tblr-google-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-google-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-google-text-emphasis); +} + +.list-group-item-youtube { + --tblr-list-group-color: var(--tblr-youtube-text-emphasis); + --tblr-list-group-bg: var(--tblr-youtube-bg-subtle); + --tblr-list-group-border-color: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-active-color: var(--tblr-youtube-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-youtube-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-youtube-text-emphasis); +} + +.list-group-item-vimeo { + --tblr-list-group-color: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-bg: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-active-color: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vimeo-text-emphasis); +} + +.list-group-item-dribbble { + --tblr-list-group-color: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-bg: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-active-color: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dribbble-text-emphasis); +} + +.list-group-item-github { + --tblr-list-group-color: var(--tblr-github-text-emphasis); + --tblr-list-group-bg: var(--tblr-github-bg-subtle); + --tblr-list-group-border-color: var(--tblr-github-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-github-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-github-border-subtle); + --tblr-list-group-active-color: var(--tblr-github-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-github-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-github-text-emphasis); +} + +.list-group-item-instagram { + --tblr-list-group-color: var(--tblr-instagram-text-emphasis); + --tblr-list-group-bg: var(--tblr-instagram-bg-subtle); + --tblr-list-group-border-color: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-active-color: var(--tblr-instagram-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-instagram-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-instagram-text-emphasis); +} + +.list-group-item-pinterest { + --tblr-list-group-color: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-bg: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-active-color: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pinterest-text-emphasis); +} + +.list-group-item-vk { + --tblr-list-group-color: var(--tblr-vk-text-emphasis); + --tblr-list-group-bg: var(--tblr-vk-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vk-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-active-color: var(--tblr-vk-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vk-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vk-text-emphasis); +} + +.list-group-item-rss { + --tblr-list-group-color: var(--tblr-rss-text-emphasis); + --tblr-list-group-bg: var(--tblr-rss-bg-subtle); + --tblr-list-group-border-color: var(--tblr-rss-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-active-color: var(--tblr-rss-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-rss-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-rss-text-emphasis); +} + +.list-group-item-flickr { + --tblr-list-group-color: var(--tblr-flickr-text-emphasis); + --tblr-list-group-bg: var(--tblr-flickr-bg-subtle); + --tblr-list-group-border-color: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-active-color: var(--tblr-flickr-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-flickr-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-flickr-text-emphasis); +} + +.list-group-item-bitbucket { + --tblr-list-group-color: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-active-color: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-bitbucket-text-emphasis); +} + +.list-group-item-tabler { + --tblr-list-group-color: var(--tblr-tabler-text-emphasis); + --tblr-list-group-bg: var(--tblr-tabler-bg-subtle); + --tblr-list-group-border-color: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-active-color: var(--tblr-tabler-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-tabler-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-tabler-text-emphasis); +} + +.btn-close { + --tblr-btn-close-color: #182433; + --tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --tblr-btn-close-opacity: 0.4; + --tblr-btn-close-hover-opacity: 0.75; + --tblr-btn-close-focus-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-btn-close-focus-opacity: 1; + --tblr-btn-close-disabled-opacity: 0.25; + --tblr-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--tblr-btn-close-color); + background: transparent var(--tblr-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 4px; + opacity: var(--tblr-btn-close-opacity); +} +.btn-close:hover { + color: var(--tblr-btn-close-color); + text-decoration: none; + opacity: var(--tblr-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--tblr-btn-close-focus-shadow); + opacity: var(--tblr-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: var(--tblr-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--tblr-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close, body[data-bs-theme=dark] [data-bs-theme=light] .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.toast { + --tblr-toast-zindex: 1090; + --tblr-toast-padding-x: 0.75rem; + --tblr-toast-padding-y: 0.5rem; + --tblr-toast-spacing: calc(var(--tblr-page-padding) * 2); + --tblr-toast-max-width: 350px; + --tblr-toast-font-size: 0.875rem; + --tblr-toast-color: ; + --tblr-toast-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-border-width: var(--tblr-border-width); + --tblr-toast-border-color: var(--tblr-border-color); + --tblr-toast-border-radius: var(--tblr-border-radius); + --tblr-toast-box-shadow: var(--tblr-box-shadow); + --tblr-toast-header-color: var(--tblr-secondary); + --tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-header-border-color: var(--tblr-border-color); + width: var(--tblr-toast-max-width); + max-width: 100%; + font-size: var(--tblr-toast-font-size); + color: var(--tblr-toast-color); + pointer-events: auto; + background-color: var(--tblr-toast-bg); + background-clip: padding-box; + border: var(--tblr-toast-border-width) solid var(--tblr-toast-border-color); + box-shadow: var(--tblr-toast-box-shadow); + border-radius: var(--tblr-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --tblr-toast-zindex: 1090; + position: absolute; + z-index: var(--tblr-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--tblr-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--tblr-toast-padding-y) var(--tblr-toast-padding-x); + color: var(--tblr-toast-header-color); + background-color: var(--tblr-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color); + border-top-left-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); + border-top-right-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--tblr-toast-padding-x)); + margin-left: var(--tblr-toast-padding-x); +} + +.toast-body { + padding: var(--tblr-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --tblr-modal-zindex: 1055; + --tblr-modal-width: 540px; + --tblr-modal-padding: 1.5rem; + --tblr-modal-margin: 0.5rem; + --tblr-modal-color: ; + --tblr-modal-bg: var(--tblr-bg-surface); + --tblr-modal-border-color: transparent; + --tblr-modal-border-width: var(--tblr-border-width); + --tblr-modal-border-radius: var(--tblr-border-radius-lg); + --tblr-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px); + --tblr-modal-header-padding-x: 1.5rem; + --tblr-modal-header-padding-y: 1.5rem; + --tblr-modal-header-padding: 1.5rem; + --tblr-modal-header-border-color: var(--tblr-border-color); + --tblr-modal-header-border-width: var(--tblr-border-width); + --tblr-modal-title-line-height: 1.4285714286; + --tblr-modal-footer-gap: 0.75rem; + --tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary); + --tblr-modal-footer-border-color: var(--tblr-border-color); + --tblr-modal-footer-border-width: var(--tblr-border-width); + position: fixed; + top: 0; + left: 0; + z-index: var(--tblr-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--tblr-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -1rem); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--tblr-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--tblr-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--tblr-modal-color); + pointer-events: auto; + background-color: var(--tblr-modal-bg); + background-clip: padding-box; + border: var(--tblr-modal-border-width) solid var(--tblr-modal-border-color); + border-radius: var(--tblr-modal-border-radius); + box-shadow: var(--tblr-modal-box-shadow); + outline: 0; +} + +.modal-backdrop { + --tblr-backdrop-zindex: 1050; + --tblr-backdrop-bg: #182433; + --tblr-backdrop-opacity: 0.24; + position: fixed; + top: 0; + left: 0; + z-index: var(--tblr-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--tblr-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--tblr-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--tblr-modal-header-padding); + border-bottom: var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color); + border-top-left-radius: var(--tblr-modal-inner-border-radius); + border-top-right-radius: var(--tblr-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--tblr-modal-header-padding-y) * 0.5) calc(var(--tblr-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--tblr-modal-header-padding-y)) calc(-0.5 * var(--tblr-modal-header-padding-x)) calc(-0.5 * var(--tblr-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--tblr-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--tblr-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * 0.5); + background-color: var(--tblr-modal-footer-bg); + border-top: var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color); + border-bottom-right-radius: var(--tblr-modal-inner-border-radius); + border-bottom-left-radius: var(--tblr-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--tblr-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --tblr-modal-margin: 1.75rem; + --tblr-modal-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + } + .modal-dialog { + max-width: var(--tblr-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --tblr-modal-width: 380px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --tblr-modal-width: 720px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --tblr-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --tblr-tooltip-zindex: 1080; + --tblr-tooltip-max-width: 200px; + --tblr-tooltip-padding-x: var(--tblr-spacer-2); + --tblr-tooltip-padding-y: var(--tblr-spacer-2); + --tblr-tooltip-margin: ; + --tblr-tooltip-font-size: 0.765625rem; + --tblr-tooltip-color: var(--tblr-light); + --tblr-tooltip-bg: var(--tblr-bg-surface-dark); + --tblr-tooltip-border-radius: var(--tblr-border-radius); + --tblr-tooltip-opacity: 0.9; + --tblr-tooltip-arrow-width: 0.8rem; + --tblr-tooltip-arrow-height: 0.4rem; + z-index: var(--tblr-tooltip-zindex); + display: block; + margin: var(--tblr-tooltip-margin); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--tblr-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--tblr-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--tblr-tooltip-arrow-width); + height: var(--tblr-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--tblr-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--tblr-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-bottom-color: var(--tblr-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-left-color: var(--tblr-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--tblr-tooltip-max-width); + padding: var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x); + color: var(--tblr-tooltip-color); + text-align: center; + background-color: var(--tblr-tooltip-bg); + border-radius: var(--tblr-tooltip-border-radius); +} + +.popover { + --tblr-popover-zindex: 1070; + --tblr-popover-max-width: 276px; + --tblr-popover-font-size: 0.765625rem; + --tblr-popover-bg: var(--tblr-bg-surface); + --tblr-popover-border-width: var(--tblr-border-width); + --tblr-popover-border-color: var(--tblr-border-color); + --tblr-popover-border-radius: var(--tblr-border-radius-lg); + --tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width)); + --tblr-popover-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-popover-header-padding-x: 1rem; + --tblr-popover-header-padding-y: 0.5rem; + --tblr-popover-header-font-size: 0.875rem; + --tblr-popover-header-color: inherit; + --tblr-popover-header-bg: transparent; + --tblr-popover-body-padding-x: 1rem; + --tblr-popover-body-padding-y: 1rem; + --tblr-popover-body-color: inherit; + --tblr-popover-arrow-width: 1rem; + --tblr-popover-arrow-height: 0.5rem; + --tblr-popover-arrow-border: var(--tblr-popover-border-color); + z-index: var(--tblr-popover-zindex); + display: block; + max-width: var(--tblr-popover-max-width); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--tblr-popover-font-size); + word-wrap: break-word; + background-color: var(--tblr-popover-bg); + background-clip: padding-box; + border: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-radius: var(--tblr-popover-border-radius); + box-shadow: var(--tblr-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--tblr-popover-arrow-width); + height: var(--tblr-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--tblr-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--tblr-popover-border-width); + border-top-color: var(--tblr-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--tblr-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--tblr-popover-border-width); + border-right-color: var(--tblr-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--tblr-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--tblr-popover-border-width); + border-bottom-color: var(--tblr-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--tblr-popover-arrow-width); + margin-left: calc(-0.5 * var(--tblr-popover-arrow-width)); + content: ""; + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--tblr-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--tblr-popover-border-width); + border-left-color: var(--tblr-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--tblr-popover-header-font-size); + color: var(--tblr-popover-header-color); + background-color: var(--tblr-popover-header-bg); + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-top-left-radius: var(--tblr-popover-inner-border-radius); + border-top-right-radius: var(--tblr-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x); + color: var(--tblr-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #ffffff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 1.5rem; + height: 1.5rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #ffffff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #ffffff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000000; +} +.carousel-dark .carousel-caption { + color: #000000; +} + +[data-bs-theme=dark] .carousel .carousel-control-prev-icon, +[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon, +[data-bs-theme=dark].carousel .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { + background-color: #000000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--tblr-spinner-width); + height: var(--tblr-spinner-height); + vertical-align: var(--tblr-spinner-vertical-align); + border-radius: 50%; + animation: var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-border-width: 2px; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-border; + border: var(--tblr-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; + --tblr-spinner-border-width: 1px; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --tblr-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --tblr-offcanvas-zindex: 1045; + --tblr-offcanvas-width: 400px; + --tblr-offcanvas-height: 30vh; + --tblr-offcanvas-padding-x: 1.5rem; + --tblr-offcanvas-padding-y: 1.5rem; + --tblr-offcanvas-color: var(--tblr-body-color); + --tblr-offcanvas-bg: var(--tblr-bg-surface); + --tblr-offcanvas-border-width: var(--tblr-border-width); + --tblr-offcanvas-border-color: var(--tblr-border-color); + --tblr-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-offcanvas-transition: transform 0.3s ease-in-out; + --tblr-offcanvas-title-line-height: 1.4285714286; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #182433; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.24; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--tblr-offcanvas-padding-y) * 0.5) calc(var(--tblr-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--tblr-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--tblr-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--tblr-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--tblr-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.2; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.1; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 95%); + mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-primary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-success-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-info-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-warning-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-danger-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #182433 !important; + background-color: RGBA(var(--tblr-light-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dark-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-muted { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-muted-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-blue { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-blue-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-azure { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-azure-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-indigo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-purple { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-purple-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pink { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pink-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-red { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-red-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-orange { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-orange-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-yellow { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-lime { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-lime-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-green { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-green-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-teal { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-teal-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-cyan { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-facebook { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-twitter { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-linkedin { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-google { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-google-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-youtube { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vimeo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dribbble { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-github { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-github-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-instagram { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pinterest { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vk { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vk-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-rss { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-rss-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-flickr { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-bitbucket { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-tabler { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--tblr-success-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--tblr-info-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--tblr-light-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(253, 253, 254, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(19, 29, 41, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-muted { + color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-muted:hover, .link-muted:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-blue { + color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-blue:hover, .link-blue:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-azure { + color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-azure:hover, .link-azure:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-indigo { + color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-indigo:hover, .link-indigo:focus { + color: RGBA(53, 79, 188, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-purple { + color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-purple:hover, .link-purple:focus { + color: RGBA(139, 50, 161, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pink { + color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pink:hover, .link-pink:focus { + color: RGBA(171, 41, 86, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-red { + color: RGBA(var(--tblr-red-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-red:hover, .link-red:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-orange { + color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-orange:hover, .link-orange:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-yellow { + color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-yellow:hover, .link-yellow:focus { + color: RGBA(196, 127, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-lime { + color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-lime:hover, .link-lime:focus { + color: RGBA(93, 147, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-green { + color: RGBA(var(--tblr-green-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-green:hover, .link-green:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-teal { + color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-teal:hover, .link-teal:focus { + color: RGBA(10, 133, 96, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-cyan { + color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-cyan:hover, .link-cyan:focus { + color: RGBA(18, 130, 147, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-facebook { + color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-facebook:hover, .link-facebook:focus { + color: RGBA(19, 95, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-twitter { + color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-twitter:hover, .link-twitter:focus { + color: RGBA(23, 129, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-linkedin { + color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-linkedin:hover, .link-linkedin:focus { + color: RGBA(8, 82, 155, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-google { + color: RGBA(var(--tblr-google-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-google:hover, .link-google:focus { + color: RGBA(176, 62, 52, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-youtube { + color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-youtube:hover, .link-youtube:focus { + color: RGBA(204, 0, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vimeo { + color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vimeo:hover, .link-vimeo:focus { + color: RGBA(21, 146, 187, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dribbble { + color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dribbble:hover, .link-dribbble:focus { + color: RGBA(187, 61, 110, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-github { + color: RGBA(var(--tblr-github-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-github:hover, .link-github:focus { + color: RGBA(19, 18, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-instagram { + color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-instagram:hover, .link-instagram:focus { + color: RGBA(182, 51, 76, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pinterest { + color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pinterest:hover, .link-pinterest:focus { + color: RGBA(151, 6, 22, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vk { + color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vk:hover, .link-vk:focus { + color: RGBA(79, 105, 134, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-rss { + color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-rss:hover, .link-rss:focus { + color: RGBA(204, 132, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-flickr { + color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-flickr:hover, .link-flickr:focus { + color: RGBA(0, 79, 176, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-bitbucket { + color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-bitbucket:hover, .link-bitbucket:focus { + color: RGBA(0, 66, 163, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-tabler { + color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-tabler:hover, .link-tabler:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 0.5)); + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 0.5)); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--tblr-icon-link-transform, translate3d(0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--tblr-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --tblr-aspect-ratio: 100%; +} + +.ratio-2x1 { + --tblr-aspect-ratio: 50%; +} + +.ratio-1x2 { + --tblr-aspect-ratio: 200%; +} + +.ratio-3x1 { + --tblr-aspect-ratio: 33.3333333333%; +} + +.ratio-1x3 { + --tblr-aspect-ratio: 300%; +} + +.ratio-4x3 { + --tblr-aspect-ratio: 75%; +} + +.ratio-3x4 { + --tblr-aspect-ratio: 133.3333333333%; +} + +.ratio-16x9 { + --tblr-aspect-ratio: 56.25%; +} + +.ratio-9x16 { + --tblr-aspect-ratio: 177.7777777778%; +} + +.ratio-21x9 { + --tblr-aspect-ratio: 42.8571428571%; +} + +.ratio-9x21 { + --tblr-aspect-ratio: 233.3333333333%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: var(--tblr-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.16; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.overflow-x-auto { + overflow-x: auto !important; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-x-visible { + overflow-x: visible !important; +} + +.overflow-x-scroll { + overflow-x: scroll !important; +} + +.overflow-y-auto { + overflow-y: auto !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.overflow-y-visible { + overflow-y: visible !important; +} + +.overflow-y-scroll { + overflow-y: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-secondary { + --tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-success { + --tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-info { + --tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-warning { + --tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-danger { + --tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-light { + --tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dark { + --tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-muted { + --tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-blue { + --tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-azure { + --tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-indigo { + --tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-purple { + --tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pink { + --tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-red { + --tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-orange { + --tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-yellow { + --tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-lime { + --tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-green { + --tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-teal { + --tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-cyan { + --tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-facebook { + --tblr-focus-ring-color: rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-twitter { + --tblr-focus-ring-color: rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-linkedin { + --tblr-focus-ring-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-google { + --tblr-focus-ring-color: rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-youtube { + --tblr-focus-ring-color: rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vimeo { + --tblr-focus-ring-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dribbble { + --tblr-focus-ring-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-github { + --tblr-focus-ring-color: rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-instagram { + --tblr-focus-ring-color: rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pinterest { + --tblr-focus-ring-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vk { + --tblr-focus-ring-color: rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-rss { + --tblr-focus-ring-color: rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-flickr { + --tblr-focus-ring-color: rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-bitbucket { + --tblr-focus-ring-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-tabler { + --tblr-focus-ring-color: rgba(var(--tblr-tabler-rgb), var(--tblr-focus-ring-opacity)); +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-wide { + border: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-wide { + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-wide { + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-wide { + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-primary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-secondary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-secondary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-success { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-success-rgb), var(--tblr-border-opacity)) !important; +} + +.border-info { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-info-rgb), var(--tblr-border-opacity)) !important; +} + +.border-warning { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-warning-rgb), var(--tblr-border-opacity)) !important; +} + +.border-danger { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-danger-rgb), var(--tblr-border-opacity)) !important; +} + +.border-light { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-light-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dark { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dark-rgb), var(--tblr-border-opacity)) !important; +} + +.border-muted { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-muted-rgb), var(--tblr-border-opacity)) !important; +} + +.border-blue { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-blue-rgb), var(--tblr-border-opacity)) !important; +} + +.border-azure { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-azure-rgb), var(--tblr-border-opacity)) !important; +} + +.border-indigo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-indigo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-purple { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-purple-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pink { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pink-rgb), var(--tblr-border-opacity)) !important; +} + +.border-red { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-red-rgb), var(--tblr-border-opacity)) !important; +} + +.border-orange { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-orange-rgb), var(--tblr-border-opacity)) !important; +} + +.border-yellow { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-yellow-rgb), var(--tblr-border-opacity)) !important; +} + +.border-lime { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-lime-rgb), var(--tblr-border-opacity)) !important; +} + +.border-green { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-green-rgb), var(--tblr-border-opacity)) !important; +} + +.border-teal { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-teal-rgb), var(--tblr-border-opacity)) !important; +} + +.border-cyan { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-cyan-rgb), var(--tblr-border-opacity)) !important; +} + +.border-facebook { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-facebook-rgb), var(--tblr-border-opacity)) !important; +} + +.border-twitter { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-twitter-rgb), var(--tblr-border-opacity)) !important; +} + +.border-linkedin { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-border-opacity)) !important; +} + +.border-google { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-google-rgb), var(--tblr-border-opacity)) !important; +} + +.border-youtube { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-youtube-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vimeo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dribbble { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-border-opacity)) !important; +} + +.border-github { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-github-rgb), var(--tblr-border-opacity)) !important; +} + +.border-instagram { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-instagram-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pinterest { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vk { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vk-rgb), var(--tblr-border-opacity)) !important; +} + +.border-rss { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-rss-rgb), var(--tblr-border-opacity)) !important; +} + +.border-flickr { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-flickr-rgb), var(--tblr-border-opacity)) !important; +} + +.border-bitbucket { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-border-opacity)) !important; +} + +.border-tabler { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-tabler-rgb), var(--tblr-border-opacity)) !important; +} + +.border-black { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-black-rgb), var(--tblr-border-opacity)) !important; +} + +.border-white { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-white-rgb), var(--tblr-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--tblr-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--tblr-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--tblr-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--tblr-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--tblr-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--tblr-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--tblr-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--tblr-dark-border-subtle) !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.border-opacity-10 { + --tblr-border-opacity: 0.1; +} + +.border-opacity-25 { + --tblr-border-opacity: 0.25; +} + +.border-opacity-50 { + --tblr-border-opacity: 0.5; +} + +.border-opacity-75 { + --tblr-border-opacity: 0.75; +} + +.border-opacity-100 { + --tblr-border-opacity: 1; +} + +.w-0 { + width: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.w-25 { + width: 25% !important; +} + +.w-33 { + width: 33.33333% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-66 { + width: 66.66666% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-0 { + height: 0 !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.h-25 { + height: 25% !important; +} + +.h-33 { + height: 33.33333% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-66 { + height: 66.66666% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 2rem !important; +} + +.m-6 { + margin: 3rem !important; +} + +.m-7 { + margin: 5rem !important; +} + +.m-8 { + margin: 8rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 2rem !important; + margin-left: 2rem !important; +} + +.mx-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; +} + +.mx-8 { + margin-right: 8rem !important; + margin-left: 8rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; +} + +.my-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; +} + +.my-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 2rem !important; +} + +.mt-6 { + margin-top: 3rem !important; +} + +.mt-7 { + margin-top: 5rem !important; +} + +.mt-8 { + margin-top: 8rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 2rem !important; +} + +.me-6 { + margin-right: 3rem !important; +} + +.me-7 { + margin-right: 5rem !important; +} + +.me-8 { + margin-right: 8rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 2rem !important; +} + +.mb-6 { + margin-bottom: 3rem !important; +} + +.mb-7 { + margin-bottom: 5rem !important; +} + +.mb-8 { + margin-bottom: 8rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 2rem !important; +} + +.ms-6 { + margin-left: 3rem !important; +} + +.ms-7 { + margin-left: 5rem !important; +} + +.ms-8 { + margin-left: 8rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 2rem !important; +} + +.p-6 { + padding: 3rem !important; +} + +.p-7 { + padding: 5rem !important; +} + +.p-8 { + padding: 8rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 2rem !important; + padding-left: 2rem !important; +} + +.px-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.px-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; +} + +.px-8 { + padding-right: 8rem !important; + padding-left: 8rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; +} + +.py-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +.py-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 2rem !important; +} + +.pt-6 { + padding-top: 3rem !important; +} + +.pt-7 { + padding-top: 5rem !important; +} + +.pt-8 { + padding-top: 8rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 2rem !important; +} + +.pe-6 { + padding-right: 3rem !important; +} + +.pe-7 { + padding-right: 5rem !important; +} + +.pe-8 { + padding-right: 8rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 2rem !important; +} + +.pb-6 { + padding-bottom: 3rem !important; +} + +.pb-7 { + padding-bottom: 5rem !important; +} + +.pb-8 { + padding-bottom: 8rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 2rem !important; +} + +.ps-6 { + padding-left: 3rem !important; +} + +.ps-7 { + padding-left: 5rem !important; +} + +.ps-8 { + padding-left: 8rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 2rem !important; +} + +.gap-6 { + gap: 3rem !important; +} + +.gap-7 { + gap: 5rem !important; +} + +.gap-8 { + gap: 8rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 1rem !important; +} + +.row-gap-4 { + row-gap: 1.5rem !important; +} + +.row-gap-5 { + row-gap: 2rem !important; +} + +.row-gap-6 { + row-gap: 3rem !important; +} + +.row-gap-7 { + row-gap: 5rem !important; +} + +.row-gap-8 { + row-gap: 8rem !important; +} + +.column-gap-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} + +.column-gap-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} + +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} + +.column-gap-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} + +.column-gap-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} + +.column-gap-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; +} + +.column-gap-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.column-gap-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; +} + +.column-gap-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; +} + +.font-monospace { + font-family: var(--tblr-font-monospace) !important; +} + +.fs-1 { + font-size: 1.5rem !important; +} + +.fs-2 { + font-size: 1.25rem !important; +} + +.fs-3 { + font-size: 1rem !important; +} + +.fs-4 { + font-size: 0.875rem !important; +} + +.fs-5 { + font-size: 0.75rem !important; +} + +.fs-6 { + font-size: 0.625rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.1428571429 !important; +} + +.lh-base { + line-height: 1.4285714286 !important; +} + +.lh-lg { + line-height: 1.7142857143 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-black-rgb), var(--tblr-text-opacity)) !important; +} + +.text-white { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; +} + +.text-body { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-body-color-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black-50 { + --tblr-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --tblr-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-body-tertiary { + --tblr-text-opacity: 1; + color: var(--tblr-tertiary-color) !important; +} + +.text-body-emphasis { + --tblr-text-opacity: 1; + color: var(--tblr-emphasis-color) !important; +} + +.text-reset { + --tblr-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --tblr-text-opacity: 0.25; +} + +.text-opacity-50 { + --tblr-text-opacity: 0.5; +} + +.text-opacity-75 { + --tblr-text-opacity: 0.75; +} + +.text-opacity-100 { + --tblr-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--tblr-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--tblr-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--tblr-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--tblr-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--tblr-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--tblr-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--tblr-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--tblr-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --tblr-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --tblr-link-opacity: 0.1; +} + +.link-opacity-25 { + --tblr-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --tblr-link-opacity: 0.25; +} + +.link-opacity-50 { + --tblr-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --tblr-link-opacity: 0.5; +} + +.link-opacity-75 { + --tblr-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --tblr-link-opacity: 0.75; +} + +.link-opacity-100 { + --tblr-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --tblr-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-success { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-info { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-warning { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-danger { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-light { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dark { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-muted { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-blue { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-azure { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-indigo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-purple { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pink { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-red { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-orange { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-yellow { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-lime { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-green { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-teal { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-cyan { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-facebook { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-twitter { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-linkedin { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-google { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-youtube { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vimeo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dribbble { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-github { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-instagram { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pinterest { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vk { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-rss { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-flickr { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-bitbucket { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-tabler { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --tblr-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --tblr-link-underline-opacity: 1; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-black { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-black-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-body-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-transparent { + --tblr-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body-tertiary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tertiary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-opacity-10 { + --tblr-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --tblr-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --tblr-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --tblr-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --tblr-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--tblr-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--tblr-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--tblr-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--tblr-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--tblr-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--tblr-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--tblr-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--tblr-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--tblr-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-top-1 { + border-top-left-radius: var(--tblr-border-radius-sm) !important; + border-top-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-left-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-3 { + border-top-left-radius: var(--tblr-border-radius-lg) !important; + border-top-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-left-radius: var(--tblr-border-radius-xl) !important; + border-top-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-left-radius: var(--tblr-border-radius-xxl) !important; + border-top-right-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-top-pill { + border-top-left-radius: var(--tblr-border-radius-pill) !important; + border-top-right-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-end { + border-top-right-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-end-1 { + border-top-right-radius: var(--tblr-border-radius-sm) !important; + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-right-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-3 { + border-top-right-radius: var(--tblr-border-radius-lg) !important; + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-right-radius: var(--tblr-border-radius-xl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-right-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-end-pill { + border-top-right-radius: var(--tblr-border-radius-pill) !important; + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; + border-top-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; + border-top-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; + border-top-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; + border-top-left-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; + border-top-left-radius: var(--tblr-border-radius-pill) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +.z-n1 { + z-index: -1 !important; +} + +.z-0 { + z-index: 0 !important; +} + +.z-1 { + z-index: 1 !important; +} + +.z-2 { + z-index: 2 !important; +} + +.z-3 { + z-index: 3 !important; +} + +.object-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-scale-down { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.tracking-tight { + letter-spacing: -0.05em !important; +} + +.tracking-normal { + letter-spacing: 0 !important; +} + +.tracking-wide { + letter-spacing: 0.05em !important; +} + +.cursor-auto { + cursor: auto !important; +} + +.cursor-pointer { + cursor: pointer !important; +} + +.cursor-move { + cursor: move !important; +} + +.cursor-not-allowed { + cursor: not-allowed !important; +} + +.cursor-zoom-in { + cursor: zoom-in !important; +} + +.cursor-zoom-out { + cursor: zoom-out !important; +} + +.cursor-default { + cursor: default !important; +} + +.cursor-none { + cursor: none !important; +} + +.cursor-help { + cursor: help !important; +} + +.cursor-progress { + cursor: progress !important; +} + +.cursor-wait { + cursor: wait !important; +} + +.cursor-text { + cursor: text !important; +} + +.cursor-v-text { + cursor: vertical-text !important; +} + +.cursor-grab { + cursor: -webkit-grab !important; + cursor: grab !important; +} + +.cursor-grabbing { + cursor: -webkit-grabbing !important; + cursor: grabbing !important; +} + +.border-x { + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-wide { + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-0 { + border-left: 0 !important; + border-right: 0 !important; +} + +.border-y { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; +} + +.columns-2 { + -moz-columns: 2 !important; + columns: 2 !important; +} + +.columns-3 { + -moz-columns: 3 !important; + columns: 3 !important; +} + +.columns-4 { + -moz-columns: 4 !important; + columns: 4 !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 2rem !important; + } + .m-sm-6 { + margin: 3rem !important; + } + .m-sm-7 { + margin: 5rem !important; + } + .m-sm-8 { + margin: 8rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-sm-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-sm-8 { + margin-right: 8rem !important; + margin-left: 8rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-sm-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-sm-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 2rem !important; + } + .mt-sm-6 { + margin-top: 3rem !important; + } + .mt-sm-7 { + margin-top: 5rem !important; + } + .mt-sm-8 { + margin-top: 8rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 2rem !important; + } + .me-sm-6 { + margin-right: 3rem !important; + } + .me-sm-7 { + margin-right: 5rem !important; + } + .me-sm-8 { + margin-right: 8rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 2rem !important; + } + .mb-sm-6 { + margin-bottom: 3rem !important; + } + .mb-sm-7 { + margin-bottom: 5rem !important; + } + .mb-sm-8 { + margin-bottom: 8rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 2rem !important; + } + .ms-sm-6 { + margin-left: 3rem !important; + } + .ms-sm-7 { + margin-left: 5rem !important; + } + .ms-sm-8 { + margin-left: 8rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 2rem !important; + } + .p-sm-6 { + padding: 3rem !important; + } + .p-sm-7 { + padding: 5rem !important; + } + .p-sm-8 { + padding: 8rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-sm-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-sm-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-sm-8 { + padding-right: 8rem !important; + padding-left: 8rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-sm-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-sm-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 2rem !important; + } + .pt-sm-6 { + padding-top: 3rem !important; + } + .pt-sm-7 { + padding-top: 5rem !important; + } + .pt-sm-8 { + padding-top: 8rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 2rem !important; + } + .pe-sm-6 { + padding-right: 3rem !important; + } + .pe-sm-7 { + padding-right: 5rem !important; + } + .pe-sm-8 { + padding-right: 8rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 2rem !important; + } + .pb-sm-6 { + padding-bottom: 3rem !important; + } + .pb-sm-7 { + padding-bottom: 5rem !important; + } + .pb-sm-8 { + padding-bottom: 8rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 2rem !important; + } + .ps-sm-6 { + padding-left: 3rem !important; + } + .ps-sm-7 { + padding-left: 5rem !important; + } + .ps-sm-8 { + padding-left: 8rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 2rem !important; + } + .gap-sm-6 { + gap: 3rem !important; + } + .gap-sm-7 { + gap: 5rem !important; + } + .gap-sm-8 { + gap: 8rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 2rem !important; + } + .row-gap-sm-6 { + row-gap: 3rem !important; + } + .row-gap-sm-7 { + row-gap: 5rem !important; + } + .row-gap-sm-8 { + row-gap: 8rem !important; + } + .column-gap-sm-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-sm-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-sm-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-sm-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } + .columns-sm-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-sm-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-sm-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 2rem !important; + } + .m-md-6 { + margin: 3rem !important; + } + .m-md-7 { + margin: 5rem !important; + } + .m-md-8 { + margin: 8rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-md-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-md-8 { + margin-right: 8rem !important; + margin-left: 8rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-md-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-md-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 2rem !important; + } + .mt-md-6 { + margin-top: 3rem !important; + } + .mt-md-7 { + margin-top: 5rem !important; + } + .mt-md-8 { + margin-top: 8rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 2rem !important; + } + .me-md-6 { + margin-right: 3rem !important; + } + .me-md-7 { + margin-right: 5rem !important; + } + .me-md-8 { + margin-right: 8rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 2rem !important; + } + .mb-md-6 { + margin-bottom: 3rem !important; + } + .mb-md-7 { + margin-bottom: 5rem !important; + } + .mb-md-8 { + margin-bottom: 8rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 2rem !important; + } + .ms-md-6 { + margin-left: 3rem !important; + } + .ms-md-7 { + margin-left: 5rem !important; + } + .ms-md-8 { + margin-left: 8rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 2rem !important; + } + .p-md-6 { + padding: 3rem !important; + } + .p-md-7 { + padding: 5rem !important; + } + .p-md-8 { + padding: 8rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-md-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-md-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-md-8 { + padding-right: 8rem !important; + padding-left: 8rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-md-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-md-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 2rem !important; + } + .pt-md-6 { + padding-top: 3rem !important; + } + .pt-md-7 { + padding-top: 5rem !important; + } + .pt-md-8 { + padding-top: 8rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 2rem !important; + } + .pe-md-6 { + padding-right: 3rem !important; + } + .pe-md-7 { + padding-right: 5rem !important; + } + .pe-md-8 { + padding-right: 8rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 2rem !important; + } + .pb-md-6 { + padding-bottom: 3rem !important; + } + .pb-md-7 { + padding-bottom: 5rem !important; + } + .pb-md-8 { + padding-bottom: 8rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 2rem !important; + } + .ps-md-6 { + padding-left: 3rem !important; + } + .ps-md-7 { + padding-left: 5rem !important; + } + .ps-md-8 { + padding-left: 8rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 2rem !important; + } + .gap-md-6 { + gap: 3rem !important; + } + .gap-md-7 { + gap: 5rem !important; + } + .gap-md-8 { + gap: 8rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 2rem !important; + } + .row-gap-md-6 { + row-gap: 3rem !important; + } + .row-gap-md-7 { + row-gap: 5rem !important; + } + .row-gap-md-8 { + row-gap: 8rem !important; + } + .column-gap-md-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-md-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-md-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-md-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } + .columns-md-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-md-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-md-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 2rem !important; + } + .m-lg-6 { + margin: 3rem !important; + } + .m-lg-7 { + margin: 5rem !important; + } + .m-lg-8 { + margin: 8rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-lg-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-lg-8 { + margin-right: 8rem !important; + margin-left: 8rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-lg-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-lg-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 2rem !important; + } + .mt-lg-6 { + margin-top: 3rem !important; + } + .mt-lg-7 { + margin-top: 5rem !important; + } + .mt-lg-8 { + margin-top: 8rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 2rem !important; + } + .me-lg-6 { + margin-right: 3rem !important; + } + .me-lg-7 { + margin-right: 5rem !important; + } + .me-lg-8 { + margin-right: 8rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 2rem !important; + } + .mb-lg-6 { + margin-bottom: 3rem !important; + } + .mb-lg-7 { + margin-bottom: 5rem !important; + } + .mb-lg-8 { + margin-bottom: 8rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 2rem !important; + } + .ms-lg-6 { + margin-left: 3rem !important; + } + .ms-lg-7 { + margin-left: 5rem !important; + } + .ms-lg-8 { + margin-left: 8rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 2rem !important; + } + .p-lg-6 { + padding: 3rem !important; + } + .p-lg-7 { + padding: 5rem !important; + } + .p-lg-8 { + padding: 8rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-lg-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-lg-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-lg-8 { + padding-right: 8rem !important; + padding-left: 8rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-lg-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-lg-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 2rem !important; + } + .pt-lg-6 { + padding-top: 3rem !important; + } + .pt-lg-7 { + padding-top: 5rem !important; + } + .pt-lg-8 { + padding-top: 8rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 2rem !important; + } + .pe-lg-6 { + padding-right: 3rem !important; + } + .pe-lg-7 { + padding-right: 5rem !important; + } + .pe-lg-8 { + padding-right: 8rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 2rem !important; + } + .pb-lg-6 { + padding-bottom: 3rem !important; + } + .pb-lg-7 { + padding-bottom: 5rem !important; + } + .pb-lg-8 { + padding-bottom: 8rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 2rem !important; + } + .ps-lg-6 { + padding-left: 3rem !important; + } + .ps-lg-7 { + padding-left: 5rem !important; + } + .ps-lg-8 { + padding-left: 8rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 2rem !important; + } + .gap-lg-6 { + gap: 3rem !important; + } + .gap-lg-7 { + gap: 5rem !important; + } + .gap-lg-8 { + gap: 8rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 2rem !important; + } + .row-gap-lg-6 { + row-gap: 3rem !important; + } + .row-gap-lg-7 { + row-gap: 5rem !important; + } + .row-gap-lg-8 { + row-gap: 8rem !important; + } + .column-gap-lg-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-lg-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-lg-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-lg-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } + .columns-lg-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-lg-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-lg-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 2rem !important; + } + .m-xl-6 { + margin: 3rem !important; + } + .m-xl-7 { + margin: 5rem !important; + } + .m-xl-8 { + margin: 8rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-xl-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xl-8 { + margin-right: 8rem !important; + margin-left: 8rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 2rem !important; + } + .mt-xl-6 { + margin-top: 3rem !important; + } + .mt-xl-7 { + margin-top: 5rem !important; + } + .mt-xl-8 { + margin-top: 8rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 2rem !important; + } + .me-xl-6 { + margin-right: 3rem !important; + } + .me-xl-7 { + margin-right: 5rem !important; + } + .me-xl-8 { + margin-right: 8rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 2rem !important; + } + .mb-xl-6 { + margin-bottom: 3rem !important; + } + .mb-xl-7 { + margin-bottom: 5rem !important; + } + .mb-xl-8 { + margin-bottom: 8rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 2rem !important; + } + .ms-xl-6 { + margin-left: 3rem !important; + } + .ms-xl-7 { + margin-left: 5rem !important; + } + .ms-xl-8 { + margin-left: 8rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 2rem !important; + } + .p-xl-6 { + padding: 3rem !important; + } + .p-xl-7 { + padding: 5rem !important; + } + .p-xl-8 { + padding: 8rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-xl-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xl-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-xl-8 { + padding-right: 8rem !important; + padding-left: 8rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 2rem !important; + } + .pt-xl-6 { + padding-top: 3rem !important; + } + .pt-xl-7 { + padding-top: 5rem !important; + } + .pt-xl-8 { + padding-top: 8rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 2rem !important; + } + .pe-xl-6 { + padding-right: 3rem !important; + } + .pe-xl-7 { + padding-right: 5rem !important; + } + .pe-xl-8 { + padding-right: 8rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 2rem !important; + } + .pb-xl-6 { + padding-bottom: 3rem !important; + } + .pb-xl-7 { + padding-bottom: 5rem !important; + } + .pb-xl-8 { + padding-bottom: 8rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 2rem !important; + } + .ps-xl-6 { + padding-left: 3rem !important; + } + .ps-xl-7 { + padding-left: 5rem !important; + } + .ps-xl-8 { + padding-left: 8rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 2rem !important; + } + .gap-xl-6 { + gap: 3rem !important; + } + .gap-xl-7 { + gap: 5rem !important; + } + .gap-xl-8 { + gap: 8rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 2rem !important; + } + .row-gap-xl-6 { + row-gap: 3rem !important; + } + .row-gap-xl-7 { + row-gap: 5rem !important; + } + .row-gap-xl-8 { + row-gap: 8rem !important; + } + .column-gap-xl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } + .columns-xl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 2rem !important; + } + .m-xxl-6 { + margin: 3rem !important; + } + .m-xxl-7 { + margin: 5rem !important; + } + .m-xxl-8 { + margin: 8rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-xxl-6 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-7 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xxl-8 { + margin-right: 8rem !important; + margin-left: 8rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xxl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xxl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 2rem !important; + } + .mt-xxl-6 { + margin-top: 3rem !important; + } + .mt-xxl-7 { + margin-top: 5rem !important; + } + .mt-xxl-8 { + margin-top: 8rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 2rem !important; + } + .me-xxl-6 { + margin-right: 3rem !important; + } + .me-xxl-7 { + margin-right: 5rem !important; + } + .me-xxl-8 { + margin-right: 8rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 2rem !important; + } + .mb-xxl-6 { + margin-bottom: 3rem !important; + } + .mb-xxl-7 { + margin-bottom: 5rem !important; + } + .mb-xxl-8 { + margin-bottom: 8rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 2rem !important; + } + .ms-xxl-6 { + margin-left: 3rem !important; + } + .ms-xxl-7 { + margin-left: 5rem !important; + } + .ms-xxl-8 { + margin-left: 8rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 2rem !important; + } + .p-xxl-6 { + padding: 3rem !important; + } + .p-xxl-7 { + padding: 5rem !important; + } + .p-xxl-8 { + padding: 8rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-xxl-6 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xxl-7 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .px-xxl-8 { + padding-right: 8rem !important; + padding-left: 8rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xxl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xxl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 2rem !important; + } + .pt-xxl-6 { + padding-top: 3rem !important; + } + .pt-xxl-7 { + padding-top: 5rem !important; + } + .pt-xxl-8 { + padding-top: 8rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 2rem !important; + } + .pe-xxl-6 { + padding-right: 3rem !important; + } + .pe-xxl-7 { + padding-right: 5rem !important; + } + .pe-xxl-8 { + padding-right: 8rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 2rem !important; + } + .pb-xxl-6 { + padding-bottom: 3rem !important; + } + .pb-xxl-7 { + padding-bottom: 5rem !important; + } + .pb-xxl-8 { + padding-bottom: 8rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 2rem !important; + } + .ps-xxl-6 { + padding-left: 3rem !important; + } + .ps-xxl-7 { + padding-left: 5rem !important; + } + .ps-xxl-8 { + padding-left: 8rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 2rem !important; + } + .gap-xxl-6 { + gap: 3rem !important; + } + .gap-xxl-7 { + gap: 5rem !important; + } + .gap-xxl-8 { + gap: 8rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 2rem !important; + } + .row-gap-xxl-6 { + row-gap: 3rem !important; + } + .row-gap-xxl-7 { + row-gap: 5rem !important; + } + .row-gap-xxl-8 { + row-gap: 8rem !important; + } + .column-gap-xxl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xxl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xxl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xxl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } + .columns-xxl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xxl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xxl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +:root, +:host { + font-size: 16px; + height: 100%; +} + +:root, +:host, +[data-bs-theme=light] { + --tblr-primary: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-primary-fg: var(--tblr-light); + --tblr-primary-darken: #004c95; + --tblr-primary-lt: #e6eef6; + --tblr-primary-lt-rgb: 230, 238, 246; + --tblr-secondary: #667382; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-secondary-fg: var(--tblr-light); + --tblr-secondary-darken: #5c6875; + --tblr-secondary-lt: #f0f1f3; + --tblr-secondary-lt-rgb: 240, 241, 243; + --tblr-success: #2fb344; + --tblr-success-rgb: 47, 179, 68; + --tblr-success-fg: var(--tblr-light); + --tblr-success-darken: #2aa13d; + --tblr-success-lt: #eaf7ec; + --tblr-success-lt-rgb: 234, 247, 236; + --tblr-info: #4299e1; + --tblr-info-rgb: 66, 153, 225; + --tblr-info-fg: var(--tblr-light); + --tblr-info-darken: #3b8acb; + --tblr-info-lt: #ecf5fc; + --tblr-info-lt-rgb: 236, 245, 252; + --tblr-warning: #f76707; + --tblr-warning-rgb: 247, 103, 7; + --tblr-warning-fg: var(--tblr-light); + --tblr-warning-darken: #de5d06; + --tblr-warning-lt: #fef0e6; + --tblr-warning-lt-rgb: 254, 240, 230; + --tblr-danger: #d63939; + --tblr-danger-rgb: 214, 57, 57; + --tblr-danger-fg: var(--tblr-light); + --tblr-danger-darken: #c13333; + --tblr-danger-lt: #fbebeb; + --tblr-danger-lt-rgb: 251, 235, 235; + --tblr-light: #fcfdfe; + --tblr-light-rgb: 252, 253, 254; + --tblr-light-fg: var(--tblr-dark); + --tblr-light-darken: #e3e4e5; + --tblr-light-lt: white; + --tblr-light-lt-rgb: 255, 255, 255; + --tblr-dark: #182433; + --tblr-dark-rgb: 24, 36, 51; + --tblr-dark-fg: var(--tblr-light); + --tblr-dark-darken: #16202e; + --tblr-dark-lt: #e8e9eb; + --tblr-dark-lt-rgb: 232, 233, 235; + --tblr-muted: #667382; + --tblr-muted-rgb: 102, 115, 130; + --tblr-muted-fg: var(--tblr-light); + --tblr-muted-darken: #5c6875; + --tblr-muted-lt: #f0f1f3; + --tblr-muted-lt-rgb: 240, 241, 243; + --tblr-blue: #0054a6; + --tblr-blue-rgb: 0, 84, 166; + --tblr-blue-fg: var(--tblr-light); + --tblr-blue-darken: #004c95; + --tblr-blue-lt: #e6eef6; + --tblr-blue-lt-rgb: 230, 238, 246; + --tblr-azure: #4299e1; + --tblr-azure-rgb: 66, 153, 225; + --tblr-azure-fg: var(--tblr-light); + --tblr-azure-darken: #3b8acb; + --tblr-azure-lt: #ecf5fc; + --tblr-azure-lt-rgb: 236, 245, 252; + --tblr-indigo: #4263eb; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-indigo-fg: var(--tblr-light); + --tblr-indigo-darken: #3b59d4; + --tblr-indigo-lt: #eceffd; + --tblr-indigo-lt-rgb: 236, 239, 253; + --tblr-purple: #ae3ec9; + --tblr-purple-rgb: 174, 62, 201; + --tblr-purple-fg: var(--tblr-light); + --tblr-purple-darken: #9d38b5; + --tblr-purple-lt: #f7ecfa; + --tblr-purple-lt-rgb: 247, 236, 250; + --tblr-pink: #d6336c; + --tblr-pink-rgb: 214, 51, 108; + --tblr-pink-fg: var(--tblr-light); + --tblr-pink-darken: #c12e61; + --tblr-pink-lt: #fbebf0; + --tblr-pink-lt-rgb: 251, 235, 240; + --tblr-red: #d63939; + --tblr-red-rgb: 214, 57, 57; + --tblr-red-fg: var(--tblr-light); + --tblr-red-darken: #c13333; + --tblr-red-lt: #fbebeb; + --tblr-red-lt-rgb: 251, 235, 235; + --tblr-orange: #f76707; + --tblr-orange-rgb: 247, 103, 7; + --tblr-orange-fg: var(--tblr-light); + --tblr-orange-darken: #de5d06; + --tblr-orange-lt: #fef0e6; + --tblr-orange-lt-rgb: 254, 240, 230; + --tblr-yellow: #f59f00; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-yellow-fg: var(--tblr-light); + --tblr-yellow-darken: #dd8f00; + --tblr-yellow-lt: #fef5e6; + --tblr-yellow-lt-rgb: 254, 245, 230; + --tblr-lime: #74b816; + --tblr-lime-rgb: 116, 184, 22; + --tblr-lime-fg: var(--tblr-light); + --tblr-lime-darken: #68a614; + --tblr-lime-lt: #f1f8e8; + --tblr-lime-lt-rgb: 241, 248, 232; + --tblr-green: #2fb344; + --tblr-green-rgb: 47, 179, 68; + --tblr-green-fg: var(--tblr-light); + --tblr-green-darken: #2aa13d; + --tblr-green-lt: #eaf7ec; + --tblr-green-lt-rgb: 234, 247, 236; + --tblr-teal: #0ca678; + --tblr-teal-rgb: 12, 166, 120; + --tblr-teal-fg: var(--tblr-light); + --tblr-teal-darken: #0b956c; + --tblr-teal-lt: #e7f6f2; + --tblr-teal-lt-rgb: 231, 246, 242; + --tblr-cyan: #17a2b8; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-cyan-fg: var(--tblr-light); + --tblr-cyan-darken: #1592a6; + --tblr-cyan-lt: #e8f6f8; + --tblr-cyan-lt-rgb: 232, 246, 248; + --tblr-facebook: #1877f2; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-facebook-fg: var(--tblr-light); + --tblr-facebook-darken: #166bda; + --tblr-facebook-lt: #e8f1fe; + --tblr-facebook-lt-rgb: 232, 241, 254; + --tblr-twitter: #1da1f2; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-twitter-fg: var(--tblr-light); + --tblr-twitter-darken: #1a91da; + --tblr-twitter-lt: #e8f6fe; + --tblr-twitter-lt-rgb: 232, 246, 254; + --tblr-linkedin: #0a66c2; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-linkedin-fg: var(--tblr-light); + --tblr-linkedin-darken: #095caf; + --tblr-linkedin-lt: #e7f0f9; + --tblr-linkedin-lt-rgb: 231, 240, 249; + --tblr-google: #dc4e41; + --tblr-google-rgb: 220, 78, 65; + --tblr-google-fg: var(--tblr-light); + --tblr-google-darken: #c6463b; + --tblr-google-lt: #fcedec; + --tblr-google-lt-rgb: 252, 237, 236; + --tblr-youtube: #ff0000; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-youtube-fg: var(--tblr-light); + --tblr-youtube-darken: #e60000; + --tblr-youtube-lt: #ffe6e6; + --tblr-youtube-lt-rgb: 255, 230, 230; + --tblr-vimeo: #1ab7ea; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-vimeo-fg: var(--tblr-light); + --tblr-vimeo-darken: #17a5d3; + --tblr-vimeo-lt: #e8f8fd; + --tblr-vimeo-lt-rgb: 232, 248, 253; + --tblr-dribbble: #ea4c89; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-dribbble-fg: var(--tblr-light); + --tblr-dribbble-darken: #d3447b; + --tblr-dribbble-lt: #fdedf3; + --tblr-dribbble-lt-rgb: 253, 237, 243; + --tblr-github: #181717; + --tblr-github-rgb: 24, 23, 23; + --tblr-github-fg: var(--tblr-light); + --tblr-github-darken: #161515; + --tblr-github-lt: #e8e8e8; + --tblr-github-lt-rgb: 232, 232, 232; + --tblr-instagram: #e4405f; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-instagram-fg: var(--tblr-light); + --tblr-instagram-darken: #cd3a56; + --tblr-instagram-lt: #fcecef; + --tblr-instagram-lt-rgb: 252, 236, 239; + --tblr-pinterest: #bd081c; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-pinterest-fg: var(--tblr-light); + --tblr-pinterest-darken: #aa0719; + --tblr-pinterest-lt: #f8e6e8; + --tblr-pinterest-lt-rgb: 248, 230, 232; + --tblr-vk: #6383a8; + --tblr-vk-rgb: 99, 131, 168; + --tblr-vk-fg: var(--tblr-light); + --tblr-vk-darken: #597697; + --tblr-vk-lt: #eff3f6; + --tblr-vk-lt-rgb: 239, 243, 246; + --tblr-rss: #ffa500; + --tblr-rss-rgb: 255, 165, 0; + --tblr-rss-fg: var(--tblr-light); + --tblr-rss-darken: #e69500; + --tblr-rss-lt: #fff6e6; + --tblr-rss-lt-rgb: 255, 246, 230; + --tblr-flickr: #0063dc; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-flickr-fg: var(--tblr-light); + --tblr-flickr-darken: #0059c6; + --tblr-flickr-lt: #e6effc; + --tblr-flickr-lt-rgb: 230, 239, 252; + --tblr-bitbucket: #0052cc; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-bitbucket-fg: var(--tblr-light); + --tblr-bitbucket-darken: #004ab8; + --tblr-bitbucket-lt: #e6eefa; + --tblr-bitbucket-lt-rgb: 230, 238, 250; + --tblr-tabler: #0054a6; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-tabler-fg: var(--tblr-light); + --tblr-tabler-darken: #004c95; + --tblr-tabler-lt: #e6eef6; + --tblr-tabler-lt-rgb: 230, 238, 246; + --tblr-gray-50: #fcfdfe; + --tblr-gray-50-rgb: 252, 253, 254; + --tblr-gray-50-fg: var(--tblr-dark); + --tblr-gray-50-darken: #e3e4e5; + --tblr-gray-50-lt: white; + --tblr-gray-50-lt-rgb: 255, 255, 255; + --tblr-gray-100: #f6f8fb; + --tblr-gray-100-rgb: 246, 248, 251; + --tblr-gray-100-fg: var(--tblr-dark); + --tblr-gray-100-darken: #dddfe2; + --tblr-gray-100-lt: #fefeff; + --tblr-gray-100-lt-rgb: 254, 254, 255; + --tblr-gray-200: #eef1f4; + --tblr-gray-200-rgb: 238, 241, 244; + --tblr-gray-200-fg: var(--tblr-dark); + --tblr-gray-200-darken: #d6d9dc; + --tblr-gray-200-lt: #fdfefe; + --tblr-gray-200-lt-rgb: 253, 254, 254; + --tblr-gray-300: #dadfe5; + --tblr-gray-300-rgb: 218, 223, 229; + --tblr-gray-300-fg: var(--tblr-dark); + --tblr-gray-300-darken: #c4c9ce; + --tblr-gray-300-lt: #fbfcfc; + --tblr-gray-300-lt-rgb: 251, 252, 252; + --tblr-gray-400: #bbc3cd; + --tblr-gray-400-rgb: 187, 195, 205; + --tblr-gray-400-fg: var(--tblr-light); + --tblr-gray-400-darken: #a8b0b9; + --tblr-gray-400-lt: #f8f9fa; + --tblr-gray-400-lt-rgb: 248, 249, 250; + --tblr-gray-500: #929dab; + --tblr-gray-500-rgb: 146, 157, 171; + --tblr-gray-500-fg: var(--tblr-light); + --tblr-gray-500-darken: #838d9a; + --tblr-gray-500-lt: #f4f5f7; + --tblr-gray-500-lt-rgb: 244, 245, 247; + --tblr-gray-600: #667382; + --tblr-gray-600-rgb: 102, 115, 130; + --tblr-gray-600-fg: var(--tblr-light); + --tblr-gray-600-darken: #5c6875; + --tblr-gray-600-lt: #f0f1f3; + --tblr-gray-600-lt-rgb: 240, 241, 243; + --tblr-gray-700: #3a4859; + --tblr-gray-700-rgb: 58, 72, 89; + --tblr-gray-700-fg: var(--tblr-light); + --tblr-gray-700-darken: #344150; + --tblr-gray-700-lt: #ebedee; + --tblr-gray-700-lt-rgb: 235, 237, 238; + --tblr-gray-800: #182433; + --tblr-gray-800-rgb: 24, 36, 51; + --tblr-gray-800-fg: var(--tblr-light); + --tblr-gray-800-darken: #16202e; + --tblr-gray-800-lt: #e8e9eb; + --tblr-gray-800-lt-rgb: 232, 233, 235; + --tblr-gray-900: #040a11; + --tblr-gray-900-rgb: 4, 10, 17; + --tblr-gray-900-fg: var(--tblr-light); + --tblr-gray-900-darken: #04090f; + --tblr-gray-900-lt: #e6e7e7; + --tblr-gray-900-lt-rgb: 230, 231, 231; + --tblr-spacer-0: 0; + --tblr-spacer-1: 0.25rem; + --tblr-spacer-2: 0.5rem; + --tblr-spacer-3: 1rem; + --tblr-spacer-4: 1.5rem; + --tblr-spacer-5: 2rem; + --tblr-spacer-6: 3rem; + --tblr-spacer-7: 5rem; + --tblr-spacer-8: 8rem; + --tblr-spacer: 1rem; + --tblr-bg-surface: var(--tblr-white); + --tblr-bg-surface-secondary: var(--tblr-gray-100); + --tblr-bg-surface-tertiary: var(--tblr-gray-50); + --tblr-bg-surface-dark: var(--tblr-dark); + --tblr-bg-forms: var(--tblr-bg-surface); + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-dark-color: #bbc3cd; + --tblr-border-dark-color-translucent: rgba(4, 32, 69, 0.27); + --tblr-border-active-color: #b6bcc3; + --tblr-icon-color: var(--tblr-gray-500); + --tblr-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-disabled-bg: var(--tblr-bg-surface-secondary); + --tblr-disabled-color: var(--tblr-gray-300); + --tblr-code-color: var(--tblr-gray-600); + --tblr-code-bg: var(--tblr-bg-surface-secondary); + --tblr-dark-mode-border-color: #1f2e41; + --tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-dark-mode-border-color-active: #2c415d; + --tblr-dark-mode-border-dark-color: #1f2e41; + --tblr-page-padding: var(--tblr-spacer-3); + --tblr-page-padding-y: var(--tblr-spacer-4); + --tblr-font-weight-light: 300; + --tblr-font-weight-normal: 400; + --tblr-font-weight-medium: 500; + --tblr-font-weight-bold: 600; + --tblr-font-weight-headings: var(--tblr-font-weight-bold); + --tblr-font-size-h1: 1.5rem; + --tblr-font-size-h2: 1.25rem; + --tblr-font-size-h3: 1rem; + --tblr-font-size-h4: 0.875rem; + --tblr-font-size-h5: 0.75rem; + --tblr-font-size-h6: 0.625rem; + --tblr-line-height-h1: 2rem; + --tblr-line-height-h2: 1.75rem; + --tblr-line-height-h3: 1.5rem; + --tblr-line-height-h4: 1.25rem; + --tblr-line-height-h5: 1rem; + --tblr-line-height-h6: 1rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-border: inset 0 0 0 1px var(--tblr-border-color-translucent); + --tblr-box-shadow-transparent: 0 0 0 0 transparent; + --tblr-box-shadow-input: 0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06); + --tblr-box-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), 0.04); + --tblr-box-shadow-card-hover: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; + --tblr-box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1); +} +@media (max-width: 991.98px) { + :root, + :host, + [data-bs-theme=light] { + --tblr-page-padding: var(--tblr-spacer-2); + } +} + +@keyframes pulse { + from { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } + 50% { + transform: scale3d(1, 1, 1); + opacity: 1; + } + to { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } +} +@keyframes tada { + 0% { + transform: scale3d(1, 1, 1); + } + 10%, 5% { + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -5deg); + } + 15%, 25%, 35%, 45% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg); + } + 20%, 30%, 40% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg); + } + 50% { + transform: scale3d(1, 1, 1); + } +} +@keyframes rotate-360 { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +@keyframes blink { + from { + opacity: 0; + } + 50% { + opacity: 1; + } + to { + opacity: 0; + } +} +body { + letter-spacing: 0; + touch-action: manipulation; + text-rendering: optimizeLegibility; + font-feature-settings: "liga" 0; + position: relative; + min-height: 100%; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@media print { + body { + background: transparent; + } +} + +* { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} + +*::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + *::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} + +*::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} + +*::-webkit-scrollbar-track { + background: transparent; +} + +*:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} + +*::-webkit-scrollbar-corner { + background: transparent; +} + +.layout-fluid .container, +.layout-fluid [class^=container-], +.layout-fluid [class*=" container-"] { + max-width: 100%; +} + +.layout-boxed { + --tblr-theme-boxed-border-radius: 0; + --tblr-theme-boxed-width: 1320px; +} +@media (min-width: 768px) { + .layout-boxed { + background: #182433 linear-gradient(to right, rgba(255, 255, 255, 0.1), transparent) fixed; + padding: 1rem; + --tblr-theme-boxed-border-radius: 4px; + } +} +.layout-boxed .page { + margin: 0 auto; + max-width: var(--tblr-theme-boxed-width); + border-radius: var(--tblr-theme-boxed-border-radius); + color: var(--tblr-body-color); +} +@media (min-width: 768px) { + .layout-boxed .page { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background: var(--tblr-body-bg); + } +} +.layout-boxed .page > .navbar:first-child { + border-top-left-radius: var(--tblr-theme-boxed-border-radius); + border-top-right-radius: var(--tblr-theme-boxed-border-radius); +} + +/** +Navbar + */ +.navbar { + --tblr-navbar-bg: var(--tblr-bg-surface); + --tblr-navbar-border-width: var(--tblr-border-width); + --tblr-navbar-active-border-color: var(--tblr-primary); + --tblr-navbar-active-bg: rgba(0, 0, 0, 0.06); + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-border-color: var(--tblr-border-color); + align-items: stretch; + min-height: 3.5rem; + box-shadow: inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color); + background: var(--tblr-navbar-bg); + color: var(--tblr-navbar-color); +} +.navbar-collapse .navbar { + flex-grow: 1; +} +.navbar.collapsing { + min-height: 0; +} +.navbar .dropdown-menu { + position: absolute; + z-index: 1030; +} +.navbar .navbar-nav { + min-height: 3rem; +} +.navbar .navbar-nav .nav-link { + position: relative; + min-width: 2rem; + min-height: 2rem; + justify-content: center; + border-radius: var(--tblr-border-radius); +} +.navbar .navbar-nav .nav-link .badge { + position: absolute; + top: 0.375rem; + right: 0.375rem; + transform: translate(50%, -50%); +} + +.navbar-nav { + margin: 0; + padding: 0; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 576px) { + .navbar-expand-sm .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-sm .nav-item.active { + position: relative; + } + .navbar-expand-sm .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-sm.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical ~ .navbar, + .navbar-expand-sm.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-sm.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-sm.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 767.98px) { + .navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-expand-md .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-md .nav-item.active { + position: relative; + } + .navbar-expand-md .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-md.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical ~ .navbar, + .navbar-expand-md.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-md.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-md.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 991.98px) { + .navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-expand-lg .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-lg .nav-item.active { + position: relative; + } + .navbar-expand-lg .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-lg.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical ~ .navbar, + .navbar-expand-lg.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-lg.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-lg.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 1199.98px) { + .navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xl .nav-item.active { + position: relative; + } + .navbar-expand-xl .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xl.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical ~ .navbar, + .navbar-expand-xl.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-xl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +@media (max-width: 1399.98px) { + .navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xxl .nav-item.active { + position: relative; + } + .navbar-expand-xxl .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xxl.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical ~ .navbar, + .navbar-expand-xxl.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; + } + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; + } +} +.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-expand .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; +} +.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-left: auto; +} +.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; +} +.navbar-expand .navbar-collapse { + width: auto; + flex: 1 1 auto; +} +.navbar-expand .nav-item.active { + position: relative; +} +.navbar-expand .nav-item.active:after { + content: ""; + position: absolute; + left: 0; + right: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; +} +.navbar-expand.navbar-vertical { + box-shadow: inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical.navbar-right { + box-shadow: inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical ~ .navbar, +.navbar-expand.navbar-vertical ~ .page-wrapper { + margin-left: 15rem; +} +.navbar-expand.navbar-vertical.navbar-right ~ .navbar, +.navbar-expand.navbar-vertical.navbar-right ~ .page-wrapper { + margin-left: 0; + margin-right: 15rem; +} + +/** +Navbar brand + */ +.navbar-brand { + display: inline-flex; + align-items: center; + font-weight: var(--tblr-font-weight-bold); + margin: 0; + line-height: 1; + gap: 0.5rem; +} + +.navbar-brand-image { + height: 2rem; + width: auto; +} + +/** +Navbar toggler + */ +.navbar-toggler { + border: 0; + width: 2rem; + height: 2rem; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.navbar-toggler-icon { + height: 2px; + width: 1.25em; + background: currentColor; + border-radius: 10px; + transition: top 0.2s 0.2s, bottom 0.2s 0.2s, transform 0.2s, opacity 0s 0.2s; + position: relative; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler-icon:before, .navbar-toggler-icon:after { + content: ""; + display: block; + height: inherit; + width: inherit; + border-radius: inherit; + background: inherit; + position: absolute; + left: 0; + transition: inherit; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon:before, .navbar-toggler-icon:after { + transition: none; + } +} +.navbar-toggler-icon:before { + top: -0.45em; +} +.navbar-toggler-icon:after { + bottom: -0.45em; +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transform: rotate(45deg); + transition: top 0.3s, bottom 0.3s, transform 0.3s 0.3s, opacity 0s 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before { + top: 0; + transform: rotate(-90deg); +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after { + bottom: 0; + opacity: 0; +} + +/** +Navbar transparent + */ +.navbar-transparent { + --tblr-navbar-border-color: transparent !important; + background: transparent !important; +} + +/** +Navbar nav + */ +.navbar-nav { + align-items: stretch; +} +.navbar-nav .nav-item { + display: flex; + flex-direction: column; + justify-content: center; +} + +/** +Navbar side + */ +.navbar-side { + margin: 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-around; +} + +/** +Navbar vertical + */ +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 576px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-sm { + transition: none; + } +} +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-sm .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-sm > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-sm ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-sm ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-sm.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 768px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-md { + transition: none; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-md .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-md .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-md .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-md > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-md ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-md ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-md.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 992px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-lg { + transition: none; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-lg .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-lg > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-lg ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-lg ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-lg.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1200px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xl { + transition: none; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xl ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xl ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-xl.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1400px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xxl { + transition: none; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl.navbar-right { + left: auto; + right: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xxl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl ~ .page { + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xxl ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .navbar-vertical.navbar-expand-xxl.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-left: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; + } +} +.navbar-vertical.navbar-expand { + width: 15rem; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; +} +@media (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand { + transition: none; + } +} +.navbar-vertical.navbar-expand.navbar-right { + left: auto; + right: 0; +} +.navbar-vertical.navbar-expand .navbar-brand { + padding: 0.75rem 0; + justify-content: center; +} +.navbar-vertical.navbar-expand .navbar-collapse { + align-items: stretch; +} +.navbar-vertical.navbar-expand .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; +} +.navbar-vertical.navbar-expand .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.navbar-vertical.navbar-expand > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; +} +.navbar-vertical.navbar-expand ~ .page { + padding-left: 15rem; +} +.navbar-vertical.navbar-expand ~ .page [class^=container] { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.navbar-vertical.navbar-expand.navbar-right ~ .page { + padding-left: 0; + padding-right: 15rem; +} +.navbar-vertical.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav { + margin-left: 0; + margin-right: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-left: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-left: auto; +} +.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-left-width: 3px; + right: auto; + top: 0; + bottom: 0; +} + +.navbar-overlap:after { + content: ""; + height: 9rem; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: inherit; + z-index: -1; + box-shadow: inherit; +} + +.page { + display: flex; + flex-direction: column; + position: relative; + min-height: 100%; +} + +.page-center .container { + margin-top: auto; + margin-bottom: auto; +} + +.page-wrapper { + flex: 1; + display: flex; + flex-direction: column; +} +@media print { + .page-wrapper { + margin: 0 !important; + } +} + +.page-wrapper-full .page-body:first-child { + margin: 0; + border-top: 0; +} + +.page-body { + margin-top: var(--tblr-page-padding-y); + margin-bottom: var(--tblr-page-padding-y); +} + +.page-body-card { + background: var(--tblr-bg-surface); + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + padding: var(--tblr-page-padding) 0; + margin-bottom: 0; + flex: 1; +} +.page-body ~ .page-body-card { + margin-top: 0; +} + +.page-cover { + background: no-repeat center/cover; + min-height: 9rem; +} +@media (min-width: 768px) { + .page-cover { + min-height: 12rem; + } +} +@media (min-width: 992px) { + .page-cover { + min-height: 15rem; + } +} + +.page-cover-overlay { + position: relative; +} +.page-cover-overlay:after { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.page-header { + display: flex; + flex-wrap: wrap; + min-height: 2.25rem; + flex-direction: column; + justify-content: center; +} +.page-wrapper .page-header { + margin: var(--tblr-page-padding-y) 0 0; +} + +.page-header-border { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding: var(--tblr-page-padding-y) 0; + margin: 0 !important; + background-color: var(--tblr-bg-surface); +} + +.page-pretitle { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.page-title { + margin: 0; + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h4); + font-weight: var(--tblr-font-weight-headings); + color: inherit; + display: flex; + align-items: center; +} +.page-title svg { + width: 1.5rem; + height: 1.5rem; + margin-right: 0.25rem; +} + +.page-title-lg { + font-size: 1.5rem; + line-height: 2rem; +} + +.page-subtitle { + margin-top: 0.25rem; + color: var(--tblr-secondary); +} + +.page-cover { + --tblr-page-cover-blur: 20px; + --tblr-page-cover-padding: 1rem; + min-height: 6rem; + padding: var(--tblr-page-cover-padding) 0; + position: relative; + overflow: hidden; +} + +.page-cover-img { + position: absolute; + top: calc(-2 * var(--tblr-page-cover-blur, 0)); + left: calc(-2 * var(--tblr-page-cover-blur, 0)); + right: calc(-2 * var(--tblr-page-cover-blur, 0)); + bottom: calc(-2 * var(--tblr-page-cover-blur, 0)); + pointer-events: none; + filter: blur(var(--tblr-page-cover-blur)); + -o-object-fit: cover; + object-fit: cover; + background-size: cover; + background-position: center; + z-index: -1; +} + +.page-tabs { + margin-top: 0.5rem; + position: relative; +} + +.page-header-tabs .nav-bordered { + border: 0; +} +.page-header-tabs + .page-body-card { + margin-top: 0; +} + +.footer { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background-color: #ffffff; + padding: 2rem 0; + color: var(--tblr-secondary); + margin-top: auto; +} + +.footer-transparent { + background-color: transparent; + border-top: 0; +} + +body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light { + display: none !important; +} +body.theme-dark .hide-theme-dark, body[data-bs-theme=dark] .hide-theme-dark { + display: none !important; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-muted: #3a4859; + --tblr-body-bg: #151f2c; + --tblr-body-bg-rgb: 21, 31, 44; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-bg-forms: #151f2c; + --tblr-bg-surface: #182433; + --tblr-bg-surface-dark: #151f2c; + --tblr-bg-surface-secondary: #1b293a; + --tblr-bg-surface-tertiary: #151f2c; + --tblr-link-color: #0069cf; + --tblr-link-hover-color: #0054a6; + --tblr-active-bg: #1b293a; + --tblr-disabled-color: var(--tblr-gray-700); + --tblr-border-color: var(--tblr-dark-mode-border-color); + --tblr-border-color-translucent: var( + --tblr-dark-mode-border-color-translucent + ); + --tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color); + --tblr-border-color-active: var( + --tblr-dark-mode-border-color-active + ); + --tblr-btn-color: #151f2c; + --tblr-code-color: var(--tblr-body-color); + --tblr-code-bg: #1f2e41; + --tblr-primary-lt: #16293f; + --tblr-primary-lt-rgb: 22, 41, 63; + --tblr-secondary-lt: #202c3b; + --tblr-secondary-lt-rgb: 32, 44, 59; + --tblr-success-lt: #1a3235; + --tblr-success-lt-rgb: 26, 50, 53; + --tblr-info-lt: #1c3044; + --tblr-info-lt-rgb: 28, 48, 68; + --tblr-warning-lt: #2e2b2f; + --tblr-warning-lt-rgb: 46, 43, 47; + --tblr-danger-lt: #2b2634; + --tblr-danger-lt-rgb: 43, 38, 52; + --tblr-light-lt: #2f3a47; + --tblr-light-lt-rgb: 47, 58, 71; + --tblr-dark-lt: #182433; + --tblr-dark-lt-rgb: 24, 36, 51; + --tblr-muted-lt: #202c3b; + --tblr-muted-lt-rgb: 32, 44, 59; + --tblr-blue-lt: #16293f; + --tblr-blue-lt-rgb: 22, 41, 63; + --tblr-azure-lt: #1c3044; + --tblr-azure-lt-rgb: 28, 48, 68; + --tblr-indigo-lt: #1c2a45; + --tblr-indigo-lt-rgb: 28, 42, 69; + --tblr-purple-lt: #272742; + --tblr-purple-lt-rgb: 39, 39, 66; + --tblr-pink-lt: #2b2639; + --tblr-pink-lt-rgb: 43, 38, 57; + --tblr-red-lt: #2b2634; + --tblr-red-lt-rgb: 43, 38, 52; + --tblr-orange-lt: #2e2b2f; + --tblr-orange-lt-rgb: 46, 43, 47; + --tblr-yellow-lt: #2e302e; + --tblr-yellow-lt-rgb: 46, 48, 46; + --tblr-lime-lt: #213330; + --tblr-lime-lt-rgb: 33, 51, 48; + --tblr-green-lt: #1a3235; + --tblr-green-lt-rgb: 26, 50, 53; + --tblr-teal-lt: #17313a; + --tblr-teal-lt-rgb: 23, 49, 58; + --tblr-cyan-lt: #183140; + --tblr-cyan-lt-rgb: 24, 49, 64; + --tblr-facebook-lt: #182c46; + --tblr-facebook-lt-rgb: 24, 44, 70; + --tblr-twitter-lt: #193146; + --tblr-twitter-lt-rgb: 25, 49, 70; + --tblr-linkedin-lt: #172b41; + --tblr-linkedin-lt-rgb: 23, 43, 65; + --tblr-google-lt: #2c2834; + --tblr-google-lt-rgb: 44, 40, 52; + --tblr-youtube-lt: #2f202e; + --tblr-youtube-lt-rgb: 47, 32, 46; + --tblr-vimeo-lt: #183345; + --tblr-vimeo-lt-rgb: 24, 51, 69; + --tblr-dribbble-lt: #2d283c; + --tblr-dribbble-lt-rgb: 45, 40, 60; + --tblr-github-lt: #182330; + --tblr-github-lt-rgb: 24, 35, 48; + --tblr-instagram-lt: #2c2737; + --tblr-instagram-lt-rgb: 44, 39, 55; + --tblr-pinterest-lt: #292131; + --tblr-pinterest-lt-rgb: 41, 33, 49; + --tblr-vk-lt: #202e3f; + --tblr-vk-lt-rgb: 32, 46, 63; + --tblr-rss-lt: #2f312e; + --tblr-rss-lt-rgb: 47, 49, 46; + --tblr-flickr-lt: #162a44; + --tblr-flickr-lt-rgb: 22, 42, 68; + --tblr-bitbucket-lt: #162942; + --tblr-bitbucket-lt-rgb: 22, 41, 66; + --tblr-tabler-lt: #16293f; + --tblr-tabler-lt-rgb: 22, 41, 63; +} +[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image { + filter: brightness(0) invert(1); +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); +} + +.accordion-button:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} +.accordion-button:after { + opacity: 0.7; +} +.accordion-button:not(.collapsed) { + font-weight: var(--tblr-font-weight-bold); + border-bottom-color: transparent; + box-shadow: none; +} +.accordion-button:not(.collapsed):after { + opacity: 1; +} + +.alert { + --tblr-alert-color: var(--tblr-secondary); + --tblr-alert-bg: var(--tblr-surface); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-left: 0.25rem var(--tblr-border-style) var(--tblr-alert-color); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.alert > :last-child { + margin-bottom: 0; +} + +.alert-important { + border-color: transparent; + background: var(--tblr-alert-color); + color: #fff; +} +.alert-important .alert-icon, +.alert-important .alert-link, +.alert-important .alert-title { + color: inherit; +} +.alert-important .alert-link:hover { + color: inherit; +} +.alert-important .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.alert-link, .alert-link:hover { + color: var(--tblr-alert-color); +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler); +} + +.alert-icon { + color: var(--tblr-alert-color); + width: 1.5rem !important; + height: 1.5rem !important; + margin: -0.125rem 1rem -0.125rem 0; +} + +.alert-title { + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: var(--tblr-font-weight-bold); + margin-bottom: 0.25rem; + color: var(--tblr-alert-color); +} + +.avatar { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-bg: var(--tblr-bg-surface-secondary); + --tblr-avatar-box-shadow: var(--tblr-box-shadow-border); + --tblr-avatar-font-size: 1rem; + --tblr-avatar-icon-size: 1.5rem; + position: relative; + width: var(--tblr-avatar-size); + height: var(--tblr-avatar-size); + font-size: var(--tblr-avatar-font-size); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--tblr-secondary); + text-align: center; + text-transform: uppercase; + vertical-align: bottom; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-avatar-bg) no-repeat center/cover; + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-avatar-box-shadow); +} +.avatar .icon { + width: var(--tblr-avatar-icon-size); + height: var(--tblr-avatar-icon-size); +} +.avatar .badge { + position: absolute; + right: 0; + bottom: 0; + border-radius: 100rem; + box-shadow: 0 0 0 calc(var(--tblr-avatar-status-size) / 4) var(--tblr-bg-surface); +} +a.avatar { + cursor: pointer; +} + +.avatar-rounded { + border-radius: 100rem; +} + +.avatar-xxs { + --tblr-avatar-size: 1rem; + --tblr-avatar-status-size: 0.25rem; + --tblr-avatar-font-size: 0.5rem; + --tblr-avatar-icon-size: 0.75rem; +} + +.avatar-xxs .badge:empty { + width: 0.25rem; + height: 0.25rem; +} + +.avatar-xs { + --tblr-avatar-size: 1.25rem; + --tblr-avatar-status-size: 0.375rem; + --tblr-avatar-font-size: 0.625rem; + --tblr-avatar-icon-size: 1rem; +} + +.avatar-xs .badge:empty { + width: 0.375rem; + height: 0.375rem; +} + +.avatar-sm { + --tblr-avatar-size: 2rem; + --tblr-avatar-status-size: 0.5rem; + --tblr-avatar-font-size: 0.75rem; + --tblr-avatar-icon-size: 1.25rem; +} + +.avatar-sm .badge:empty { + width: 0.5rem; + height: 0.5rem; +} + +.avatar-md { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 0.875rem; + --tblr-avatar-icon-size: 1.5rem; +} + +.avatar-md .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-lg { + --tblr-avatar-size: 3rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 1.25rem; + --tblr-avatar-icon-size: 2rem; +} + +.avatar-lg .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-xl { + --tblr-avatar-size: 5rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 2rem; + --tblr-avatar-icon-size: 3rem; +} + +.avatar-xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-2xl { + --tblr-avatar-size: 7rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 3rem; + --tblr-avatar-icon-size: 5rem; +} + +.avatar-2xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} +.avatar-list a.avatar:hover { + z-index: 1; +} + +.avatar-list-stacked { + display: block; + --tblr-list-gap: 0; +} +.avatar-list-stacked .avatar { + margin-right: calc(-0.5 * var(--tblr-avatar-size)) !important; + box-shadow: var(--tblr-avatar-box-shadow), 0 0 0 2px var(--tblr-card-cap-bg, var(--tblr-card-bg, var(--tblr-bg-surface))); +} + +.avatar-upload { + width: 4rem; + height: 4rem; + border: var(--tblr-border-width) dashed var(--tblr-border-color); + background: var(--tblr-bg-forms); + flex-direction: column; + transition: color 0.3s, background-color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .avatar-upload { + transition: none; + } +} +.avatar-upload svg { + width: 1.5rem; + height: 1.5rem; + stroke-width: 1; +} +.avatar-upload:hover { + border-color: var(--tblr-primary); + color: var(--tblr-primary); + text-decoration: none; +} + +.avatar-upload-text { + font-size: 0.625rem; + line-height: 1; + margin-top: 0.25rem; +} + +.avatar-cover { + margin-top: calc(-0.5 * var(--tblr-avatar-size)); + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-body-bg)); +} + +.badge { + justify-content: center; + align-items: center; + background: var(--tblr-bg-surface-secondary); + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + min-width: 1.35714285em; + font-weight: var(--tblr-font-weight-bold); + letter-spacing: 0.04em; + vertical-align: bottom; +} +a.badge { + color: var(--tblr-bg-surface); +} + +.badge .avatar { + box-sizing: content-box; + width: 1.25rem; + height: 1.25rem; + margin: 0 0.5rem 0 -0.5rem; +} +.badge .icon { + width: 1em; + height: 1em; + font-size: 1rem; + stroke-width: 2; +} + +.badge:empty, +.badge-empty { + display: inline-block; + width: 0.5rem; + height: 0.5rem; + min-width: 0; + min-height: auto; + padding: 0; + border-radius: 100rem; + vertical-align: baseline; +} + +.badge-outline { + background-color: transparent; + border: var(--tblr-border-width) var(--tblr-border-style) currentColor; +} + +.badge-pill { + border-radius: 100rem; +} + +.badges-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.badge-notification { + position: absolute !important; + top: 0 !important; + right: 0 !important; + transform: translate(50%, -50%); + z-index: 1; +} + +.badge-blink { + animation: blink 2s infinite; +} + +.breadcrumb { + --tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold); + --tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color); + --tblr-breadcrumb-link-color: var(--tblr-link-color); + padding: 0; + margin: 0; + background: transparent; +} +.breadcrumb a { + color: var(--tblr-breadcrumb-link-color); +} +.breadcrumb a:hover { + text-decoration: underline; +} + +.breadcrumb-muted { + --tblr-breadcrumb-link-color: var(--tblr-secondary); +} + +.breadcrumb-item.active { + font-weight: var(--tblr-breadcrumb-item-active-font-weight); +} +.breadcrumb-item.active a { + color: inherit; + pointer-events: none; +} +.breadcrumb-item.disabled { + color: var(--tblr-breadcrumb-item-disabled-color); +} +.breadcrumb-item.disabled:before { + color: inherit; +} +.breadcrumb-item.disabled a { + color: inherit; + pointer-events: none; +} + +.breadcrumb-dots { + --tblr-breadcrumb-divider: "·"; +} + +.breadcrumb-arrows { + --tblr-breadcrumb-divider: "›"; +} + +.breadcrumb-bullets { + --tblr-breadcrumb-divider: "•"; +} + +.btn { + --tblr-btn-icon-size: 1.25rem; + --tblr-btn-bg: var(--tblr-bg-surface); + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-border-color: var(--tblr-border-color); + --tblr-btn-hover-bg: var(--tblr-btn-bg); + --tblr-btn-hover-border-color: var(--tblr-border-color-active); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-active-color: var(--tblr-primary); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-btn-active-border-color: var(--tblr-primary); + display: inline-flex; + align-items: center; + justify-content: center; + white-space: nowrap; + box-shadow: var(--tblr-btn-box-shadow); +} +.btn .icon { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + min-width: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4); + vertical-align: bottom; + color: inherit; +} +.btn .avatar { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4); +} +.btn .icon-right { + margin: 0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2); +} +.btn .badge { + top: auto; +} +.btn-check + .btn:hover { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} + +.btn-link { + color: #0054a6; + background-color: transparent; + border-color: transparent; + box-shadow: none; +} +.btn-link .icon { + color: inherit; +} +.btn-link:hover { + color: #004385; + border-color: transparent; +} + +.btn-primary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-primary-fg); + --tblr-btn-bg: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-border-color: var(--tblr-primary); +} + +.btn-secondary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-secondary-fg); + --tblr-btn-bg: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-border-color: var(--tblr-secondary); +} + +.btn-success { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-success-fg); + --tblr-btn-bg: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-border-color: var(--tblr-success); +} + +.btn-info { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-info-fg); + --tblr-btn-bg: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-border-color: var(--tblr-info); +} + +.btn-warning { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-warning-fg); + --tblr-btn-bg: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-border-color: var(--tblr-warning); +} + +.btn-danger { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-danger-fg); + --tblr-btn-bg: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-border-color: var(--tblr-danger); +} + +.btn-light { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-light-fg); + --tblr-btn-bg: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-border-color: var(--tblr-light); +} + +.btn-dark { + --tblr-btn-border-color: var(--tblr-dark-mode-border-color); + --tblr-btn-hover-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-active-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-color: var(--tblr-dark-fg); + --tblr-btn-bg: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-border-color: var(--tblr-dark); +} + +.btn-muted { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-muted-fg); + --tblr-btn-bg: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-border-color: var(--tblr-muted); +} + +.btn-blue { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-blue-fg); + --tblr-btn-bg: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-border-color: var(--tblr-blue); +} + +.btn-azure { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-azure-fg); + --tblr-btn-bg: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-border-color: var(--tblr-azure); +} + +.btn-indigo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-indigo-fg); + --tblr-btn-bg: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-border-color: var(--tblr-indigo); +} + +.btn-purple { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-purple-fg); + --tblr-btn-bg: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-border-color: var(--tblr-purple); +} + +.btn-pink { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pink-fg); + --tblr-btn-bg: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-border-color: var(--tblr-pink); +} + +.btn-red { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-red-fg); + --tblr-btn-bg: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-border-color: var(--tblr-red); +} + +.btn-orange { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-orange-fg); + --tblr-btn-bg: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-border-color: var(--tblr-orange); +} + +.btn-yellow { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-yellow-fg); + --tblr-btn-bg: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-border-color: var(--tblr-yellow); +} + +.btn-lime { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-lime-fg); + --tblr-btn-bg: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-border-color: var(--tblr-lime); +} + +.btn-green { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-green-fg); + --tblr-btn-bg: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-border-color: var(--tblr-green); +} + +.btn-teal { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-teal-fg); + --tblr-btn-bg: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-border-color: var(--tblr-teal); +} + +.btn-cyan { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-cyan-fg); + --tblr-btn-bg: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-border-color: var(--tblr-cyan); +} + +.btn-facebook { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-facebook-fg); + --tblr-btn-bg: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-border-color: var(--tblr-facebook); +} + +.btn-twitter { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-twitter-fg); + --tblr-btn-bg: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-border-color: var(--tblr-twitter); +} + +.btn-linkedin { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-linkedin-fg); + --tblr-btn-bg: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-border-color: var(--tblr-linkedin); +} + +.btn-google { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-google-fg); + --tblr-btn-bg: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-border-color: var(--tblr-google); +} + +.btn-youtube { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-youtube-fg); + --tblr-btn-bg: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-border-color: var(--tblr-youtube); +} + +.btn-vimeo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vimeo-fg); + --tblr-btn-bg: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-border-color: var(--tblr-vimeo); +} + +.btn-dribbble { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-dribbble-fg); + --tblr-btn-bg: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-border-color: var(--tblr-dribbble); +} + +.btn-github { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-github-fg); + --tblr-btn-bg: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-border-color: var(--tblr-github); +} + +.btn-instagram { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-instagram-fg); + --tblr-btn-bg: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-border-color: var(--tblr-instagram); +} + +.btn-pinterest { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pinterest-fg); + --tblr-btn-bg: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-border-color: var(--tblr-pinterest); +} + +.btn-vk { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vk-fg); + --tblr-btn-bg: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-border-color: var(--tblr-vk); +} + +.btn-rss { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-rss-fg); + --tblr-btn-bg: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-border-color: var(--tblr-rss); +} + +.btn-flickr { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-flickr-fg); + --tblr-btn-bg: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-border-color: var(--tblr-flickr); +} + +.btn-bitbucket { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-bitbucket-fg); + --tblr-btn-bg: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-border-color: var(--tblr-bitbucket); +} + +.btn-tabler { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-tabler-fg); + --tblr-btn-bg: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-border-color: var(--tblr-tabler); +} + +.btn-ghost-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-hover-border-color: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-hover-border-color: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-hover-border-color: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-hover-border-color: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-hover-border-color: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-hover-border-color: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-hover-border-color: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-hover-border-color: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-hover-border-color: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-hover-border-color: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-hover-border-color: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-hover-border-color: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-hover-border-color: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-hover-border-color: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-hover-border-color: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-hover-border-color: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-hover-border-color: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-hover-border-color: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-hover-border-color: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-hover-border-color: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-hover-border-color: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-hover-border-color: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-hover-border-color: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-hover-border-color: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-hover-border-color: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-hover-border-color: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-hover-border-color: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-hover-border-color: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-hover-border-color: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-hover-border-color: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-hover-border-color: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-hover-border-color: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-hover-border-color: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-hover-border-color: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-hover-border-color: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-hover-border-color: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: .75rem; +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: 2rem; +} + +.btn-pill { + padding-right: 1.5em; + padding-left: 1.5em; + border-radius: 10rem; +} +.btn-pill[class*=btn-icon] { + padding: 0.375rem 15px; +} + +.btn-square { + border-radius: 0; +} + +.btn-icon { + min-width: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + min-height: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + padding-left: 0; + padding-right: 0; +} +.btn-icon .icon { + margin: calc(-1 * var(--tblr-btn-padding-x)); +} + +.btn-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.btn-floating { + position: fixed; + z-index: 1030; + bottom: 1.5rem; + right: 1.5rem; + border-radius: 100rem; +} + +.btn-loading { + position: relative; + color: transparent !important; + text-shadow: none !important; + pointer-events: none; +} +.btn-loading > * { + opacity: 0; +} +.btn-loading:after { + content: ""; + display: inline-block; + vertical-align: text-bottom; + border: 2px var(--tblr-border-style) currentColor; + border-right-color: transparent; + border-radius: 100rem; + color: var(--tblr-btn-color); + position: absolute; + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + left: calc(50% - var(--tblr-btn-icon-size) / 2); + top: calc(50% - var(--tblr-btn-icon-size) / 2); + animation: spinner-border 0.75s linear infinite; +} + +.btn-action { + padding: 0; + border: 0; + color: var(--tblr-secondary); + display: inline-flex; + width: 2rem; + height: 2rem; + align-items: center; + justify-content: center; + border-radius: var(--tblr-border-radius); + background: transparent; +} +.btn-action:after { + content: none; +} +.btn-action:focus { + outline: none; + box-shadow: none; +} +.btn-action:hover, .btn-action.show { + color: var(--tblr-body-color); + background: var(--tblr-active-bg); +} +.btn-action.show { + color: var(--tblr-primary); +} +.btn-action .icon { + margin: 0; + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; + stroke-width: 1; +} + +.btn-actions { + display: flex; +} + +.btn-group, +.btn-group-vertical { + box-shadow: var(--tblr-box-shadow-input); +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 5; +} +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus { + z-index: 1; +} + +.calendar { + display: block; + font-size: 0.765625rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.calendar-nav { + display: flex; + align-items: center; +} + +.calendar-title { + flex: 1; + text-align: center; +} + +.calendar-body, +.calendar-header { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + padding: 0.5rem 0; +} + +.calendar-header { + color: var(--tblr-secondary); +} + +.calendar-date { + flex: 0 0 14.2857142857%; + max-width: 14.2857142857%; + padding: 0.2rem; + text-align: center; + border: 0; +} +.calendar-date.prev-month, .calendar-date.next-month { + opacity: 0.25; +} +.calendar-date .date-item { + position: relative; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + line-height: 1.4rem; + color: #66758c; + text-align: center; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: 0 0; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + border-radius: 100rem; + outline: 0; + transition: background 0.3s, border 0.3s, box-shadow 0.32s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .calendar-date .date-item { + transition: none; + } +} +.calendar-date .date-item:hover { + color: var(--tblr-primary); + text-decoration: none; + background: #fefeff; + border-color: var(--tblr-border-color); +} +.calendar-date .date-today { + color: var(--tblr-primary); + border-color: var(--tblr-border-color); +} + +.calendar-range { + position: relative; +} +.calendar-range:before { + position: absolute; + top: 50%; + right: 0; + left: 0; + height: 1.4rem; + content: ""; + background: rgba(var(--tblr-primary-rgb), 0.1); + transform: translateY(-50%); +} +.calendar-range.range-start .date-item, .calendar-range.range-end .date-item { + color: #ffffff; + background: var(--tblr-primary); + border-color: var(--tblr-primary); +} +.calendar-range.range-start:before { + left: 50%; +} +.calendar-range.range-end:before { + right: 50%; +} + +.carousel-indicators-vertical { + left: auto; + top: 0; + margin: 0 1rem 0 0; + flex-direction: column; +} +.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0 3px; + width: 3px; + height: 30px; + border: 0; + border-left: 10px var(--tblr-border-style) transparent; + border-right: 10px var(--tblr-border-style) transparent; +} + +.carousel-indicators-dot [data-bs-target] { + width: 0.5rem; + height: 0.5rem; + border-radius: 100rem; + border: 10px var(--tblr-border-style) transparent; + margin: 0; +} + +.carousel-indicators-thumb [data-bs-target] { + width: 2rem; + height: auto; + background: no-repeat center/cover; + border: 0; + border-radius: var(--tblr-border-radius); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + margin: 0 3px; + opacity: 0.75; +} +@media (min-width: 992px) { + .carousel-indicators-thumb [data-bs-target] { + width: 4rem; + } +} +.carousel-indicators-thumb [data-bs-target]:before { + content: ""; + padding-top: var(--tblr-aspect-ratio, 100%); + display: block; +} +.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0; +} + +.carousel-caption-background { + background: red; + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 90%; + background: linear-gradient(0deg, rgba(24, 36, 51, 0.9), rgba(24, 36, 51, 0)); +} + +.card { + transition: transform 0.3s ease-out, opacity 0.3s ease-out, box-shadow 0.3s ease-out; +} +@media (prefers-reduced-motion: reduce) { + .card { + transition: none; + } +} +@media print { + .card { + border: none; + box-shadow: none; + } +} +a.card { + color: inherit; +} +a.card:hover { + text-decoration: none; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; +} + +.card .card { + box-shadow: none; +} + +.card-borderless, +.card-borderless .card-header, +.card-borderless .card-footer { + border-color: transparent; +} + +.card-stamp { + --tblr-stamp-size: 7rem; + position: absolute; + top: 0; + right: 0; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + max-height: 100%; + border-top-right-radius: 4px; + opacity: 0.2; + overflow: hidden; + pointer-events: none; +} + +.card-stamp-lg { + --tblr-stamp-size: 13rem; +} + +.card-stamp-icon { + background: var(--tblr-secondary); + color: var(--tblr-card-bg, var(--tblr-bg-surface)); + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + position: relative; + top: calc(var(--tblr-stamp-size) * -0.25); + right: calc(var(--tblr-stamp-size) * -0.25); + font-size: calc(var(--tblr-stamp-size) * 0.75); + transform: rotate(10deg); +} +.card-stamp-icon .icon { + stroke-width: 2; + width: calc(var(--tblr-stamp-size) * 0.75); + height: calc(var(--tblr-stamp-size) * 0.75); +} + +.card-img, +.card-img-start { + border-top-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img, +.card-img-end { + border-top-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img-overlay { + display: flex; + flex-direction: column; + justify-content: flex-end; +} + +.card-img-overlay-dark { + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.card-inactive { + pointer-events: none; + box-shadow: none; +} +.card-inactive .card-body { + opacity: 0.64; +} + +.card-active { + --tblr-card-border-color: var(--tblr-primary); + --tblr-card-bg: var(--tblr-active-bg); +} + +.card-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 1.25rem 1.25rem; + text-align: center; + transition: background 0.3s; + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + flex: 1; + color: inherit; + font-weight: var(--tblr-font-weight-medium); +} +@media (prefers-reduced-motion: reduce) { + .card-btn { + transition: none; + } +} +.card-btn:hover { + text-decoration: none; + background: rgba(var(--tblr-primary-rgb), 0.04); +} +.card-btn + .card-btn { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Stacked card + */ +.card-stacked { + --tblr-card-stacked-offset: .25rem; + position: relative; +} +.card-stacked:after { + position: absolute; + top: calc(-1 * var(--tblr-card-stacked-offset)); + right: var(--tblr-card-stacked-offset); + left: var(--tblr-card-stacked-offset); + height: var(--tblr-card-stacked-offset); + content: ""; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-cover { + position: relative; + padding: 1.25rem 1.25rem; + background: #666666 no-repeat center/cover; +} +.card-cover:before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + content: ""; + background: rgba(24, 36, 51, 0.48); +} +.card-cover:first-child, .card-cover:first-child:before { + border-radius: 4px 4px 0 0; +} + +.card-cover-blurred:before { + -webkit-backdrop-filter: blur(2px); + backdrop-filter: blur(2px); +} + +.card-actions { + margin: -0.5rem -0.5rem -0.5rem auto; + padding-left: 0.5rem; +} +.card-actions a { + text-decoration: none; +} + +.card-header { + color: inherit; + display: flex; + align-items: center; + background: transparent; +} +.card-header:first-child { + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-header-light { + border-bottom-color: transparent; + background: var(--tblr-bg-surface-tertiary); +} + +.card-header-tabs { + background: var(--tblr-bg-surface-tertiary); + flex: 1; + margin: calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1); + padding: calc(var(--tblr-card-cap-padding-y) * 0.5) calc(var(--tblr-card-cap-padding-x) * 0.5) 0; +} + +.card-header-pills { + flex: 1; + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} + +.card-rotate-left { + transform: rotate(-1.5deg); +} + +.card-rotate-right { + transform: rotate(1.5deg); +} + +.card-link { + color: inherit; +} +.card-link:hover { + color: inherit; + text-decoration: none; + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.08); +} + +.card-link-rotate:hover { + transform: rotate(1.5deg); + opacity: 1; +} + +.card-link-pop:hover { + transform: translateY(-2px); + opacity: 1; +} + +.card-footer { + margin-top: auto; +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +.card-footer-transparent { + background: transparent; + border-color: transparent; + padding-top: 0; +} + +.card-footer-borderless { + border-top: none; +} + +.card-progress { + height: 0.25rem; +} +.card-progress:last-child { + border-radius: 0 0 2px 2px; +} +.card-progress:first-child { + border-radius: 2px 2px 0 0; +} + +.card-meta { + color: var(--tblr-secondary); +} + +.card-title { + display: block; + margin: 0 0 1rem; + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + color: inherit; + line-height: 1.5rem; +} +a.card-title:hover { + color: inherit; +} + +.card-header .card-title { + margin: 0; +} + +.card-subtitle { + margin-bottom: 1.25rem; + color: var(--tblr-secondary); + font-weight: normal; +} +.card-header .card-subtitle { + margin: 0; +} +.card-title .card-subtitle { + margin: 0 0 0 0.25rem; + font-size: 0.875rem; +} + +.card-body { + position: relative; +} +.card-body > :last-child { + margin-bottom: 0; +} +.card-sm > .card-body { + padding: 1rem; +} +@media (min-width: 768px) { + .card-md > .card-body { + padding: 2.5rem; + } +} +@media (min-width: 768px) { + .card-lg > .card-body { + padding: 2rem; + } +} +@media (min-width: 992px) { + .card-lg > .card-body { + padding: 4rem; + } +} +@media print { + .card-body { + padding: 0; + } +} +.card-body + .card-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.card-body-scrollable { + overflow: auto; +} + +/** +Card optinos + */ +.card-options { + top: 1.5rem; + right: 0.75rem; + display: flex; + margin-left: auto; +} + +.card-options-link { + display: inline-block; + min-width: 1rem; + margin-left: 0.25rem; + color: var(--tblr-secondary); +} + +/** +Card status + */ +.card-status-top { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2px; + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-status-start { + position: absolute; + right: auto; + bottom: 0; + width: 2px; + height: 100%; + border-radius: var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius); +} + +.card-status-bottom { + position: absolute; + top: initial; + bottom: 0; + width: 100%; + height: 2px; + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +/** +Card table + */ +.card-table { + margin-bottom: 0 !important; +} +.card-table tr td:first-child, +.card-table tr th:first-child { + padding-left: 1.25rem; + border-left: 0; +} +.card-table tr td:last-child, +.card-table tr th:last-child { + padding-right: 1.25rem; + border-right: 0; +} +.card-table thead tr:first-child, +.card-table tbody tr:first-child, +.card-table tfoot tr:first-child { + border-top: 0; +} +.card-table thead tr:first-child td, +.card-table thead tr:first-child th, +.card-table tbody tr:first-child td, +.card-table tbody tr:first-child th, +.card-table tfoot tr:first-child td, +.card-table tfoot tr:first-child th { + border-top: 0; +} +.card-body + .card-table { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color); +} + +/* +Card code + */ +.card-code { + padding: 0; +} +.card-code .highlight { + margin: 0; + border: 0; +} +.card-code pre { + margin: 0 !important; + border: 0 !important; +} + +/* +Card chart + */ +.card-chart { + position: relative; + z-index: 1; + height: 3.5rem; +} + +/** +Card avatar + */ +.card-avatar { + margin-left: auto; + margin-right: auto; + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-bg-surface)); + margin-top: calc(-1 * var(--tblr-avatar-size) * 0.5); +} + +/* +Card list group + */ +.card-body + .card-list-group { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.card-list-group .list-group-item { + padding-right: 1.25rem; + padding-left: 1.25rem; + border-right: 0; + border-left: 0; + border-radius: 0; +} +.card-list-group .list-group-item:last-child { + border-bottom: 0; +} +.card-list-group .list-group-item:first-child { + border-top: 0; +} + +.card-tabs .nav-tabs { + position: relative; + z-index: 1000; + border-bottom: 0; +} +.card-tabs .nav-tabs .nav-link { + background: var(--tblr-bg-surface-tertiary); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.card-tabs .nav-tabs .nav-link.active, .card-tabs .nav-tabs .nav-link:active, .card-tabs .nav-tabs .nav-link:hover { + border-color: var(--tblr-border-color-translucent); + color: var(--tblr-body-color); +} +.card-tabs .nav-tabs .nav-link.active { + color: inherit; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border-bottom-color: transparent; +} +.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link { + border-top-left-radius: 0; +} +.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link { + border-top-right-radius: 0; +} +.card-tabs .nav-tabs .nav-item + .nav-item { + margin-left: calc(-1 * var(--tblr-border-width)); +} +.card-tabs .nav-tabs-bottom { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link.active { + border-top-color: transparent; +} +.card-tabs .nav-tabs-bottom .nav-item { + margin-top: calc(-1 * var(--tblr-border-width)); + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-item .nav-link { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius); +} +.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link { + border-bottom-left-radius: 0; +} +.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link { + border-bottom-right-radius: 0; +} +.card-tabs .card { + border-bottom-left-radius: 0; +} +.card-tabs .nav-tabs + .tab-content .card { + border-bottom-left-radius: var(--tblr-card-border-radius); + border-top-left-radius: 0; +} + +/** +Card note +*/ +.card-note { + --tblr-card-bg: #fff7dd; + --tblr-card-border-color: #fff1c9; +} + +.btn-close { + cursor: pointer; +} +.btn-close:focus { + outline: none; +} + +.dropdown-menu { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.dropdown-menu.card { + padding: 0; + min-width: 25rem; + display: none; +} +.dropdown-menu.card.show { + display: flex; +} + +.dropdown-item { + min-width: 11rem; + display: flex; + align-items: center; + margin: 0; + line-height: 1.4285714286; +} + +.dropdown-item-icon { + width: 1.25rem !important; + height: 1.25rem !important; + margin-right: 0.5rem; + color: var(--tblr-secondary); + opacity: 0.7; + text-align: center; +} + +.dropdown-item-indicator { + margin-right: 0.5rem; + margin-left: -0.25rem; + height: 1.25rem; + display: inline-flex; + line-height: 1; + vertical-align: bottom; + align-items: center; +} + +.dropdown-header { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-bottom: 0.25rem; + pointer-events: none; +} + +.dropdown-menu-scrollable { + height: auto; + max-height: 13rem; + overflow-x: hidden; +} + +.dropdown-menu-column { + min-width: 11rem; +} +.dropdown-menu-column .dropdown-item { + min-width: 0; +} + +.dropdown-menu-columns { + display: flex; + flex: 0 0.25rem; +} + +.dropdown-menu-arrow:before { + content: ""; + position: absolute; + top: -0.25rem; + left: 0.75rem; + display: block; + background: inherit; + width: 14px; + height: 14px; + /*rtl:ignore*/ + transform: rotate(45deg); + transform-origin: center; + border: 1px solid; + border-color: inherit; + z-index: -1; + clip: rect(0px, 9px, 9px, 0px); +} +.dropdown-menu-arrow.dropdown-menu-end:before { + right: 0.75rem; + left: auto; +} + +.dropend > .dropdown-menu { + margin-top: calc(-0.25rem - 1px); + margin-left: -0.25rem; +} +.dropend .dropdown-toggle:after { + margin-left: auto; +} + +.dropdown-menu-card { + padding: 0; +} +.dropdown-menu-card > .card { + margin: 0; + border: 0; + box-shadow: none; +} + +.datagrid { + --tblr-datagrid-padding: 1.5rem; + --tblr-datagrid-item-width: 15rem; + display: grid; + grid-gap: var(--tblr-datagrid-padding); + grid-template-columns: repeat(auto-fit, minmax(var(--tblr-datagrid-item-width), 1fr)); +} + +.datagrid-title { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + margin-bottom: 0.25rem; +} + +.empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + padding: 1rem; + text-align: center; +} +@media (min-width: 768px) { + .empty { + padding: 3rem; + } +} + +.empty-icon { + margin: 0 0 1rem; + width: 3rem; + height: 3rem; + line-height: 1; + color: var(--tblr-secondary); +} +.empty-icon svg { + width: 100%; + height: 100%; +} + +.empty-img { + margin: 0 0 2rem; + line-height: 1; +} +.empty-img img { + height: 8rem; + width: auto; +} + +.empty-header { + margin: 0 0 1rem; + font-size: 4rem; + font-weight: var(--tblr-font-weight-light); + line-height: 1; + color: var(--tblr-secondary); +} + +.empty-title { + font-size: 1.25rem; + line-height: 1.75rem; + font-weight: var(--tblr-font-weight-bold); +} + +.empty-title, +.empty-subtitle { + margin: 0 0 0.5rem; +} + +.empty-action { + margin-top: 1.5rem; +} + +.empty-bordered { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.row > * { + min-width: 0; +} + +.col-separator { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.container-slim { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; + max-width: 16rem; +} +.container-tight { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; + max-width: 30rem; +} +.container-narrow { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-right: calc(var(--tblr-gutter-x) * 0.5); + padding-left: calc(var(--tblr-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; + max-width: 45rem; +} + +.row-0 { + margin-right: 0; + margin-left: 0; +} +.row-0 > .col, +.row-0 > [class*=col-] { + padding-right: 0; + padding-left: 0; +} +.row-0 .card { + margin-bottom: 0; +} + +.row-sm { + margin-right: -0.375rem; + margin-left: -0.375rem; +} +.row-sm > .col, +.row-sm > [class*=col-] { + padding-right: 0.375rem; + padding-left: 0.375rem; +} +.row-sm .card { + margin-bottom: 0.75rem; +} + +.row-md { + margin-right: -1.5rem; + margin-left: -1.5rem; +} +.row-md > .col, +.row-md > [class*=col-] { + padding-right: 1.5rem; + padding-left: 1.5rem; +} +.row-md .card { + margin-bottom: 3rem; +} + +.row-lg { + margin-right: -3rem; + margin-left: -3rem; +} +.row-lg > .col, +.row-lg > [class*=col-] { + padding-right: 3rem; + padding-left: 3rem; +} +.row-lg .card { + margin-bottom: 6rem; +} + +.row-deck > .col, +.row-deck > [class*=col-] { + display: flex; + align-items: stretch; +} +.row-deck > .col .card, +.row-deck > [class*=col-] .card { + flex: 1 1 auto; +} + +.row-cards { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: var(--tblr-page-padding); + min-width: 0; +} +.row-cards .row-cards { + flex: 1; +} + +.space-y { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x { + display: flex; + gap: 1rem; +} + +.space-y-0 { + display: flex; + flex-direction: column; + gap: 0; +} + +.space-x-0 { + display: flex; + gap: 0; +} + +.space-y-1 { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.space-x-1 { + display: flex; + gap: 0.25rem; +} + +.space-y-2 { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.space-x-2 { + display: flex; + gap: 0.5rem; +} + +.space-y-3 { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x-3 { + display: flex; + gap: 1rem; +} + +.space-y-4 { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.space-x-4 { + display: flex; + gap: 1.5rem; +} + +.space-y-5 { + display: flex; + flex-direction: column; + gap: 2rem; +} + +.space-x-5 { + display: flex; + gap: 2rem; +} + +.space-y-6 { + display: flex; + flex-direction: column; + gap: 3rem; +} + +.space-x-6 { + display: flex; + gap: 3rem; +} + +.space-y-7 { + display: flex; + flex-direction: column; + gap: 5rem; +} + +.space-x-7 { + display: flex; + gap: 5rem; +} + +.space-y-8 { + display: flex; + flex-direction: column; + gap: 8rem; +} + +.space-x-8 { + display: flex; + gap: 8rem; +} + +.divide-y > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x > :not(template):not(:first-child) { + padding-left: 1rem !important; +} +.divide-x > :not(template):not(:last-child) { + padding-right: 1rem !important; +} + +.divide-y-0 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-0 > :not(template):not(:first-child) { + padding-top: 0 !important; +} +.divide-y-0 > :not(template):not(:last-child) { + padding-bottom: 0 !important; +} + +.divide-x-0 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-0 > :not(template):not(:first-child) { + padding-left: 0 !important; +} +.divide-x-0 > :not(template):not(:last-child) { + padding-right: 0 !important; +} + +.divide-y-1 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-1 > :not(template):not(:first-child) { + padding-top: 0.25rem !important; +} +.divide-y-1 > :not(template):not(:last-child) { + padding-bottom: 0.25rem !important; +} + +.divide-x-1 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-1 > :not(template):not(:first-child) { + padding-left: 0.25rem !important; +} +.divide-x-1 > :not(template):not(:last-child) { + padding-right: 0.25rem !important; +} + +.divide-y-2 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-2 > :not(template):not(:first-child) { + padding-top: 0.5rem !important; +} +.divide-y-2 > :not(template):not(:last-child) { + padding-bottom: 0.5rem !important; +} + +.divide-x-2 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-2 > :not(template):not(:first-child) { + padding-left: 0.5rem !important; +} +.divide-x-2 > :not(template):not(:last-child) { + padding-right: 0.5rem !important; +} + +.divide-y-3 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-3 > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y-3 > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x-3 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-3 > :not(template):not(:first-child) { + padding-left: 1rem !important; +} +.divide-x-3 > :not(template):not(:last-child) { + padding-right: 1rem !important; +} + +.divide-y-4 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-4 > :not(template):not(:first-child) { + padding-top: 1.5rem !important; +} +.divide-y-4 > :not(template):not(:last-child) { + padding-bottom: 1.5rem !important; +} + +.divide-x-4 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-4 > :not(template):not(:first-child) { + padding-left: 1.5rem !important; +} +.divide-x-4 > :not(template):not(:last-child) { + padding-right: 1.5rem !important; +} + +.divide-y-5 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-5 > :not(template):not(:first-child) { + padding-top: 2rem !important; +} +.divide-y-5 > :not(template):not(:last-child) { + padding-bottom: 2rem !important; +} + +.divide-x-5 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-5 > :not(template):not(:first-child) { + padding-left: 2rem !important; +} +.divide-x-5 > :not(template):not(:last-child) { + padding-right: 2rem !important; +} + +.divide-y-6 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-6 > :not(template):not(:first-child) { + padding-top: 3rem !important; +} +.divide-y-6 > :not(template):not(:last-child) { + padding-bottom: 3rem !important; +} + +.divide-x-6 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-6 > :not(template):not(:first-child) { + padding-left: 3rem !important; +} +.divide-x-6 > :not(template):not(:last-child) { + padding-right: 3rem !important; +} + +.divide-y-7 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-7 > :not(template):not(:first-child) { + padding-top: 5rem !important; +} +.divide-y-7 > :not(template):not(:last-child) { + padding-bottom: 5rem !important; +} + +.divide-x-7 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-7 > :not(template):not(:first-child) { + padding-left: 5rem !important; +} +.divide-x-7 > :not(template):not(:last-child) { + padding-right: 5rem !important; +} + +.divide-y-8 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-8 > :not(template):not(:first-child) { + padding-top: 8rem !important; +} +.divide-y-8 > :not(template):not(:last-child) { + padding-bottom: 8rem !important; +} + +.divide-x-8 > :not(template) ~ :not(template) { + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-8 > :not(template):not(:first-child) { + padding-left: 8rem !important; +} +.divide-x-8 > :not(template):not(:last-child) { + padding-right: 8rem !important; +} + +.divide-y-fill { + display: flex; + flex-direction: column; + height: 100%; +} +.divide-y-fill > :not(template) { + flex: 1; + display: flex; + justify-content: center; + flex-direction: column; +} + +.icon { + --tblr-icon-size: 1.25rem; + width: var(--tblr-icon-size); + height: var(--tblr-icon-size); + font-size: var(--tblr-icon-size); + vertical-align: bottom; + stroke-width: 1.5; +} +.icon:hover { + text-decoration: none; +} + +.icon-inline { + --tblr-icon-size: 1rem; + vertical-align: -0.2rem; +} + +.icon-filled { + fill: currentColor; +} + +.icon-sm { + --tblr-icon-size: 1rem; + stroke-width: 1; +} + +.icon-md { + --tblr-icon-size: 2.5rem; + stroke-width: 1; +} + +.icon-lg { + --tblr-icon-size: 3.5rem; + stroke-width: 1; +} + +.icon-pulse { + transition: all 0.15s ease 0s; + animation: pulse 2s ease infinite; + animation-fill-mode: both; +} + +.icon-tada { + transition: all 0.15s ease 0s; + animation: tada 3s ease infinite; + animation-fill-mode: both; +} + +.icon-rotate { + transition: all 0.15s ease 0s; + animation: rotate-360 3s linear infinite; + animation-fill-mode: both; +} + +.img-responsive { + --tblr-img-responsive-ratio: 75%; + background: no-repeat center/cover; + padding-top: var(--tblr-img-responsive-ratio); +} + +.img-responsive-grid { + padding-top: calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y) / 2); +} + +.img-responsive-1x1 { + --tblr-img-responsive-ratio: 100%; +} + +.img-responsive-2x1 { + --tblr-img-responsive-ratio: 50%; +} + +.img-responsive-1x2 { + --tblr-img-responsive-ratio: 200%; +} + +.img-responsive-3x1 { + --tblr-img-responsive-ratio: 33.3333333333%; +} + +.img-responsive-1x3 { + --tblr-img-responsive-ratio: 300%; +} + +.img-responsive-4x3 { + --tblr-img-responsive-ratio: 75%; +} + +.img-responsive-3x4 { + --tblr-img-responsive-ratio: 133.3333333333%; +} + +.img-responsive-16x9 { + --tblr-img-responsive-ratio: 56.25%; +} + +.img-responsive-9x16 { + --tblr-img-responsive-ratio: 177.7777777778%; +} + +.img-responsive-21x9 { + --tblr-img-responsive-ratio: 42.8571428571%; +} + +.img-responsive-9x21 { + --tblr-img-responsive-ratio: 233.3333333333%; +} + +textarea[cols] { + height: auto; +} + +/** +Form label + */ +.col-form-label, +.form-label { + display: block; + font-weight: var(--tblr-font-weight-medium); +} +.col-form-label.required:after, +.form-label.required:after { + content: "*"; + margin-left: 0.25rem; + color: #d63939; +} + +.form-label-description { + float: right; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-secondary); +} + +/** +Form hint + */ +.form-hint { + display: block; + color: var(--tblr-secondary); +} +.form-hint:last-child { + margin-bottom: 0; +} +.form-hint + .form-control { + margin-top: 0.25rem; +} +.form-label + .form-hint { + margin-top: -0.25rem; +} +.input-group + .form-hint, .form-control + .form-hint, .form-select + .form-hint { + margin-top: 0.5rem; +} + +/** +Form select + */ +.form-select:-moz-focusring { + color: var(--tblr-body-color); +} + +/** +Form control + */ +.form-control:-webkit-autofill { + box-shadow: 0 0 0 1000px var(--tblr-body-bg) inset; + color: var(--tblr-body-color); + -webkit-text-fill-color: var(--tblr-body-color); +} +.form-control:disabled, .form-control.disabled { + color: var(--tblr-secondary); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-control[size] { + width: auto; +} + +.form-control-light { + background-color: var(--tblr-gray-100); + border-color: transparent; +} + +.form-control-dark { + background-color: rgba(0, 0, 0, 0.1); + color: #ffffff; + border-color: transparent; +} +.form-control-dark:focus { + background-color: rgba(0, 0, 0, 0.1); + box-shadow: none; + border-color: rgba(255, 255, 255, 0.24); +} +.form-control-dark::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::placeholder { + color: rgba(255, 255, 255, 0.6); +} + +.form-control-rounded { + border-radius: 10rem; +} + +.form-control-flush { + padding: 0; + background: none !important; + border-color: transparent !important; + resize: none; + box-shadow: none !important; + line-height: inherit; +} + +.form-footer { + margin-top: 2rem; +} + +.form-fieldset { + padding: 1rem; + margin-bottom: 1rem; + background: var(--tblr-body-bg); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +/** +Form help + */ +.form-help { + display: inline-flex; + font-weight: var(--tblr-font-weight-bold); + align-items: center; + justify-content: center; + width: 1.125rem; + height: 1.125rem; + font-size: 0.75rem; + color: var(--tblr-secondary); + text-align: center; + text-decoration: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-gray-100); + border-radius: 100rem; + transition: background-color 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-help { + transition: none; + } +} +.form-help:hover, .form-help[aria-describedby] { + color: #ffffff; + background: var(--tblr-primary); +} + +/** +Input group + */ +.input-group { + box-shadow: var(--tblr-box-shadow-input); + border-radius: var(--tblr-border-radius); +} +.input-group .form-control, +.input-group .btn { + box-shadow: none; +} + +.input-group-link { + font-size: 0.75rem; +} + +.input-group-flat:focus-within { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + border-radius: var(--tblr-border-radius); +} +.input-group-flat:focus-within .form-control, +.input-group-flat:focus-within .input-group-text { + border-color: #80aad3 !important; +} +.input-group-flat .form-control:focus { + border-color: var(--tblr-border-color); + box-shadow: none; +} +.input-group-flat .form-control:not(:last-child) { + border-right: 0; +} +.input-group-flat .form-control:not(:first-child) { + border-left: 0; +} +.input-group-flat .input-group-text { + background: var(--tblr-bg-forms); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .input-group-flat .input-group-text { + transition: none; + } +} +.input-group-flat .input-group-text:first-child { + padding-right: 0; +} +.input-group-flat .input-group-text:last-child { + padding-left: 0; +} + +/** +Upload files + */ +.form-file-button { + margin-left: 0; + border-left: 0; +} + +/** +Icon input + */ +.input-icon { + position: relative; +} +.input-icon .form-control:not(:last-child), +.input-icon .form-select:not(:last-child) { + padding-right: 2.5rem; +} +.input-icon .form-control:not(:first-child), +.input-icon .form-select:not(:last-child) { + padding-left: 2.5rem; +} + +.input-icon-addon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + min-width: 2.5rem; + color: var(--tblr-icon-color); + pointer-events: none; + font-size: 1.2em; +} +.input-icon-addon:last-child { + right: 0; + left: auto; +} + +/* +Color Input + */ +.form-colorinput { + position: relative; + display: inline-block; + margin: 0; + line-height: 1; + cursor: pointer; +} + +.form-colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-colorinput-color { + display: block; + width: 1.5rem; + height: 1.5rem; + color: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 3px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} +.form-colorinput-color:before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ""; + background: no-repeat center center/1.25rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-colorinput-color:before { + transition: none; + } +} +.form-colorinput-input:checked ~ .form-colorinput-color:before { + opacity: 1; +} +.form-colorinput-input:focus ~ .form-colorinput-color { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-colorinput-light .form-colorinput-color:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} + +/** +Image check + */ +.form-imagecheck { + position: relative; + margin: 0; + cursor: pointer; +} + +.form-imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-imagecheck-figure { + position: relative; + display: block; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; +} +.form-imagecheck-input:focus ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); +} +.form-imagecheck-figure:before { + position: absolute; + top: 0.25rem; + left: 0.25rem; + z-index: 1; + display: block; + width: 1.25rem; + height: 1.25rem; + color: #ffffff; + pointer-events: none; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-bg-forms); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-figure:before { + transition: none; + } +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure:before { + background-color: var(--tblr-primary); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-imagecheck-input[type=radio] ~ .form-imagecheck-figure:before { + border-radius: 50%; +} +.form-imagecheck-input[type=radio]:checked ~ .form-imagecheck-figure:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-imagecheck-image { + max-width: 100%; + display: block; + opacity: 0.64; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-image { + transition: none; + } +} +.form-imagecheck-image:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} +.form-imagecheck-image:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; +} +.form-imagecheck:hover .form-imagecheck-image, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-image, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-image { + opacity: 1; +} + +.form-imagecheck-caption { + padding: 0.25rem; + font-size: 0.765625rem; + color: var(--tblr-secondary); + text-align: center; + transition: color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-caption { + transition: none; + } +} +.form-imagecheck:hover .form-imagecheck-caption, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-caption, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-caption { + color: var(--tblr-body-color); +} + +/* +Select group + */ +.form-selectgroup { + display: inline-flex; + margin: 0 -0.5rem -0.5rem 0; + flex-wrap: wrap; +} +.form-selectgroup .form-selectgroup-item { + margin: 0 0.5rem 0.5rem 0; +} + +.form-selectgroup-vertical { + flex-direction: column; +} + +.form-selectgroup-item { + display: block; + position: relative; +} + +.form-selectgroup-input { + position: absolute; + top: 0; + left: 0; + z-index: -1; + opacity: 0; +} + +.form-selectgroup-label { + position: relative; + display: block; + min-width: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + margin: 0; + padding: 0.5625rem 0.75rem; + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-secondary); + background: var(--tblr-bg-forms); + text-align: center; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.3s, background 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-selectgroup-label { + transition: none; + } +} +.form-selectgroup-label .icon:only-child { + margin: 0 -0.25rem; +} +.form-selectgroup-label:hover { + color: var(--tblr-body-color); +} + +.form-selectgroup-check { + display: inline-block; + width: 1.25rem; + height: 1.25rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + vertical-align: middle; + box-shadow: var(--tblr-box-shadow-input); +} +.form-selectgroup-input[type=checkbox] + .form-selectgroup-label .form-selectgroup-check { + border-radius: var(--tblr-border-radius); +} +.form-selectgroup-input[type=radio] + .form-selectgroup-label .form-selectgroup-check { + border-radius: 50%; +} +.form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-check { + background-color: var(--tblr-primary); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-selectgroup-input[type=checkbox]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-selectgroup-input[type=radio]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-selectgroup-check-floated { + position: absolute; + top: 0.5625rem; + right: 0.5625rem; +} + +.form-selectgroup-input:checked + .form-selectgroup-label { + z-index: 1; + color: var(--tblr-primary); + background: rgba(var(--tblr-primary-rgb), 0.04); + border-color: var(--tblr-primary); +} + +.form-selectgroup-input:focus + .form-selectgroup-label { + z-index: 2; + color: var(--tblr-primary); + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +/** +Alternate version of form select group + */ +.form-selectgroup-boxes .form-selectgroup-label { + text-align: left; + padding: 1.25rem 1.25rem; + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label { + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-title { + color: var(--tblr-primary); +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-label-content { + opacity: 1; +} + +/** +Select group + */ +.form-selectgroup-pills { + flex-wrap: wrap; + align-items: flex-start; +} +.form-selectgroup-pills .form-selectgroup-item { + flex-grow: 0; +} +.form-selectgroup-pills .form-selectgroup-label { + border-radius: 50px; +} + +/** +Bootstrap color input + */ +.form-control-color::-webkit-color-swatch { + border: none; +} + +/** +Remove the cancel buttons in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/** +Form control dark theme fix + */ +.form-control::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} + +/* +Form check + */ +.form-check { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-check.form-check-highlight .form-check-input:not(:checked) ~ .form-check-label { + color: var(--tblr-secondary); +} +.form-check .form-check-label-off { + color: var(--tblr-secondary); +} +.form-check .form-check-input:checked ~ .form-check-label-off { + display: none; +} +.form-check .form-check-input:not(:checked) ~ .form-check-label-on { + display: none; +} + +.form-check-input { + background-size: 1.25rem; + margin-top: 0rem; + box-shadow: var(--tblr-box-shadow-input); +} +.form-switch .form-check-input { + transition: background-color 0.3s, background-position 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} + +.form-check-label { + display: block; +} +.form-check-label.required:after { + content: "*"; + margin-left: 0.25rem; + color: #d63939; +} + +.form-check-description { + display: block; + color: var(--tblr-secondary); + font-size: 0.75rem; + margin-top: 0.25rem; +} + +.form-check-single { + margin: 0; +} +.form-check-single .form-check-input { + margin: 0; +} + +/* +Form switch + */ +.form-switch .form-check-input { + height: 1.25rem; + margin-top: 0rem; +} + +.form-switch-lg { + padding-left: 3.5rem; + min-height: 1.5rem; +} +.form-switch-lg .form-check-input { + height: 1.5rem; + width: 2.75rem; + background-size: 1.5rem; + margin-left: -3.5rem; +} +.form-switch-lg .form-check-label { + padding-top: 0.125rem; +} + +/*Correction of Form-check position*/ +.form-check-input:checked { + border: none; +} + +.form-select.is-invalid-lite, .form-control.is-invalid-lite, .form-select.is-valid-lite, .form-control.is-valid-lite { + border-color: var(--tblr-border-color) !important; +} + +/** +Legend + */ +.legend { + --tblr-legend-size: 0.75em; + display: inline-block; + background: var(--tblr-border-color); + width: var(--tblr-legend-size); + height: var(--tblr-legend-size); + border-radius: var(--tblr-border-radius-sm); + border: 1px solid var(--tblr-border-color-translucent); +} + +.list-group { + margin-left: 0; + margin-right: 0; +} + +.list-group-header { + background: var(--tblr-bg-surface-tertiary); + padding: 0.5rem 1.25rem; + font-size: 0.75rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + text-transform: uppercase; + color: var(--tblr-secondary); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.list-group-flush > .list-group-header:last-child { + border-bottom-width: 0; +} + +.list-group-item { + background-color: inherit; +} + +.list-group-item.active { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); + border-left-color: #0054a6; + border-left-width: 2px; +} + +.list-group-item:active, .list-group-item:focus, .list-group-item:hover { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #929dab; + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-bordered .list-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + margin-top: -1px; +} +.list-bordered .list-item:first-child { + border-top: none; +} + +.list-group-hoverable .list-group-item-actions { + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .list-group-hoverable .list-group-item-actions { + transition: none; + } +} +.list-group-hoverable .list-group-item:hover .list-group-item-actions, +.list-group-hoverable .list-group-item-actions.show { + opacity: 1; +} + +.list-group-transparent { + --tblr-list-group-border-radius: 0; + margin: 0 -1.25rem; +} +.list-group-transparent .list-group-item { + background: none; + border: 0; +} +.list-group-transparent .list-group-item .icon { + color: var(--tblr-secondary); +} +.list-group-transparent .list-group-item.active { + font-weight: var(--tblr-font-weight-bold); + color: inherit; + background: var(--tblr-active-bg); +} +.list-group-transparent .list-group-item.active .icon { + color: inherit; +} + +.list-separated-item { + padding: 1rem 0; +} +.list-separated-item:first-child { + padding-top: 0; +} +.list-separated-item:last-child { + padding-bottom: 0; +} +.list-separated-item + .list-separated-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Inline list + */ +.list-inline-item:not(:last-child) { + margin-right: auto; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.list-inline-dots .list-inline-item + .list-inline-item:before { + content: " · "; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.loader { + position: relative; + display: block; + width: 2.5rem; + height: 2.5rem; + color: #0054a6; + vertical-align: middle; +} +.loader:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ""; + border: 1px var(--tblr-border-style); + border-color: transparent; + border-top-color: currentColor; + border-left-color: currentColor; + border-radius: 100rem; + animation: rotate-360 0.6s linear; + animation-iteration-count: infinite; +} + +/** +Dimmer +*/ +.dimmer { + position: relative; +} +.dimmer .loader { + position: absolute; + top: 50%; + right: 0; + left: 0; + display: none; + margin: 0 auto; + transform: translateY(-50%); +} +.dimmer.active .loader { + display: block; +} +.dimmer.active .dimmer-content { + pointer-events: none; + opacity: 0.1; +} + +@keyframes animated-dots { + 0% { + transform: translateX(-100%); + } +} +.animated-dots { + display: inline-block; + overflow: hidden; + vertical-align: bottom; +} +.animated-dots:after { + display: inline-block; + content: "..."; + animation: animated-dots 1.2s steps(4, jump-none) infinite; +} + +.modal-content .btn-close { + position: absolute; + top: 0; + right: 0; + width: 3.5rem; + height: 3.5rem; + margin: 0; + padding: 0; + z-index: 10; +} + +.modal-body { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +.modal-body::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .modal-body::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +.modal-body::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +.modal-body::-webkit-scrollbar-track { + background: transparent; +} +.modal-body:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +.modal-body::-webkit-scrollbar-corner { + background: transparent; +} +.modal-body .modal-title { + margin-bottom: 1rem; +} +.modal-body + .modal-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.modal-status { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + background: var(--tblr-secondary); + border-radius: var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0; +} + +.modal-header { + align-items: center; + min-height: 3.5rem; + background: transparent; + padding: 0 3.5rem 0 1.5rem; +} + +.modal-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-bold); + color: inherit; + line-height: 1.4285714286; +} + +.modal-footer { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.modal-blur { + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} + +.modal-full-width { + max-width: none; + margin: 0 0.5rem; +} + +.nav-vertical, +.nav-vertical .nav { + flex-direction: column; + flex-wrap: nowrap; +} +.nav-vertical .nav { + margin-left: 1.25rem; + border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding-left: 0.5rem; +} +.nav-vertical .nav-link.active, +.nav-vertical .nav-item.show .nav-link { + font-weight: var(--tblr-font-weight-bold); +} +.nav-vertical.nav-pills { + margin: 0 -0.75rem; +} + +.nav-bordered { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.nav-bordered .nav-item + .nav-item { + margin-left: 1.25rem; +} +.nav-bordered .nav-link { + padding-left: 0; + padding-right: 0; + margin: 0 0 -var(--tblr-border-width); + border: 0; + border-bottom: 2px var(--tblr-border-style) transparent; + color: var(--tblr-secondary); +} +.nav-bordered .nav-link.active, +.nav-bordered .nav-item.show .nav-link { + color: var(--tblr-primary); + border-color: var(--tblr-primary); +} + +.nav-link { + display: flex; + transition: color 0.3s; + align-items: center; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} + +.nav-link-toggle { + margin-left: auto; + padding: 0 0.25rem; + transition: transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .nav-link-toggle { + transition: none; + } +} +.nav-link-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-left: 1px var(--tblr-border-style); + margin-right: 0.1em; + margin-left: 0.4em; + transform: rotate(-45deg); +} +.nav-link-toggle:after { + margin: 0; +} +.nav-link[aria-expanded=true] .nav-link-toggle { + transform: rotate(180deg); +} + +.nav-link-icon { + width: 1.25rem; + height: 1.25rem; + margin-right: 0.5rem; + color: var(--tblr-icon-color); +} +.nav-link-icon svg { + display: block; + height: 100%; +} + +.nav-fill .nav-item .nav-link { + justify-content: center; +} + +.stars { + display: inline-flex; + color: #bbc3cd; + font-size: 0.75rem; +} +.stars .star:not(:first-child) { + margin-left: 0.25rem; +} + +.pagination { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.page-link { + min-width: 1.75rem; + border-radius: var(--tblr-border-radius); +} + +.page-item { + text-align: center; +} +.page-item:not(.active) .page-link:hover { + background: transparent; +} +.page-item.page-prev, .page-item.page-next { + flex: 0 0 50%; + text-align: left; +} +.page-item.page-next { + margin-left: auto; + text-align: right; +} + +.page-item-subtitle { + margin-bottom: 2px; + font-size: 12px; + color: var(--tblr-secondary); + text-transform: uppercase; +} +.page-item.disabled .page-item-subtitle { + color: var(--tblr-disabled-color); +} + +.page-item-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-body-color); +} +.page-link:hover .page-item-title { + color: #0054a6; +} +.page-item.disabled .page-item-title { + color: var(--tblr-disabled-color); +} + +@keyframes progress-indeterminate { + 0% { + right: 100%; + left: -35%; + } + 100%, 60% { + right: -90%; + left: 100%; + } +} +/** +Progress + */ +.progress { + position: relative; + width: 100%; + line-height: 0.5rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.progress::-webkit-progress-bar { + background: var(--tblr-progress-bg); +} +.progress::-webkit-progress-value { + background-color: var(--tblr-primary); +} +.progress::-moz-progress-bar { + background-color: var(--tblr-primary); +} +.progress::-ms-fill { + background-color: var(--tblr-primary); + border: none; +} + +.progress-sm { + height: 0.25rem; +} + +/** +Progress bar + */ +.progress-bar { + height: 100%; +} + +.progress-bar-indeterminate:after, .progress-bar-indeterminate:before { + position: absolute; + top: 0; + bottom: 0; + left: 0; + content: ""; + background-color: inherit; + will-change: left, right; +} +.progress-bar-indeterminate:before { + animation: progress-indeterminate 1.5s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress-separated .progress-bar { + box-shadow: 0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface)); +} + +/** +Progressbg + */ +.progressbg { + position: relative; + padding: 0.25rem 0.5rem; + display: flex; +} + +.progressbg-text { + position: relative; + z-index: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.progressbg-progress { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 0; + height: 100%; + background: transparent; + pointer-events: none; +} + +.progressbg-value { + font-weight: var(--tblr-font-weight-medium); + margin-left: auto; + padding-left: 2rem; +} + +.ribbon { + --tblr-ribbon-margin: 0.25rem; + --tblr-ribbon-border-radius: var(--tblr-border-radius); + position: absolute; + top: 0.75rem; + right: calc(-1 * var(--tblr-ribbon-margin)); + z-index: 1; + padding: 0.25rem 0.75rem; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + line-height: 1; + color: #ffffff; + text-align: center; + text-transform: uppercase; + background: var(--tblr-primary); + border-color: var(--tblr-primary); + border-radius: var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2rem; + min-width: 2rem; +} +.ribbon:before { + position: absolute; + right: 0; + bottom: 100%; + width: 0; + height: 0; + content: ""; + filter: brightness(70%); + border: calc(var(--tblr-ribbon-margin) * 0.5) var(--tblr-border-style); + border-color: inherit; + border-top-color: transparent; + border-right-color: transparent; +} +.ribbon.bg-blue { + border-color: var(--tblr-blue); +} +.ribbon.bg-blue-lt { + border-color: rgba(var(--tblr-blue-rgb), 0.1) !important; +} +.ribbon.bg-azure { + border-color: var(--tblr-azure); +} +.ribbon.bg-azure-lt { + border-color: rgba(var(--tblr-azure-rgb), 0.1) !important; +} +.ribbon.bg-indigo { + border-color: var(--tblr-indigo); +} +.ribbon.bg-indigo-lt { + border-color: rgba(var(--tblr-indigo-rgb), 0.1) !important; +} +.ribbon.bg-purple { + border-color: var(--tblr-purple); +} +.ribbon.bg-purple-lt { + border-color: rgba(var(--tblr-purple-rgb), 0.1) !important; +} +.ribbon.bg-pink { + border-color: var(--tblr-pink); +} +.ribbon.bg-pink-lt { + border-color: rgba(var(--tblr-pink-rgb), 0.1) !important; +} +.ribbon.bg-red { + border-color: var(--tblr-red); +} +.ribbon.bg-red-lt { + border-color: rgba(var(--tblr-red-rgb), 0.1) !important; +} +.ribbon.bg-orange { + border-color: var(--tblr-orange); +} +.ribbon.bg-orange-lt { + border-color: rgba(var(--tblr-orange-rgb), 0.1) !important; +} +.ribbon.bg-yellow { + border-color: var(--tblr-yellow); +} +.ribbon.bg-yellow-lt { + border-color: rgba(var(--tblr-yellow-rgb), 0.1) !important; +} +.ribbon.bg-lime { + border-color: var(--tblr-lime); +} +.ribbon.bg-lime-lt { + border-color: rgba(var(--tblr-lime-rgb), 0.1) !important; +} +.ribbon.bg-green { + border-color: var(--tblr-green); +} +.ribbon.bg-green-lt { + border-color: rgba(var(--tblr-green-rgb), 0.1) !important; +} +.ribbon.bg-teal { + border-color: var(--tblr-teal); +} +.ribbon.bg-teal-lt { + border-color: rgba(var(--tblr-teal-rgb), 0.1) !important; +} +.ribbon.bg-cyan { + border-color: var(--tblr-cyan); +} +.ribbon.bg-cyan-lt { + border-color: rgba(var(--tblr-cyan-rgb), 0.1) !important; +} +.ribbon .icon { + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; +} + +.ribbon-top { + top: calc(-1 * var(--tblr-ribbon-margin)); + right: 0.75rem; + width: 2rem; + padding: 0.5rem 0; + border-radius: 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); +} +.ribbon-top:before { + top: 0; + right: 100%; + bottom: auto; + border-color: inherit; + border-top-color: transparent; + border-left-color: transparent; +} +.ribbon-top.ribbon-start { + right: auto; + left: 0.75rem; +} +.ribbon-top.ribbon-start:before { + top: 0; + right: 100%; + left: auto; +} + +.ribbon-start { + right: auto; + left: calc(-1 * var(--tblr-ribbon-margin)); +} +.ribbon-start:before { + top: auto; + bottom: 100%; + left: 0; + border-color: inherit; + border-top-color: transparent; + border-left-color: transparent; +} + +.ribbon-bottom { + top: auto; + bottom: 0.75rem; +} + +.ribbon-bookmark { + padding-left: 0.25rem; + border-radius: 0 0 var(--tblr-ribbon-border-radius) 0; +} +.ribbon-bookmark:after { + position: absolute; + top: 0; + right: 100%; + display: block; + width: 0; + height: 0; + content: ""; + border: 1rem var(--tblr-border-style); + border-color: inherit; + border-right-width: 0; + border-left-color: transparent; + border-left-width: 0.5rem; +} +.ribbon-bookmark.ribbon-left { + padding-right: 0.5rem; +} +.ribbon-bookmark.ribbon-left:after { + right: auto; + left: 100%; + border-right-color: transparent; + border-right-width: 0.5rem; + border-left-width: 0; +} +.ribbon-bookmark.ribbon-top { + padding-right: 0; + padding-bottom: 0.25rem; + padding-left: 0; + border-radius: 0 var(--tblr-ribbon-border-radius) 0 0; +} +.ribbon-bookmark.ribbon-top:after { + top: 100%; + right: 0; + left: 0; + border-color: inherit; + border-width: 1rem; + border-top-width: 0; + border-bottom-color: transparent; + border-bottom-width: 0.5rem; +} + +/** +Markdown + */ +.markdown { + line-height: 1.7142857143; +} +.markdown > :first-child { + margin-top: 0; +} +.markdown > :last-child, +.markdown > :last-child .highlight { + margin-bottom: 0; +} +@media (min-width: 768px) { + .markdown > hr, .markdown > .hr { + margin-top: 3em; + margin-bottom: 3em; + } +} +.markdown > h1, .markdown > .h1, .markdown > h2, .markdown > .h2, .markdown > h3, .markdown > .h3, .markdown > h4, .markdown > .h4, .markdown > h5, .markdown > .h5, .markdown > h6, .markdown > .h6 { + font-weight: var(--tblr-font-weight-bold); +} +.markdown > blockquote { + font-size: 1rem; + margin: 1.5rem 0; + padding: 0.5rem 1.5rem; +} +.markdown > img { + border-radius: var(--tblr-border-radius); +} + +.placeholder:not(.btn):not([class*=bg-]) { + background-color: currentColor !important; +} +.placeholder:not(.avatar):not([class*=card-img-]) { + border-radius: var(--tblr-border-radius); +} + +.steps { + --tblr-steps-color: var(--tblr-primary); + --tblr-steps-inactive-color: var(--tblr-border-color); + --tblr-steps-dot-size: .5rem; + --tblr-steps-border-width: 2px; + display: flex; + flex-wrap: nowrap; + width: 100%; + padding: 0; + margin: 0; + list-style: none; +} + +.steps-blue { + --tblr-steps-color: var(--tblr-blue); +} + +.steps-azure { + --tblr-steps-color: var(--tblr-azure); +} + +.steps-indigo { + --tblr-steps-color: var(--tblr-indigo); +} + +.steps-purple { + --tblr-steps-color: var(--tblr-purple); +} + +.steps-pink { + --tblr-steps-color: var(--tblr-pink); +} + +.steps-red { + --tblr-steps-color: var(--tblr-red); +} + +.steps-orange { + --tblr-steps-color: var(--tblr-orange); +} + +.steps-yellow { + --tblr-steps-color: var(--tblr-yellow); +} + +.steps-lime { + --tblr-steps-color: var(--tblr-lime); +} + +.steps-green { + --tblr-steps-color: var(--tblr-green); +} + +.steps-teal { + --tblr-steps-color: var(--tblr-teal); +} + +.steps-cyan { + --tblr-steps-color: var(--tblr-cyan); +} + +.step-item { + position: relative; + flex: 1 1 0; + min-height: 1rem; + margin-top: 0; + color: inherit; + text-align: center; + cursor: default; + padding-top: calc(var(--tblr-steps-dot-size)); +} +a.step-item { + cursor: pointer; +} +a.step-item:hover { + color: inherit; +} + +.step-item:after, .step-item:before { + background: var(--tblr-steps-color); +} +.step-item:not(:last-child):after { + position: absolute; + left: 50%; + width: 100%; + content: ""; + transform: translateY(-50%); +} +.step-item:after { + top: calc(var(--tblr-steps-dot-size) * 0.5); + height: var(--tblr-steps-border-width); +} +.step-item:before { + content: ""; + position: absolute; + top: 0; + left: 50%; + z-index: 1; + box-sizing: content-box; + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + transform: translateX(-50%); + color: var(--tblr-white); + width: var(--tblr-steps-dot-size); + height: var(--tblr-steps-dot-size); +} +.step-item.active { + font-weight: var(--tblr-font-weight-bold); +} +.step-item.active:after { + background: var(--tblr-steps-inactive-color); +} +.step-item.active ~ .step-item { + color: var(--tblr-disabled-color); +} +.step-item.active ~ .step-item:after, .step-item.active ~ .step-item:before { + background: var(--tblr-steps-inactive-color); +} + +.steps-counter { + --tblr-steps-dot-size: 1.5rem; + counter-reset: steps; +} +.steps-counter .step-item { + counter-increment: steps; +} +.steps-counter .step-item:before { + content: counter(steps); +} + +.steps-vertical { + --tblr-steps-dot-offset: 6px; + flex-direction: column; +} +.steps-vertical.steps-counter { + --tblr-steps-dot-offset: -2px; +} +.steps-vertical .step-item { + text-align: left; + padding-top: 0; + padding-left: calc(var(--tblr-steps-dot-size) + 1rem); + min-height: auto; +} +.steps-vertical .step-item:not(:first-child) { + margin-top: 1rem; +} +.steps-vertical .step-item:before { + top: var(--tblr-steps-dot-offset); + left: 0; + transform: translate(0, 0); +} +.steps-vertical .step-item:not(:last-child):after { + position: absolute; + content: ""; + transform: translateX(-50%); + top: var(--tblr-steps-dot-offset); + left: calc(var(--tblr-steps-dot-size) * 0.5); + width: var(--tblr-steps-border-width); + height: calc(100% + 1rem); +} + +@keyframes status-pulsate-main { + 40% { + transform: scale(1.25, 1.25); + } + 60% { + transform: scale(1.25, 1.25); + } +} +@keyframes status-pulsate-secondary { + 10% { + transform: scale(1, 1); + } + 30% { + transform: scale(3, 3); + } + 80% { + transform: scale(3, 3); + } + 100% { + transform: scale(1, 1); + } +} +@keyframes status-pulsate-tertiary { + 25% { + transform: scale(1, 1); + } + 80% { + transform: scale(3, 3); + opacity: 0; + } + 100% { + transform: scale(3, 3); + opacity: 0; + } +} +.status { + --tblr-status-height: 1.5rem; + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; + display: inline-flex; + align-items: center; + height: var(--tblr-status-height); + padding: 0.25rem 0.75rem; + gap: 0.5rem; + color: var(--tblr-status-color); + background: rgba(var(--tblr-status-color-rgb), 0.1); + font-size: 0.875rem; + text-transform: none; + letter-spacing: normal; + border-radius: 100rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + margin: 0; +} +.status .status-dot { + background: var(--tblr-status-color); +} +.status .icon { + font-size: 1.25rem; +} + +.status-lite { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + background: transparent !important; + color: var(--tblr-body-color) !important; +} + +.status-primary { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-secondary { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-success { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-info { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-warning { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-danger { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-light { + --tblr-status-color: #fcfdfe; + --tblr-status-color-rgb: 252, 253, 254; +} + +.status-dark { + --tblr-status-color: #182433; + --tblr-status-color-rgb: 24, 36, 51; +} + +.status-muted { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-blue { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-azure { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-indigo { + --tblr-status-color: #4263eb; + --tblr-status-color-rgb: 66, 99, 235; +} + +.status-purple { + --tblr-status-color: #ae3ec9; + --tblr-status-color-rgb: 174, 62, 201; +} + +.status-pink { + --tblr-status-color: #d6336c; + --tblr-status-color-rgb: 214, 51, 108; +} + +.status-red { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-orange { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-yellow { + --tblr-status-color: #f59f00; + --tblr-status-color-rgb: 245, 159, 0; +} + +.status-lime { + --tblr-status-color: #74b816; + --tblr-status-color-rgb: 116, 184, 22; +} + +.status-green { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-teal { + --tblr-status-color: #0ca678; + --tblr-status-color-rgb: 12, 166, 120; +} + +.status-cyan { + --tblr-status-color: #17a2b8; + --tblr-status-color-rgb: 23, 162, 184; +} + +.status-facebook { + --tblr-status-color: #1877f2; + --tblr-status-color-rgb: 24, 119, 242; +} + +.status-twitter { + --tblr-status-color: #1da1f2; + --tblr-status-color-rgb: 29, 161, 242; +} + +.status-linkedin { + --tblr-status-color: #0a66c2; + --tblr-status-color-rgb: 10, 102, 194; +} + +.status-google { + --tblr-status-color: #dc4e41; + --tblr-status-color-rgb: 220, 78, 65; +} + +.status-youtube { + --tblr-status-color: #ff0000; + --tblr-status-color-rgb: 255, 0, 0; +} + +.status-vimeo { + --tblr-status-color: #1ab7ea; + --tblr-status-color-rgb: 26, 183, 234; +} + +.status-dribbble { + --tblr-status-color: #ea4c89; + --tblr-status-color-rgb: 234, 76, 137; +} + +.status-github { + --tblr-status-color: #181717; + --tblr-status-color-rgb: 24, 23, 23; +} + +.status-instagram { + --tblr-status-color: #e4405f; + --tblr-status-color-rgb: 228, 64, 95; +} + +.status-pinterest { + --tblr-status-color: #bd081c; + --tblr-status-color-rgb: 189, 8, 28; +} + +.status-vk { + --tblr-status-color: #6383a8; + --tblr-status-color-rgb: 99, 131, 168; +} + +.status-rss { + --tblr-status-color: #ffa500; + --tblr-status-color-rgb: 255, 165, 0; +} + +.status-flickr { + --tblr-status-color: #0063dc; + --tblr-status-color-rgb: 0, 99, 220; +} + +.status-bitbucket { + --tblr-status-color: #0052cc; + --tblr-status-color-rgb: 0, 82, 204; +} + +.status-tabler { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-dot { + --tblr-status-dot-color: var(--tblr-status-color, #667382); + --tblr-status-size: 0.5rem; + position: relative; + display: inline-block; + width: var(--tblr-status-size); + height: var(--tblr-status-size); + background: var(--tblr-status-dot-color); + border-radius: 100rem; +} + +.status-dot-animated:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background: inherit; + border-radius: inherit; + opacity: 0.6; + animation: 1s linear 2s backwards infinite status-pulsate-tertiary; +} + +.status-indicator { + --tblr-status-indicator-size: 2.5rem; + --tblr-status-indicator-color: var(--tblr-status-color, #667382); + display: block; + position: relative; + width: var(--tblr-status-indicator-size); + height: var(--tblr-status-indicator-size); +} + +.status-indicator-circle { + --tblr-status-circle-size: .75rem; + position: absolute; + left: 50%; + top: 50%; + margin: calc(var(--tblr-status-circle-size) / -2) 0 0 calc(var(--tblr-status-circle-size) / -2); + width: var(--tblr-status-circle-size); + height: var(--tblr-status-circle-size); + border-radius: 100rem; + background: var(--tblr-status-color); +} +.status-indicator-circle:nth-child(1) { + z-index: 3; +} +.status-indicator-circle:nth-child(2) { + z-index: 2; + opacity: 0.1; +} +.status-indicator-circle:nth-child(3) { + z-index: 1; + opacity: 0.3; +} + +.status-indicator-animated .status-indicator-circle:nth-child(1) { + animation: 2s linear 1s infinite backwards status-pulsate-main; +} +.status-indicator-animated .status-indicator-circle:nth-child(2) { + animation: 2s linear 1s infinite backwards status-pulsate-secondary; +} +.status-indicator-animated .status-indicator-circle:nth-child(3) { + animation: 2s linear 1s infinite backwards status-pulsate-tertiary; +} + +.switch-icon { + display: inline-block; + line-height: 1; + border: 0; + padding: 0; + background: transparent; + width: 1.25rem; + height: 1.25rem; + vertical-align: bottom; + position: relative; + cursor: pointer; +} +.switch-icon.disabled { + pointer-events: none; + opacity: 0.4; +} +.switch-icon:focus { + outline: none; +} +.switch-icon svg { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a, +.switch-icon .switch-icon-b { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a { + opacity: 1; +} +.switch-icon .switch-icon-b { + position: absolute; + top: 0; + left: 0; + opacity: 0; +} +.switch-icon.active .switch-icon-a { + opacity: 0; +} +.switch-icon.active .switch-icon-b { + opacity: 1; +} + +.switch-icon-fade .switch-icon-a, +.switch-icon-fade .switch-icon-b { + transition: opacity 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-fade .switch-icon-a, + .switch-icon-fade .switch-icon-b { + transition: none; + } +} + +.switch-icon-scale .switch-icon-a, +.switch-icon-scale .switch-icon-b { + transition: opacity 0.5s, transform 0s 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale .switch-icon-a, + .switch-icon-scale .switch-icon-b { + transition: none; + } +} +.switch-icon-scale .switch-icon-b { + transform: scale(1.5); +} +.switch-icon-scale.active .switch-icon-a, +.switch-icon-scale.active .switch-icon-b { + transition: opacity 0s, transform 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale.active .switch-icon-a, + .switch-icon-scale.active .switch-icon-b { + transition: none; + } +} +.switch-icon-scale.active .switch-icon-b { + transform: scale(1); +} + +.switch-icon-flip { + perspective: 10em; +} +.switch-icon-flip .switch-icon-a, +.switch-icon-flip .switch-icon-b { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transform-style: preserve-3d; + transition: opacity 0s 0.2s, transform 0.4s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-flip .switch-icon-a, + .switch-icon-flip .switch-icon-b { + transition: none; + } +} +.switch-icon-flip .switch-icon-a { + opacity: 1; + transform: rotateY(0deg); +} +.switch-icon-flip .switch-icon-b { + opacity: 1; + transform: rotateY(-180deg); +} +.switch-icon-flip.active .switch-icon-a { + opacity: 1; + transform: rotateY(180deg); +} +.switch-icon-flip.active .switch-icon-b { + opacity: 1; + transform: rotateY(0deg); +} + +.switch-icon-slide-up, +.switch-icon-slide-left, +.switch-icon-slide-right, +.switch-icon-slide-down { + overflow: hidden; +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-down .switch-icon-a, +.switch-icon-slide-down .switch-icon-b { + transition: opacity 0.3s, transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-slide-up .switch-icon-a, + .switch-icon-slide-up .switch-icon-b, + .switch-icon-slide-left .switch-icon-a, + .switch-icon-slide-left .switch-icon-b, + .switch-icon-slide-right .switch-icon-a, + .switch-icon-slide-right .switch-icon-b, + .switch-icon-slide-down .switch-icon-a, + .switch-icon-slide-down .switch-icon-b { + transition: none; + } +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-down .switch-icon-b { + transform: translateY(100%); +} +.switch-icon-slide-up.active .switch-icon-a, +.switch-icon-slide-left.active .switch-icon-a, +.switch-icon-slide-right.active .switch-icon-a, +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(-100%); +} +.switch-icon-slide-up.active .switch-icon-b, +.switch-icon-slide-left.active .switch-icon-b, +.switch-icon-slide-right.active .switch-icon-b, +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.switch-icon-slide-left .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-left .switch-icon-b { + transform: translateX(100%); +} +.switch-icon-slide-left.active .switch-icon-a { + transform: translateX(-100%); +} +.switch-icon-slide-left.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-right .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-right .switch-icon-b { + transform: translateX(-100%); +} +.switch-icon-slide-right.active .switch-icon-a { + transform: translateX(100%); +} +.switch-icon-slide-right.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-down .switch-icon-b { + transform: translateY(-100%); +} +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(100%); +} +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.table thead th, .markdown > table thead th { + color: var(--tblr-secondary); + background: var(--tblr-bg-surface-tertiary); + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + white-space: nowrap; +} +@media print { + .table thead th, .markdown > table thead th { + background: transparent; + } +} + +.table-responsive .table, .table-responsive .markdown > table { + margin-bottom: 0; +} +.table-responsive + .card-footer { + border-top: 0; +} + +.table-transparent thead th { + background: transparent; +} + +.table-nowrap > :not(caption) > * > * { + white-space: nowrap; +} + +.table-vcenter > :not(caption) > * > * { + vertical-align: middle; +} + +.table-center > :not(caption) > * > * { + text-align: center; +} + +.td-truncate { + max-width: 1px; + width: 100%; +} + +.table-mobile { + display: block; +} +.table-mobile thead { + display: none; +} +.table-mobile tbody, +.table-mobile tr { + display: flex; + flex-direction: column; +} +.table-mobile td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; +} +.table-mobile td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; +} +.table-mobile tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.table-mobile .btn { + display: block; +} +@media (max-width: 575.98px) { + .table-mobile-sm { + display: block; + } + .table-mobile-sm thead { + display: none; + } + .table-mobile-sm tbody, + .table-mobile-sm tr { + display: flex; + flex-direction: column; + } + .table-mobile-sm td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-sm td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-sm tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-sm .btn { + display: block; + } +} +@media (max-width: 767.98px) { + .table-mobile-md { + display: block; + } + .table-mobile-md thead { + display: none; + } + .table-mobile-md tbody, + .table-mobile-md tr { + display: flex; + flex-direction: column; + } + .table-mobile-md td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-md td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-md tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-md .btn { + display: block; + } +} +@media (max-width: 991.98px) { + .table-mobile-lg { + display: block; + } + .table-mobile-lg thead { + display: none; + } + .table-mobile-lg tbody, + .table-mobile-lg tr { + display: flex; + flex-direction: column; + } + .table-mobile-lg td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-lg td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-lg tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-lg .btn { + display: block; + } +} +@media (max-width: 1199.98px) { + .table-mobile-xl { + display: block; + } + .table-mobile-xl thead { + display: none; + } + .table-mobile-xl tbody, + .table-mobile-xl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xl .btn { + display: block; + } +} +@media (max-width: 1399.98px) { + .table-mobile-xxl { + display: block; + } + .table-mobile-xxl thead { + display: none; + } + .table-mobile-xxl tbody, + .table-mobile-xxl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xxl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xxl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xxl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xxl .btn { + display: block; + } +} + +/** +Table sort + */ +.table-sort { + font: inherit; + color: inherit; + text-transform: inherit; + letter-spacing: inherit; + border: 0; + background: inherit; + display: block; + width: 100%; + text-align: inherit; + transition: color 0.3s; + margin: -0.5rem -0.75rem; + padding: 0.5rem 0.75rem; +} +@media (prefers-reduced-motion: reduce) { + .table-sort { + transition: none; + } +} +.table-sort:hover, .table-sort.asc, .table-sort.desc { + color: var(--tblr-body-color); +} +.table-sort:after { + content: ""; + display: inline-flex; + width: 1rem; + height: 1rem; + vertical-align: bottom; + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); + background: currentColor; + margin-left: 0.25rem; +} +.table-sort.asc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} +.table-sort.desc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} + +.table-borderless thead th { + background: transparent; +} + +.tag { + --tblr-tag-height: 1.5rem; + border: 1px solid var(--tblr-border-color); + display: inline-flex; + align-items: center; + height: var(--tblr-tag-height); + border-radius: var(--tblr-border-radius); + padding: 0 0.5rem; + background: var(--tblr-bg-surface); + box-shadow: var(--tblr-box-shadow-input); + gap: 0.5rem; +} +.tag .btn-close { + margin-right: -0.25rem; + margin-left: -0.125rem; + padding: 0; + width: 1rem; + height: 1rem; + font-size: 0.5rem; +} + +.tag-badge { + --tblr-badge-font-size: 0.625rem; + --tblr-badge-padding-x: .25rem; + --tblr-badge-padding-y: .125rem; + margin-right: -0.25rem; +} + +.tag-avatar, +.tag-flag, +.tag-payment, +.tag-icon, +.tag-check { + margin-left: -0.25rem; +} + +.tag-icon { + color: var(--tblr-secondary); + margin-right: -0.125rem; + width: 1rem; + height: 1rem; +} + +.tag-check { + width: 1rem; + height: 1rem; + background-size: 1rem; +} + +.tags-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.toast { + background: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.toast .toast-header { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.toast button[data-bs-dismiss=toast] { + outline: none; +} + +.toast-primary { + --tblr-toast-color: #0054a6; +} + +.toast-secondary { + --tblr-toast-color: #667382; +} + +.toast-success { + --tblr-toast-color: #2fb344; +} + +.toast-info { + --tblr-toast-color: #4299e1; +} + +.toast-warning { + --tblr-toast-color: #f76707; +} + +.toast-danger { + --tblr-toast-color: #d63939; +} + +.toast-light { + --tblr-toast-color: #fcfdfe; +} + +.toast-dark { + --tblr-toast-color: #182433; +} + +.toast-muted { + --tblr-toast-color: #667382; +} + +.toast-blue { + --tblr-toast-color: #0054a6; +} + +.toast-azure { + --tblr-toast-color: #4299e1; +} + +.toast-indigo { + --tblr-toast-color: #4263eb; +} + +.toast-purple { + --tblr-toast-color: #ae3ec9; +} + +.toast-pink { + --tblr-toast-color: #d6336c; +} + +.toast-red { + --tblr-toast-color: #d63939; +} + +.toast-orange { + --tblr-toast-color: #f76707; +} + +.toast-yellow { + --tblr-toast-color: #f59f00; +} + +.toast-lime { + --tblr-toast-color: #74b816; +} + +.toast-green { + --tblr-toast-color: #2fb344; +} + +.toast-teal { + --tblr-toast-color: #0ca678; +} + +.toast-cyan { + --tblr-toast-color: #17a2b8; +} + +.toast-facebook { + --tblr-toast-color: #1877f2; +} + +.toast-twitter { + --tblr-toast-color: #1da1f2; +} + +.toast-linkedin { + --tblr-toast-color: #0a66c2; +} + +.toast-google { + --tblr-toast-color: #dc4e41; +} + +.toast-youtube { + --tblr-toast-color: #ff0000; +} + +.toast-vimeo { + --tblr-toast-color: #1ab7ea; +} + +.toast-dribbble { + --tblr-toast-color: #ea4c89; +} + +.toast-github { + --tblr-toast-color: #181717; +} + +.toast-instagram { + --tblr-toast-color: #e4405f; +} + +.toast-pinterest { + --tblr-toast-color: #bd081c; +} + +.toast-vk { + --tblr-toast-color: #6383a8; +} + +.toast-rss { + --tblr-toast-color: #ffa500; +} + +.toast-flickr { + --tblr-toast-color: #0063dc; +} + +.toast-bitbucket { + --tblr-toast-color: #0052cc; +} + +.toast-tabler { + --tblr-toast-color: #0054a6; +} + +.toolbar { + display: flex; + flex-wrap: nowrap; + flex-shrink: 0; + margin: 0 -0.5rem; +} +.toolbar > * { + margin: 0 0.5rem; +} + +.tracking { + --tblr-tracking-height: 1.5rem; + --tblr-tracking-gap-width: 0.125rem; + --tblr-tracking-block-border-radius: var(--tblr-border-radius); + display: flex; + gap: var(--tblr-tracking-gap-width); +} + +.tracking-squares { + --tblr-tracking-block-border-radius: var(--tblr-border-radius-sm); +} +.tracking-squares .tracking-block { + height: auto; +} +.tracking-squares .tracking-block:before { + content: ""; + display: block; + padding-top: 100%; +} + +.tracking-block { + flex: 1; + border-radius: var(--tblr-tracking-block-border-radius); + height: var(--tblr-tracking-height); + min-width: 0.25rem; + background: var(--tblr-border-color); +} + +.timeline { + --tblr-timeline-icon-size: 2.5rem; + position: relative; + list-style: none; + padding: 0; +} + +.timeline-event { + position: relative; +} +.timeline-event:not(:last-child) { + margin-bottom: var(--tblr-page-padding); +} +.timeline-event:not(:last-child):before { + content: ""; + position: absolute; + top: var(--tblr-timeline-icon-size); + left: calc(var(--tblr-timeline-icon-size) / 2); + bottom: calc(-1 * var(--tblr-page-padding)); + width: var(--tblr-border-width); + background-color: var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.timeline-event-icon { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: var(--tblr-timeline-icon-size, 2.5rem); + height: var(--tblr-timeline-icon-size, 2.5rem); + background: var(--tblr-gray-200); + color: var(--tblr-secondary); + border-radius: var(--tblr-border-radius); + z-index: 5; +} + +.timeline-event-card { + margin-left: calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding)); +} + +.timeline-simple .timeline-event-icon { + display: none; +} +.timeline-simple .timeline-event-card { + margin-left: 0; +} + +/** +Horizontal rules + */ +/** +Hr text + */ +.hr-text { + display: flex; + align-items: center; + margin: 2rem 0; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + height: 1px; +} +.hr-text:after, .hr-text:before { + flex: 1 1 auto; + height: 1px; + background-color: var(--tblr-border-color); +} +.hr-text:before { + content: ""; + margin-right: 0.5rem; +} +.hr-text:after { + content: ""; + margin-left: 0.5rem; +} +.hr-text > *:first-child { + padding-right: 0.5rem; + padding-left: 0; + color: var(--tblr-secondary); +} +.hr-text.hr-text-left:before { + content: none; +} +.hr-text.hr-text-left > *:first-child { + padding-right: 0.5rem; + padding-left: 0.5rem; +} +.hr-text.hr-text-right:before { + content: ""; +} +.hr-text.hr-text-right:after { + content: none; +} +.hr-text.hr-text-right > *:first-child { + padding-right: 0; + padding-left: 0.5rem; +} +.card > .hr-text { + margin: 0; +} + +.hr-text-spaceless { + margin: -0.5rem 0; +} + +.lead { + line-height: 1.4; +} + +a { + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} + +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a, +.h1 a, +.h2 a, +.h3 a, +.h4 a, +.h5 a, +.h6 a { + color: inherit; +} +h1 a:hover, +h2 a:hover, +h3 a:hover, +h4 a:hover, +h5 a:hover, +h6 a:hover, +.h1 a:hover, +.h2 a:hover, +.h3 a:hover, +.h4 a:hover, +.h5 a:hover, +.h6 a:hover { + color: inherit; +} + +h1, +.h1 { + font-size: var(--tblr-font-size-h1); + line-height: var(--tblr-line-height-h1); +} + +h2, +.h2 { + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h2); +} + +h3, +.h3 { + font-size: var(--tblr-font-size-h3); + line-height: var(--tblr-line-height-h3); +} + +h4, +.h4 { + font-size: var(--tblr-font-size-h4); + line-height: var(--tblr-line-height-h4); +} + +h5, +.h5 { + font-size: var(--tblr-font-size-h5); + line-height: var(--tblr-line-height-h5); +} + +h6, +.h6 { + font-size: var(--tblr-font-size-h6); + line-height: var(--tblr-line-height-h6); +} + +strong, +.strong, +b { + font-weight: var(--tblr-font-weight-bold); +} + +blockquote { + padding-left: 1rem; + border-left: 2px var(--tblr-border-style) var(--tblr-border-color); +} +blockquote p { + margin-bottom: 1rem; +} +blockquote cite { + display: block; + text-align: right; +} +blockquote cite:before { + content: "— "; +} + +ul, ol { + padding-left: 1.5rem; +} + +hr, .hr { + margin: 2rem 0; +} + +dl dd:last-child { + margin-bottom: 0; +} + +pre { + padding: 1rem; + background: var(--tblr-bg-surface-dark); + color: var(--tblr-light); + border-radius: var(--tblr-border-radius); +} +pre code { + background: transparent; +} + +code { + background: var(--tblr-code-bg); + padding: 2px 4px; + border-radius: var(--tblr-border-radius); +} + +kbd, +.kbd { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + display: inline-block; + box-sizing: border-box; + max-width: 100%; + font-size: var(--tblr-font-size-h5); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + vertical-align: baseline; + border-radius: var(--tblr-border-radius); +} + +img { + max-width: 100%; +} + +.list-unstyled { + margin-left: 0; +} + +/** +Selection + */ +::-moz-selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} +::selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} + +/** +Links + */ +[class^=link-].disabled, [class*=" link-"].disabled { + color: var(--tblr-disabled-color); + pointer-events: none; +} + +/** +Subheader + */ +.subheader { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.chart { + display: block; + min-height: 10rem; +} +.chart text { + font-family: inherit; +} + +.chart-sm { + height: 2.5rem; +} + +.chart-lg { + height: 15rem; +} + +.chart-square { + height: 5.75rem; +} + +/** +Chart sparkline + */ +.chart-sparkline { + position: relative; + width: 4rem; + height: 2.5rem; + line-height: 1; + min-height: 0 !important; +} + +.chart-sparkline-sm { + height: 1.5rem; +} + +.chart-sparkline-square { + width: 2.5rem; +} + +.chart-sparkline-wide { + width: 6rem; +} + +.chart-sparkline-label { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.625rem; +} +.chart-sparkline-label .icon { + width: 1rem; + height: 1rem; + font-size: 1rem; +} + +.offcanvas-header { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14); +} + +.offcanvas-footer { + padding: 1.5rem 1.5rem; +} + +.offcanvas-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.5rem; +} + +.offcanvas-narrow { + width: 20rem; +} + +.chat-bubbles { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.chat-bubble { + background: var(--tblr-bg-surface-secondary); + border-radius: var(--tblr-border-radius-lg); + padding: 1rem; + position: relative; +} + +.chat-bubble-me { + background-color: var(--tblr-primary-lt); + box-shadow: none; +} + +.chat-bubble-title { + margin-bottom: 0.25rem; +} + +.chat-bubble-author { + font-weight: 600; +} + +.chat-bubble-date { + color: var(--tblr-secondary); +} + +.chat-bubble-body > *:last-child { + margin-bottom: 0; +} + +.bg-white-overlay { + color: #ffffff; + background-color: rgba(252, 253, 254, 0.24); +} + +.bg-dark-overlay { + color: #ffffff; + background-color: rgba(24, 36, 51, 0.24); +} + +.bg-cover { + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-primary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-primary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-primary { + border-color: #0054a6 !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-secondary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-secondary { + border-color: #667382 !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-success-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-success { + border-color: #2fb344 !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-info-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-info { + border-color: #4299e1 !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-warning-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-warning { + border-color: #f76707 !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-danger-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-danger { + border-color: #d63939 !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-light-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-light { + border-color: #fcfdfe !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dark-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dark { + border-color: #182433 !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-muted-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-muted { + border-color: #667382 !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-blue-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-blue { + border-color: #0054a6 !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-azure-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-azure { + border-color: #4299e1 !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-indigo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-indigo { + border-color: #4263eb !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-purple-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-purple { + border-color: #ae3ec9 !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pink-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pink { + border-color: #d6336c !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-red-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-red { + border-color: #d63939 !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-orange-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-orange { + border-color: #f76707 !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-yellow-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-yellow { + border-color: #f59f00 !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-lime-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-lime { + border-color: #74b816 !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-green-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-green { + border-color: #2fb344 !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-teal-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-teal { + border-color: #0ca678 !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-cyan-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-cyan { + border-color: #17a2b8 !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-facebook-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-facebook { + border-color: #1877f2 !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-twitter-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-twitter { + border-color: #1da1f2 !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-linkedin-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-linkedin { + border-color: #0a66c2 !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-google-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-google { + border-color: #dc4e41 !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-youtube-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-youtube { + border-color: #ff0000 !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vimeo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vimeo { + border-color: #1ab7ea !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dribbble-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dribbble { + border-color: #ea4c89 !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-github-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-github { + border-color: #181717 !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-instagram-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-instagram { + border-color: #e4405f !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pinterest-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pinterest { + border-color: #bd081c !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vk-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vk { + border-color: #6383a8 !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-rss-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-rss { + border-color: #ffa500 !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-flickr-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-flickr { + border-color: #0063dc !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-bitbucket-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-bitbucket { + border-color: #0052cc !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-tabler-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-tabler { + border-color: #0054a6 !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-white-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-white { + border-color: #ffffff !important; +} + +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-primary-fg { + color: var(--tblr-primary-fg) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary-fg { + color: var(--tblr-secondary-fg) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success-fg { + color: var(--tblr-success-fg) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info-fg { + color: var(--tblr-info-fg) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning-fg { + color: var(--tblr-warning-fg) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger-fg { + color: var(--tblr-danger-fg) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light-fg { + color: var(--tblr-light-fg) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark-fg { + color: var(--tblr-dark-fg) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted-fg { + color: var(--tblr-muted-fg) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-blue-fg { + color: var(--tblr-blue-fg) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure-fg { + color: var(--tblr-azure-fg) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo-fg { + color: var(--tblr-indigo-fg) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple-fg { + color: var(--tblr-purple-fg) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink-fg { + color: var(--tblr-pink-fg) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red-fg { + color: var(--tblr-red-fg) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange-fg { + color: var(--tblr-orange-fg) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow-fg { + color: var(--tblr-yellow-fg) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime-fg { + color: var(--tblr-lime-fg) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green-fg { + color: var(--tblr-green-fg) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal-fg { + color: var(--tblr-teal-fg) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan-fg { + color: var(--tblr-cyan-fg) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook-fg { + color: var(--tblr-facebook-fg) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter-fg { + color: var(--tblr-twitter-fg) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin-fg { + color: var(--tblr-linkedin-fg) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google-fg { + color: var(--tblr-google-fg) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube-fg { + color: var(--tblr-youtube-fg) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo-fg { + color: var(--tblr-vimeo-fg) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble-fg { + color: var(--tblr-dribbble-fg) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github-fg { + color: var(--tblr-github-fg) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram-fg { + color: var(--tblr-instagram-fg) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest-fg { + color: var(--tblr-pinterest-fg) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk-fg { + color: var(--tblr-vk-fg) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss-fg { + color: var(--tblr-rss-fg) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr-fg { + color: var(--tblr-flickr-fg) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket-fg { + color: var(--tblr-bitbucket-fg) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler-fg { + color: var(--tblr-tabler-fg) !important; +} + +.bg-gray-50 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-50-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-50-fg { + color: #182433 !important; +} + +.bg-gray-100 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-100-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-100-fg { + color: #182433 !important; +} + +.bg-gray-200 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-200-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-200-fg { + color: #182433 !important; +} + +.bg-gray-300 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-300-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-300-fg { + color: #182433 !important; +} + +.bg-gray-400 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-400-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-400-fg { + color: #fcfdfe !important; +} + +.bg-gray-500 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-500-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-500-fg { + color: #fcfdfe !important; +} + +.bg-gray-600 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-600-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-600-fg { + color: #fcfdfe !important; +} + +.bg-gray-700 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-700-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-700-fg { + color: #fcfdfe !important; +} + +.bg-gray-800 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-800-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-800-fg { + color: #fcfdfe !important; +} + +.bg-gray-900 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-900-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-900-fg { + color: #fcfdfe !important; +} + +/* +Scrollable +*/ +.scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.scrollable.hover { + overflow-y: hidden; +} +.scrollable.hover > * { + margin-top: -1px; +} +.scrollable.hover:hover, .scrollable.hover:focus, .scrollable.hover:active { + overflow: visible; + overflow-y: auto; +} +.touch .scrollable { + overflow-y: auto !important; +} + +.scroll-x, +.scroll-y { + overflow: hidden; + -webkit-overflow-scrolling: touch; +} + +.scroll-y { + overflow-y: auto; +} + +.scroll-x { + overflow-x: auto; +} + +.no-scroll { + overflow: hidden; +} + +.w-0 { + width: 0 !important; +} + +.h-0 { + height: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.w-auto { + width: auto !important; +} + +.h-auto { + height: auto !important; +} + +.w-px { + width: 1px !important; +} + +.h-px { + height: 1px !important; +} + +.w-full { + width: 100% !important; +} + +.h-full { + height: 100% !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-5 { + opacity: 0.05 !important; +} + +.opacity-10 { + opacity: 0.1 !important; +} + +.opacity-15 { + opacity: 0.15 !important; +} + +.opacity-20 { + opacity: 0.2 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-30 { + opacity: 0.3 !important; +} + +.opacity-35 { + opacity: 0.35 !important; +} + +.opacity-40 { + opacity: 0.4 !important; +} + +.opacity-45 { + opacity: 0.45 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-55 { + opacity: 0.55 !important; +} + +.opacity-60 { + opacity: 0.6 !important; +} + +.opacity-65 { + opacity: 0.65 !important; +} + +.opacity-70 { + opacity: 0.7 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-80 { + opacity: 0.8 !important; +} + +.opacity-85 { + opacity: 0.85 !important; +} + +.opacity-90 { + opacity: 0.9 !important; +} + +.opacity-95 { + opacity: 0.95 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.hover-shadow-sm:hover { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.hover-shadow:hover { + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.hover-shadow-lg:hover { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.hover-shadow-none:hover { + box-shadow: none !important; +} + +/** +Antialiasing + */ +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler.min.css b/gin_ops/static/dist/css/tabler.min.css new file mode 100644 index 0000000..c79e375 --- /dev/null +++ b/gin_ops/static/dist/css/tabler.min.css @@ -0,0 +1,13 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-blue:#0054a6;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-black:#000000;--tblr-white:#ffffff;--tblr-gray:#667382;--tblr-gray-dark:#182433;--tblr-gray-100:#f6f8fb;--tblr-gray-200:#eef1f4;--tblr-gray-300:#dadfe5;--tblr-gray-400:#bbc3cd;--tblr-gray-500:#929dab;--tblr-gray-600:#667382;--tblr-gray-700:#3a4859;--tblr-gray-800:#182433;--tblr-gray-900:#040a11;--tblr-primary:#0054a6;--tblr-secondary:#667382;--tblr-success:#2fb344;--tblr-info:#4299e1;--tblr-warning:#f76707;--tblr-danger:#d63939;--tblr-light:#fcfdfe;--tblr-dark:#182433;--tblr-muted:#667382;--tblr-blue:#0054a6;--tblr-azure:#4299e1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-lime:#74b816;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-facebook:#1877f2;--tblr-twitter:#1da1f2;--tblr-linkedin:#0a66c2;--tblr-google:#dc4e41;--tblr-youtube:#ff0000;--tblr-vimeo:#1ab7ea;--tblr-dribbble:#ea4c89;--tblr-github:#181717;--tblr-instagram:#e4405f;--tblr-pinterest:#bd081c;--tblr-vk:#6383a8;--tblr-rss:#ffa500;--tblr-flickr:#0063dc;--tblr-bitbucket:#0052cc;--tblr-tabler:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-secondary-rgb:102,115,130;--tblr-success-rgb:47,179,68;--tblr-info-rgb:66,153,225;--tblr-warning-rgb:247,103,7;--tblr-danger-rgb:214,57,57;--tblr-light-rgb:252,253,254;--tblr-dark-rgb:24,36,51;--tblr-muted-rgb:102,115,130;--tblr-blue-rgb:0,84,166;--tblr-azure-rgb:66,153,225;--tblr-indigo-rgb:66,99,235;--tblr-purple-rgb:174,62,201;--tblr-pink-rgb:214,51,108;--tblr-red-rgb:214,57,57;--tblr-orange-rgb:247,103,7;--tblr-yellow-rgb:245,159,0;--tblr-lime-rgb:116,184,22;--tblr-green-rgb:47,179,68;--tblr-teal-rgb:12,166,120;--tblr-cyan-rgb:23,162,184;--tblr-facebook-rgb:24,119,242;--tblr-twitter-rgb:29,161,242;--tblr-linkedin-rgb:10,102,194;--tblr-google-rgb:220,78,65;--tblr-youtube-rgb:255,0,0;--tblr-vimeo-rgb:26,183,234;--tblr-dribbble-rgb:234,76,137;--tblr-github-rgb:24,23,23;--tblr-instagram-rgb:228,64,95;--tblr-pinterest-rgb:189,8,28;--tblr-vk-rgb:99,131,168;--tblr-rss-rgb:255,165,0;--tblr-flickr-rgb:0,99,220;--tblr-bitbucket-rgb:0,82,204;--tblr-tabler-rgb:0,84,166;--tblr-primary-text-emphasis:#002242;--tblr-secondary-text-emphasis:#292e34;--tblr-success-text-emphasis:#13481b;--tblr-info-text-emphasis:#1a3d5a;--tblr-warning-text-emphasis:#632903;--tblr-danger-text-emphasis:#561717;--tblr-light-text-emphasis:#3a4859;--tblr-dark-text-emphasis:#3a4859;--tblr-primary-bg-subtle:#ccdded;--tblr-secondary-bg-subtle:#e0e3e6;--tblr-success-bg-subtle:#d5f0da;--tblr-info-bg-subtle:#d9ebf9;--tblr-warning-bg-subtle:#fde1cd;--tblr-danger-bg-subtle:#f7d7d7;--tblr-light-bg-subtle:#fbfcfd;--tblr-dark-bg-subtle:#bbc3cd;--tblr-primary-border-subtle:#99bbdb;--tblr-secondary-border-subtle:#c2c7cd;--tblr-success-border-subtle:#ace1b4;--tblr-info-border-subtle:#b3d6f3;--tblr-warning-border-subtle:#fcc29c;--tblr-danger-border-subtle:#efb0b0;--tblr-light-border-subtle:#eef1f4;--tblr-dark-border-subtle:#929dab;--tblr-white-rgb:255,255,255;--tblr-black-rgb:0,0,0;--tblr-font-sans-serif:-apple-system,BlinkMacSystemFont,San Francisco,Segoe UI,Roboto,Helvetica Neue,sans-serif;--tblr-font-monospace:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tblr-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--tblr-body-font-family:var(--tblr-font-sans-serif);--tblr-body-font-size:0.875rem;--tblr-body-font-weight:400;--tblr-body-line-height:1.4285714286;--tblr-body-color:#182433;--tblr-body-color-rgb:24,36,51;--tblr-body-bg:#f6f8fb;--tblr-body-bg-rgb:246,248,251;--tblr-emphasis-color:#182433;--tblr-emphasis-color-rgb:24,36,51;--tblr-secondary-color:rgba(24, 36, 51, 0.75);--tblr-secondary-color-rgb:24,36,51;--tblr-secondary-bg:#eef1f4;--tblr-secondary-bg-rgb:238,241,244;--tblr-tertiary-color:rgba(24, 36, 51, 0.5);--tblr-tertiary-color-rgb:24,36,51;--tblr-tertiary-bg:#f6f8fb;--tblr-tertiary-bg-rgb:246,248,251;--tblr-heading-color:inherit;--tblr-link-color:#0054a6;--tblr-link-color-rgb:0,84,166;--tblr-link-decoration:none;--tblr-link-hover-color:#004385;--tblr-link-hover-color-rgb:0,67,133;--tblr-link-hover-decoration:underline;--tblr-code-color:var(--tblr-gray-600);--tblr-highlight-bg:#fdeccc;--tblr-border-width:1px;--tblr-border-style:solid;--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-radius:4px;--tblr-border-radius-sm:2px;--tblr-border-radius-lg:8px;--tblr-border-radius-xl:1rem;--tblr-border-radius-xxl:2rem;--tblr-border-radius-2xl:var(--tblr-border-radius-xxl);--tblr-border-radius-pill:100rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--tblr-box-shadow-inset:0 0 transparent;--tblr-focus-ring-width:0.25rem;--tblr-focus-ring-opacity:0.25;--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), 0.25);--tblr-form-valid-color:#2fb344;--tblr-form-valid-border-color:#2fb344;--tblr-form-invalid-color:#d63939;--tblr-form-invalid-border-color:#d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-body-bg:#040a11;--tblr-body-bg-rgb:4,10,17;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-secondary-color:rgba(252, 253, 254, 0.75);--tblr-secondary-color-rgb:252,253,254;--tblr-secondary-bg:#182433;--tblr-secondary-bg-rgb:24,36,51;--tblr-tertiary-color:rgba(252, 253, 254, 0.5);--tblr-tertiary-color-rgb:252,253,254;--tblr-tertiary-bg:#0e1722;--tblr-tertiary-bg-rgb:14,23,34;--tblr-primary-text-emphasis:#6698ca;--tblr-secondary-text-emphasis:#a3abb4;--tblr-success-text-emphasis:#82d18f;--tblr-info-text-emphasis:#8ec2ed;--tblr-warning-text-emphasis:#faa46a;--tblr-danger-text-emphasis:#e68888;--tblr-light-text-emphasis:#f6f8fb;--tblr-dark-text-emphasis:#dadfe5;--tblr-primary-bg-subtle:#001121;--tblr-secondary-bg-subtle:#14171a;--tblr-success-bg-subtle:#09240e;--tblr-info-bg-subtle:#0d1f2d;--tblr-warning-bg-subtle:#311501;--tblr-danger-bg-subtle:#2b0b0b;--tblr-light-bg-subtle:#182433;--tblr-dark-bg-subtle:#0c121a;--tblr-primary-border-subtle:#003264;--tblr-secondary-border-subtle:#3d454e;--tblr-success-border-subtle:#1c6b29;--tblr-info-border-subtle:#285c87;--tblr-warning-border-subtle:#943e04;--tblr-danger-border-subtle:#802222;--tblr-light-border-subtle:#3a4859;--tblr-dark-border-subtle:#182433;--tblr-heading-color:inherit;--tblr-link-color:#6698ca;--tblr-link-hover-color:#85add5;--tblr-link-color-rgb:102,152,202;--tblr-link-hover-color-rgb:133,173,213;--tblr-code-color:var(--tblr-gray-300);--tblr-border-color:#1f2e41;--tblr-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-form-valid-color:#82d18f;--tblr-form-valid-border-color:#82d18f;--tblr-form-invalid-color:#e68888;--tblr-form-invalid-border-color:#e68888}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.hr,hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}.h1,h1{font-size:1.5rem}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1rem}.h4,h4{font-size:.875rem}.h5,h5{font-size:.75rem}.h6,h6{font-size:.625rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:85.714285%}.mark,mark{padding:.1875em;background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,1));text-decoration:none}a:hover{--tblr-link-color-rgb:var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:85.714285%;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:85.714285%;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:2px}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:var(--tblr-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-size:5rem;font-weight:300;line-height:1.2}.display-2{font-size:4.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.display-5{font-size:3rem;font-weight:300;line-height:1.2}.display-6{font-size:2rem;font-weight:300;line-height:1.2}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:85.714285%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:85.714285%;color:#667382}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:85.714285%;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--tblr-breakpoint-xs:0;--tblr-breakpoint-sm:576px;--tblr-breakpoint-md:768px;--tblr-breakpoint-lg:992px;--tblr-breakpoint-xl:1200px;--tblr-breakpoint-xxl:1400px}.row{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-right:calc(-.5 * var(--tblr-gutter-x));margin-left:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows,1),1fr);grid-template-columns:repeat(var(--tblr-columns,12),1fr);gap:var(--tblr-gap,var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--tblr-gutter-x:0}.g-0,.gy-0{--tblr-gutter-y:0}.g-1,.gx-1{--tblr-gutter-x:0.25rem}.g-1,.gy-1{--tblr-gutter-y:0.25rem}.g-2,.gx-2{--tblr-gutter-x:0.5rem}.g-2,.gy-2{--tblr-gutter-y:0.5rem}.g-3,.gx-3{--tblr-gutter-x:1rem}.g-3,.gy-3{--tblr-gutter-y:1rem}.g-4,.gx-4{--tblr-gutter-x:1.5rem}.g-4,.gy-4{--tblr-gutter-y:1.5rem}.g-5,.gx-5{--tblr-gutter-x:2rem}.g-5,.gy-5{--tblr-gutter-y:2rem}.g-6,.gx-6{--tblr-gutter-x:3rem}.g-6,.gy-6{--tblr-gutter-y:3rem}.g-7,.gx-7{--tblr-gutter-x:5rem}.g-7,.gy-7{--tblr-gutter-y:5rem}.g-8,.gx-8{--tblr-gutter-x:8rem}.g-8,.gy-8{--tblr-gutter-y:8rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--tblr-gutter-x:0}.g-sm-0,.gy-sm-0{--tblr-gutter-y:0}.g-sm-1,.gx-sm-1{--tblr-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x:1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y:1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x:2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y:2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x:3rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y:3rem}.g-sm-7,.gx-sm-7{--tblr-gutter-x:5rem}.g-sm-7,.gy-sm-7{--tblr-gutter-y:5rem}.g-sm-8,.gx-sm-8{--tblr-gutter-x:8rem}.g-sm-8,.gy-sm-8{--tblr-gutter-y:8rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--tblr-gutter-x:0}.g-md-0,.gy-md-0{--tblr-gutter-y:0}.g-md-1,.gx-md-1{--tblr-gutter-x:0.25rem}.g-md-1,.gy-md-1{--tblr-gutter-y:0.25rem}.g-md-2,.gx-md-2{--tblr-gutter-x:0.5rem}.g-md-2,.gy-md-2{--tblr-gutter-y:0.5rem}.g-md-3,.gx-md-3{--tblr-gutter-x:1rem}.g-md-3,.gy-md-3{--tblr-gutter-y:1rem}.g-md-4,.gx-md-4{--tblr-gutter-x:1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y:1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x:2rem}.g-md-5,.gy-md-5{--tblr-gutter-y:2rem}.g-md-6,.gx-md-6{--tblr-gutter-x:3rem}.g-md-6,.gy-md-6{--tblr-gutter-y:3rem}.g-md-7,.gx-md-7{--tblr-gutter-x:5rem}.g-md-7,.gy-md-7{--tblr-gutter-y:5rem}.g-md-8,.gx-md-8{--tblr-gutter-x:8rem}.g-md-8,.gy-md-8{--tblr-gutter-y:8rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--tblr-gutter-x:0}.g-lg-0,.gy-lg-0{--tblr-gutter-y:0}.g-lg-1,.gx-lg-1{--tblr-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x:1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y:1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x:2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y:2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x:3rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y:3rem}.g-lg-7,.gx-lg-7{--tblr-gutter-x:5rem}.g-lg-7,.gy-lg-7{--tblr-gutter-y:5rem}.g-lg-8,.gx-lg-8{--tblr-gutter-x:8rem}.g-lg-8,.gy-lg-8{--tblr-gutter-y:8rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--tblr-gutter-x:0}.g-xl-0,.gy-xl-0{--tblr-gutter-y:0}.g-xl-1,.gx-xl-1{--tblr-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x:1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y:1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x:2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y:2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x:3rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y:3rem}.g-xl-7,.gx-xl-7{--tblr-gutter-x:5rem}.g-xl-7,.gy-xl-7{--tblr-gutter-y:5rem}.g-xl-8,.gx-xl-8{--tblr-gutter-x:8rem}.g-xl-8,.gy-xl-8{--tblr-gutter-y:8rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--tblr-gutter-x:0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y:0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x:2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y:2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x:3rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y:3rem}.g-xxl-7,.gx-xxl-7{--tblr-gutter-x:5rem}.g-xxl-7,.gy-xxl-7{--tblr-gutter-y:5rem}.g-xxl-8,.gx-xxl-8{--tblr-gutter-x:8rem}.g-xxl-8,.gy-xxl-8{--tblr-gutter-y:8rem}}.markdown>table,.table{--tblr-table-color-type:initial;--tblr-table-bg-type:initial;--tblr-table-color-state:initial;--tblr-table-bg-state:initial;--tblr-table-color:inherit;--tblr-table-bg:transparent;--tblr-table-border-color:var(--tblr-border-color-translucent);--tblr-table-accent-bg:transparent;--tblr-table-striped-color:inherit;--tblr-table-striped-bg:var(--tblr-bg-surface-tertiary);--tblr-table-active-color:inherit;--tblr-table-active-bg:rgba(0, 0, 0, 0.1);--tblr-table-hover-color:inherit;--tblr-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.markdown>table>:not(caption)>*>*,.table>:not(caption)>*>*{padding:.75rem .75rem;color:var(--tblr-table-color-state,var(--tblr-table-color-type,var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state,var(--tblr-table-bg-type,var(--tblr-table-accent-bg)))}.markdown>table>tbody,.table>tbody{vertical-align:inherit}.markdown>table>thead,.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.markdown>table>:not(caption)>*,.table-bordered>:not(caption)>*{border-width:var(--tblr-border-width) 0}.markdown>table>:not(caption)>*>*,.table-bordered>:not(caption)>*>*{border-width:0 var(--tblr-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(even)>*{--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state:var(--tblr-table-active-color);--tblr-table-bg-state:var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state:var(--tblr-table-hover-color);--tblr-table-bg-state:var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color:#182433;--tblr-table-bg:#ccdded;--tblr-table-border-color:#bacbda;--tblr-table-striped-bg:#c3d4e4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#bacbda;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#bfcfdf;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color:#182433;--tblr-table-bg:#e0e3e6;--tblr-table-border-color:#ccd0d4;--tblr-table-striped-bg:#d6d9dd;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#ccd0d4;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#d1d5d9;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color:#182433;--tblr-table-bg:#d5f0da;--tblr-table-border-color:#c2dcc9;--tblr-table-striped-bg:#cce6d2;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c2dcc9;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#c7e1cd;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color:#182433;--tblr-table-bg:#d9ebf9;--tblr-table-border-color:#c6d7e5;--tblr-table-striped-bg:#cfe1ef;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c6d7e5;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#cbdcea;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color:#182433;--tblr-table-bg:#fde1cd;--tblr-table-border-color:#e6cebe;--tblr-table-striped-bg:#f2d8c5;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e6cebe;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ecd3c1;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color:#182433;--tblr-table-bg:#f7d7d7;--tblr-table-border-color:#e1c5c7;--tblr-table-striped-bg:#eccecf;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e1c5c7;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#e6cacb;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color:#182433;--tblr-table-bg:#fcfdfe;--tblr-table-border-color:#e5e7ea;--tblr-table-striped-bg:#f1f2f4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e5e7ea;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ebedef;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color:#fcfdfe;--tblr-table-bg:#182433;--tblr-table-border-color:#2f3a47;--tblr-table-striped-bg:#232f3d;--tblr-table-striped-color:#fcfdfe;--tblr-table-active-bg:#2f3a47;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#293442;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.5625rem + var(--tblr-border-width));padding-bottom:calc(.5625rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.4285714286}.col-form-label-lg{padding-top:calc(.5rem + var(--tblr-border-width));padding-bottom:calc(.5rem + var(--tblr-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.125rem + var(--tblr-border-width));padding-bottom:calc(.125rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:85.714285%;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.5625rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.4285714286em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-webkit-input-placeholder{color:#929dab;opacity:1}.form-control:-ms-input-placeholder{color:#929dab;opacity:1}.form-control::-ms-input-placeholder{color:#929dab;opacity:1}.form-control::placeholder{color:#929dab;opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::-webkit-file-upload-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.5625rem 0;margin-bottom:0;line-height:1.4285714286;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2));padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-sm::file-selector-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2));padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}.form-control-lg::file-selector-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}textarea.form-control{min-height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));padding:.5625rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.5625rem 2.25rem .5625rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.125rem;padding-bottom:.125rem;padding-left:.25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:.75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23fcfdfe' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.25rem;padding-left:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:left;margin-left:-2rem}.form-check-reverse{padding-right:2rem;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-2rem;margin-left:0}.form-check-input{--tblr-form-check-bg:var(--tblr-bg-forms);width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80aad3;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-left:2.5rem}.form-switch .form-check-input{--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23dadfe5'/%3e%3c/svg%3e");width:2rem;margin-left:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:left center;border-radius:2rem;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2380aad3'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5rem;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5rem;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.25rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;-webkit-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3cce4}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3cce4}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-webkit-input-placeholder,.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-ms-input-placeholder,.form-floating>.form-control::-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-ms-input-placeholder),.form-floating>.form-control:not(:-ms-input-placeholder){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-ms-input-placeholder)~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-ms-input-placeholder)~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#667382}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--tblr-bg-surface-secondary)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.5625rem .75rem;font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-secondary);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--tblr-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--tblr-form-valid-border-color);padding-right:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) right calc(.3571428572em + .28125rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--tblr-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--tblr-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--tblr-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--tblr-form-invalid-border-color);padding-right:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) right calc(.3571428572em + .28125rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--tblr-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--tblr-btn-padding-x:1rem;--tblr-btn-padding-y:0.5625rem;--tblr-btn-font-family:var(--tblr-font-sans-serif);--tblr-btn-font-size:0.875rem;--tblr-btn-font-weight:var(--tblr-font-weight-medium);--tblr-btn-line-height:1.4285714286;--tblr-btn-color:var(--tblr-body-color);--tblr-btn-bg:transparent;--tblr-btn-border-width:var(--tblr-border-width);--tblr-btn-border-color:transparent;--tblr-btn-border-radius:var(--tblr-border-radius);--tblr-btn-hover-border-color:transparent;--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-disabled-opacity:0.4;--tblr-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight:400;--tblr-btn-color:var(--tblr-link-color);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-link-hover-color);--tblr-btn-hover-border-color:transparent;--tblr-btn-active-color:var(--tblr-link-hover-color);--tblr-btn-active-border-color:transparent;--tblr-btn-disabled-color:#667382;--tblr-btn-disabled-border-color:transparent;--tblr-btn-box-shadow:0 0 0 #000;--tblr-btn-focus-shadow-rgb:38,109,179;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--tblr-btn-padding-y:0.5rem;--tblr-btn-padding-x:0.75rem;--tblr-btn-font-size:1.25rem;--tblr-btn-border-radius:var(--tblr-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--tblr-btn-padding-y:0.125rem;--tblr-btn-padding-x:0.25rem;--tblr-btn-font-size:0.75rem;--tblr-btn-border-radius:var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.dropdown-menu{--tblr-dropdown-zindex:1000;--tblr-dropdown-min-width:11rem;--tblr-dropdown-padding-x:0;--tblr-dropdown-padding-y:0.25rem;--tblr-dropdown-spacer:1px;--tblr-dropdown-font-size:0.875rem;--tblr-dropdown-color:var(--tblr-body-color);--tblr-dropdown-bg:var(--tblr-bg-surface);--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-border-radius:var(--tblr-border-radius);--tblr-dropdown-border-width:var(--tblr-border-width);--tblr-dropdown-inner-border-radius:calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y:var(--tblr-spacer);--tblr-dropdown-box-shadow:var(--tblr-box-shadow-dropdown);--tblr-dropdown-link-color:inherit;--tblr-dropdown-link-hover-color:inherit;--tblr-dropdown-link-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x:0.75rem;--tblr-dropdown-item-padding-y:0.5rem;--tblr-dropdown-header-color:#667382;--tblr-dropdown-header-padding-x:0.75rem;--tblr-dropdown-header-padding-y:0.25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:left;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--tblr-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-135deg)}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(45deg)}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color:#dadfe5;--tblr-dropdown-bg:#182433;--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-link-color:#dadfe5;--tblr-dropdown-link-hover-color:#ffffff;--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:#929dab;--tblr-dropdown-header-color:#929dab}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--tblr-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--tblr-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.1875rem;padding-left:.1875rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--tblr-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--tblr-nav-link-padding-x:0.75rem;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-secondary);--tblr-nav-link-hover-color:var(--tblr-link-hover-color);--tblr-nav-link-disabled-color:var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width:var(--tblr-border-width);--tblr-nav-tabs-border-color:var(--tblr-border-color);--tblr-nav-tabs-border-radius:var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color:var(--tblr-body-color);--tblr-nav-tabs-link-active-bg:var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--tblr-nav-tabs-border-radius);border-top-right-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--tblr-nav-pills-border-radius:var(--tblr-border-radius);--tblr-nav-pills-link-active-color:var(--tblr-primary);--tblr-nav-pills-link-active-bg:var(--tblr-active-bg)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap:1rem;--tblr-nav-underline-border-width:0.125rem;--tblr-nav-underline-link-active-color:var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--tblr-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:600;color:var(--tblr-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--tblr-navbar-padding-x:0;--tblr-navbar-padding-y:0.25rem;--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-hover-color:rgba(var(--tblr-emphasis-color-rgb), 0.8);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:var(--tblr-body-color) color;--tblr-navbar-brand-padding-y:0.5rem;--tblr-navbar-brand-margin-end:1rem;--tblr-navbar-brand-font-size:1.25rem;--tblr-navbar-brand-color:var(--tblr-body-color);--tblr-navbar-brand-hover-color:var(--tblr-body-color) color;--tblr-navbar-nav-link-padding-x:0.75rem;--tblr-navbar-toggler-padding-y:0;--tblr-navbar-toggler-padding-x:0;--tblr-navbar-toggler-font-size:1rem;--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color:rgba(var(--tblr-emphasis-color-rgb), 0.15);--tblr-navbar-toggler-border-radius:var(--tblr-border-radius);--tblr-navbar-toggler-focus-width:0;--tblr-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-right:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x:0;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-navbar-color);--tblr-nav-link-hover-color:var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color:var(--tblr-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color:rgba(255, 255, 255, 0.7);--tblr-navbar-hover-color:rgba(255, 255, 255, 0.75);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:#ffffff;--tblr-navbar-brand-color:#ffffff;--tblr-navbar-brand-hover-color:#ffffff;--tblr-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y:1.25rem;--tblr-card-spacer-x:1.25rem;--tblr-card-title-spacer-y:1.25rem;--tblr-card-border-width:var(--tblr-border-width);--tblr-card-border-color:var(--tblr-border-color-translucent);--tblr-card-border-radius:var(--tblr-border-radius);--tblr-card-box-shadow:var(--tblr-shadow-card);--tblr-card-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-card-cap-padding-y:1.25rem;--tblr-card-cap-padding-x:1.25rem;--tblr-card-cap-bg:var(--tblr-bg-surface-tertiary);--tblr-card-cap-color:inherit;--tblr-card-color:inherit;--tblr-card-bg:var(--tblr-bg-surface);--tblr-card-img-overlay-padding:1rem;--tblr-card-group-margin:1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>.hr,.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--tblr-accordion-color:var(--tblr-body-color);--tblr-accordion-bg:transparent;--tblr-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--tblr-accordion-border-color:var(--tblr-border-color-translucent);--tblr-accordion-border-width:var(--tblr-border-width);--tblr-accordion-border-radius:var(--tblr-border-radius);--tblr-accordion-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-btn-padding-x:1.25rem;--tblr-accordion-btn-padding-y:1rem;--tblr-accordion-btn-color:var(--tblr-body-color);--tblr-accordion-btn-bg:transparent;--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--tblr-accordion-btn-icon-width:1rem;--tblr-accordion-btn-icon-transform:rotate(-180deg);--tblr-accordion-btn-icon-transition:transform 0.2s ease-in-out;--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--tblr-accordion-btn-focus-border-color:var(--tblr-border-color-translucent);--tblr-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-accordion-body-padding-x:1.25rem;--tblr-accordion-body-padding-y:1rem;--tblr-accordion-active-color:inherit;--tblr-accordion-active-bg:transparent}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x);font-size:.875rem;color:var(--tblr-accordion-btn-color);text-align:left;background-color:var(--tblr-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--tblr-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--tblr-accordion-active-color);background-color:var(--tblr-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--tblr-accordion-btn-active-icon);transform:var(--tblr-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--tblr-accordion-btn-icon-width);height:var(--tblr-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--tblr-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--tblr-accordion-btn-icon-width);transition:var(--tblr-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--tblr-accordion-btn-focus-border-color);outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--tblr-accordion-color);background-color:var(--tblr-accordion-bg);border:var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--tblr-accordion-border-radius);border-top-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--tblr-accordion-inner-border-radius);border-top-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--tblr-accordion-inner-border-radius);border-bottom-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-body{padding:var(--tblr-accordion-body-padding-y) var(--tblr-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--tblr-breadcrumb-padding-x:0;--tblr-breadcrumb-padding-y:0;--tblr-breadcrumb-margin-bottom:1rem;--tblr-breadcrumb-divider-color:var(--tblr-secondary);--tblr-breadcrumb-item-padding-x:0.5rem;--tblr-breadcrumb-item-active-color:inherit;display:flex;flex-wrap:wrap;padding:var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x);margin-bottom:var(--tblr-breadcrumb-margin-bottom);font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color)}.pagination{--tblr-pagination-padding-x:0.25rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.875rem;--tblr-pagination-color:var(--tblr-secondary);--tblr-pagination-bg:transparent;--tblr-pagination-border-width:0;--tblr-pagination-border-color:var(--tblr-border-color);--tblr-pagination-border-radius:var(--tblr-border-radius);--tblr-pagination-hover-color:var(--tblr-link-hover-color);--tblr-pagination-hover-bg:var(--tblr-tertiary-bg);--tblr-pagination-hover-border-color:var(--tblr-border-color);--tblr-pagination-focus-color:var(--tblr-link-hover-color);--tblr-pagination-focus-bg:var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-pagination-active-color:#ffffff;--tblr-pagination-active-bg:var(--tblr-primary);--tblr-pagination-active-border-color:var(--tblr-primary);--tblr-pagination-disabled-color:var(--tblr-disabled-color);--tblr-pagination-disabled-bg:transparent;--tblr-pagination-disabled-border-color:var(--tblr-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x:1.5rem;--tblr-pagination-padding-y:0.75rem;--tblr-pagination-font-size:1.09375rem;--tblr-pagination-border-radius:var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x:0.5rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.765625rem;--tblr-pagination-border-radius:var(--tblr-border-radius-sm)}.badge{--tblr-badge-padding-x:0.5em;--tblr-badge-padding-y:0.25em;--tblr-badge-font-size:85.714285%;--tblr-badge-font-weight:var(--tblr-font-weight-medium);--tblr-badge-color:var(--tblr-secondary);--tblr-badge-border-radius:var(--tblr-border-radius);display:inline-block;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-size:var(--tblr-badge-font-size);font-weight:var(--tblr-badge-font-weight);line-height:1;color:var(--tblr-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--tblr-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--tblr-alert-bg:transparent;--tblr-alert-padding-x:1rem;--tblr-alert-padding-y:0.75rem;--tblr-alert-margin-bottom:1rem;--tblr-alert-color:inherit;--tblr-alert-border-color:transparent;--tblr-alert-border:var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius:var(--tblr-border-radius);--tblr-alert-link-color:inherit;position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);color:var(--tblr-alert-color);background-color:var(--tblr-alert-bg);border:var(--tblr-alert-border);border-radius:var(--tblr-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.9375rem 1rem}.alert-primary{--tblr-alert-color:var(--tblr-primary-text-emphasis);--tblr-alert-bg:var(--tblr-primary-bg-subtle);--tblr-alert-border-color:var(--tblr-primary-border-subtle);--tblr-alert-link-color:var(--tblr-primary-text-emphasis)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary-text-emphasis);--tblr-alert-bg:var(--tblr-secondary-bg-subtle);--tblr-alert-border-color:var(--tblr-secondary-border-subtle);--tblr-alert-link-color:var(--tblr-secondary-text-emphasis)}.alert-success{--tblr-alert-color:var(--tblr-success-text-emphasis);--tblr-alert-bg:var(--tblr-success-bg-subtle);--tblr-alert-border-color:var(--tblr-success-border-subtle);--tblr-alert-link-color:var(--tblr-success-text-emphasis)}.alert-info{--tblr-alert-color:var(--tblr-info-text-emphasis);--tblr-alert-bg:var(--tblr-info-bg-subtle);--tblr-alert-border-color:var(--tblr-info-border-subtle);--tblr-alert-link-color:var(--tblr-info-text-emphasis)}.alert-warning{--tblr-alert-color:var(--tblr-warning-text-emphasis);--tblr-alert-bg:var(--tblr-warning-bg-subtle);--tblr-alert-border-color:var(--tblr-warning-border-subtle);--tblr-alert-link-color:var(--tblr-warning-text-emphasis)}.alert-danger{--tblr-alert-color:var(--tblr-danger-text-emphasis);--tblr-alert-bg:var(--tblr-danger-bg-subtle);--tblr-alert-border-color:var(--tblr-danger-border-subtle);--tblr-alert-link-color:var(--tblr-danger-text-emphasis)}.alert-light{--tblr-alert-color:var(--tblr-light-text-emphasis);--tblr-alert-bg:var(--tblr-light-bg-subtle);--tblr-alert-border-color:var(--tblr-light-border-subtle);--tblr-alert-link-color:var(--tblr-light-text-emphasis)}.alert-dark{--tblr-alert-color:var(--tblr-dark-text-emphasis);--tblr-alert-bg:var(--tblr-dark-bg-subtle);--tblr-alert-border-color:var(--tblr-dark-border-subtle);--tblr-alert-link-color:var(--tblr-dark-text-emphasis)}.alert-muted{--tblr-alert-color:var(--tblr-muted-text-emphasis);--tblr-alert-bg:var(--tblr-muted-bg-subtle);--tblr-alert-border-color:var(--tblr-muted-border-subtle);--tblr-alert-link-color:var(--tblr-muted-text-emphasis)}.alert-blue{--tblr-alert-color:var(--tblr-blue-text-emphasis);--tblr-alert-bg:var(--tblr-blue-bg-subtle);--tblr-alert-border-color:var(--tblr-blue-border-subtle);--tblr-alert-link-color:var(--tblr-blue-text-emphasis)}.alert-azure{--tblr-alert-color:var(--tblr-azure-text-emphasis);--tblr-alert-bg:var(--tblr-azure-bg-subtle);--tblr-alert-border-color:var(--tblr-azure-border-subtle);--tblr-alert-link-color:var(--tblr-azure-text-emphasis)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo-text-emphasis);--tblr-alert-bg:var(--tblr-indigo-bg-subtle);--tblr-alert-border-color:var(--tblr-indigo-border-subtle);--tblr-alert-link-color:var(--tblr-indigo-text-emphasis)}.alert-purple{--tblr-alert-color:var(--tblr-purple-text-emphasis);--tblr-alert-bg:var(--tblr-purple-bg-subtle);--tblr-alert-border-color:var(--tblr-purple-border-subtle);--tblr-alert-link-color:var(--tblr-purple-text-emphasis)}.alert-pink{--tblr-alert-color:var(--tblr-pink-text-emphasis);--tblr-alert-bg:var(--tblr-pink-bg-subtle);--tblr-alert-border-color:var(--tblr-pink-border-subtle);--tblr-alert-link-color:var(--tblr-pink-text-emphasis)}.alert-red{--tblr-alert-color:var(--tblr-red-text-emphasis);--tblr-alert-bg:var(--tblr-red-bg-subtle);--tblr-alert-border-color:var(--tblr-red-border-subtle);--tblr-alert-link-color:var(--tblr-red-text-emphasis)}.alert-orange{--tblr-alert-color:var(--tblr-orange-text-emphasis);--tblr-alert-bg:var(--tblr-orange-bg-subtle);--tblr-alert-border-color:var(--tblr-orange-border-subtle);--tblr-alert-link-color:var(--tblr-orange-text-emphasis)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow-text-emphasis);--tblr-alert-bg:var(--tblr-yellow-bg-subtle);--tblr-alert-border-color:var(--tblr-yellow-border-subtle);--tblr-alert-link-color:var(--tblr-yellow-text-emphasis)}.alert-lime{--tblr-alert-color:var(--tblr-lime-text-emphasis);--tblr-alert-bg:var(--tblr-lime-bg-subtle);--tblr-alert-border-color:var(--tblr-lime-border-subtle);--tblr-alert-link-color:var(--tblr-lime-text-emphasis)}.alert-green{--tblr-alert-color:var(--tblr-green-text-emphasis);--tblr-alert-bg:var(--tblr-green-bg-subtle);--tblr-alert-border-color:var(--tblr-green-border-subtle);--tblr-alert-link-color:var(--tblr-green-text-emphasis)}.alert-teal{--tblr-alert-color:var(--tblr-teal-text-emphasis);--tblr-alert-bg:var(--tblr-teal-bg-subtle);--tblr-alert-border-color:var(--tblr-teal-border-subtle);--tblr-alert-link-color:var(--tblr-teal-text-emphasis)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan-text-emphasis);--tblr-alert-bg:var(--tblr-cyan-bg-subtle);--tblr-alert-border-color:var(--tblr-cyan-border-subtle);--tblr-alert-link-color:var(--tblr-cyan-text-emphasis)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook-text-emphasis);--tblr-alert-bg:var(--tblr-facebook-bg-subtle);--tblr-alert-border-color:var(--tblr-facebook-border-subtle);--tblr-alert-link-color:var(--tblr-facebook-text-emphasis)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter-text-emphasis);--tblr-alert-bg:var(--tblr-twitter-bg-subtle);--tblr-alert-border-color:var(--tblr-twitter-border-subtle);--tblr-alert-link-color:var(--tblr-twitter-text-emphasis)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin-text-emphasis);--tblr-alert-bg:var(--tblr-linkedin-bg-subtle);--tblr-alert-border-color:var(--tblr-linkedin-border-subtle);--tblr-alert-link-color:var(--tblr-linkedin-text-emphasis)}.alert-google{--tblr-alert-color:var(--tblr-google-text-emphasis);--tblr-alert-bg:var(--tblr-google-bg-subtle);--tblr-alert-border-color:var(--tblr-google-border-subtle);--tblr-alert-link-color:var(--tblr-google-text-emphasis)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube-text-emphasis);--tblr-alert-bg:var(--tblr-youtube-bg-subtle);--tblr-alert-border-color:var(--tblr-youtube-border-subtle);--tblr-alert-link-color:var(--tblr-youtube-text-emphasis)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo-text-emphasis);--tblr-alert-bg:var(--tblr-vimeo-bg-subtle);--tblr-alert-border-color:var(--tblr-vimeo-border-subtle);--tblr-alert-link-color:var(--tblr-vimeo-text-emphasis)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble-text-emphasis);--tblr-alert-bg:var(--tblr-dribbble-bg-subtle);--tblr-alert-border-color:var(--tblr-dribbble-border-subtle);--tblr-alert-link-color:var(--tblr-dribbble-text-emphasis)}.alert-github{--tblr-alert-color:var(--tblr-github-text-emphasis);--tblr-alert-bg:var(--tblr-github-bg-subtle);--tblr-alert-border-color:var(--tblr-github-border-subtle);--tblr-alert-link-color:var(--tblr-github-text-emphasis)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram-text-emphasis);--tblr-alert-bg:var(--tblr-instagram-bg-subtle);--tblr-alert-border-color:var(--tblr-instagram-border-subtle);--tblr-alert-link-color:var(--tblr-instagram-text-emphasis)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest-text-emphasis);--tblr-alert-bg:var(--tblr-pinterest-bg-subtle);--tblr-alert-border-color:var(--tblr-pinterest-border-subtle);--tblr-alert-link-color:var(--tblr-pinterest-text-emphasis)}.alert-vk{--tblr-alert-color:var(--tblr-vk-text-emphasis);--tblr-alert-bg:var(--tblr-vk-bg-subtle);--tblr-alert-border-color:var(--tblr-vk-border-subtle);--tblr-alert-link-color:var(--tblr-vk-text-emphasis)}.alert-rss{--tblr-alert-color:var(--tblr-rss-text-emphasis);--tblr-alert-bg:var(--tblr-rss-bg-subtle);--tblr-alert-border-color:var(--tblr-rss-border-subtle);--tblr-alert-link-color:var(--tblr-rss-text-emphasis)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr-text-emphasis);--tblr-alert-bg:var(--tblr-flickr-bg-subtle);--tblr-alert-border-color:var(--tblr-flickr-border-subtle);--tblr-alert-link-color:var(--tblr-flickr-text-emphasis)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket-text-emphasis);--tblr-alert-bg:var(--tblr-bitbucket-bg-subtle);--tblr-alert-border-color:var(--tblr-bitbucket-border-subtle);--tblr-alert-link-color:var(--tblr-bitbucket-text-emphasis)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler-text-emphasis);--tblr-alert-bg:var(--tblr-tabler-bg-subtle);--tblr-alert-border-color:var(--tblr-tabler-border-subtle);--tblr-alert-link-color:var(--tblr-tabler-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--tblr-progress-height:0.5rem;--tblr-progress-font-size:0.65625rem;--tblr-progress-bg:var(--tblr-border-color);--tblr-progress-border-radius:var(--tblr-border-radius);--tblr-progress-box-shadow:var(--tblr-box-shadow-inset);--tblr-progress-bar-color:#ffffff;--tblr-progress-bar-bg:var(--tblr-primary);--tblr-progress-bar-transition:width 0.6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--tblr-list-group-color:var(--tblr-body-color);--tblr-list-group-bg:inherit;--tblr-list-group-border-color:var(--tblr-border-color);--tblr-list-group-border-width:var(--tblr-border-width);--tblr-list-group-border-radius:var(--tblr-border-radius);--tblr-list-group-item-padding-x:1.25rem;--tblr-list-group-item-padding-y:1.25rem;--tblr-list-group-action-color:inherit;--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-list-group-action-active-color:var(--tblr-body-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-bg);--tblr-list-group-disabled-color:var(--tblr-secondary-color);--tblr-list-group-disabled-bg:inherit;--tblr-list-group-active-color:inherit;--tblr-list-group-active-bg:var(--tblr-active-bg);--tblr-list-group-active-border-color:var(--tblr-border-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--tblr-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--tblr-list-group-border-width));border-top-width:var(--tblr-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color:var(--tblr-primary-text-emphasis);--tblr-list-group-bg:var(--tblr-primary-bg-subtle);--tblr-list-group-border-color:var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-primary-border-subtle);--tblr-list-group-active-color:var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color:var(--tblr-secondary-text-emphasis);--tblr-list-group-bg:var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color:var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-active-color:var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color:var(--tblr-success-text-emphasis);--tblr-list-group-bg:var(--tblr-success-bg-subtle);--tblr-list-group-border-color:var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-success-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-success-border-subtle);--tblr-list-group-active-color:var(--tblr-success-bg-subtle);--tblr-list-group-active-bg:var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color:var(--tblr-info-text-emphasis);--tblr-list-group-bg:var(--tblr-info-bg-subtle);--tblr-list-group-border-color:var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-info-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-info-border-subtle);--tblr-list-group-active-color:var(--tblr-info-bg-subtle);--tblr-list-group-active-bg:var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color:var(--tblr-warning-text-emphasis);--tblr-list-group-bg:var(--tblr-warning-bg-subtle);--tblr-list-group-border-color:var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-warning-border-subtle);--tblr-list-group-active-color:var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg:var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color:var(--tblr-danger-text-emphasis);--tblr-list-group-bg:var(--tblr-danger-bg-subtle);--tblr-list-group-border-color:var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-danger-border-subtle);--tblr-list-group-active-color:var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg:var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color:var(--tblr-light-text-emphasis);--tblr-list-group-bg:var(--tblr-light-bg-subtle);--tblr-list-group-border-color:var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-light-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-light-border-subtle);--tblr-list-group-active-color:var(--tblr-light-bg-subtle);--tblr-list-group-active-bg:var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color:var(--tblr-dark-text-emphasis);--tblr-list-group-bg:var(--tblr-dark-bg-subtle);--tblr-list-group-border-color:var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dark-border-subtle);--tblr-list-group-active-color:var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color:var(--tblr-muted-text-emphasis);--tblr-list-group-bg:var(--tblr-muted-bg-subtle);--tblr-list-group-border-color:var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-muted-border-subtle);--tblr-list-group-active-color:var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg:var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color:var(--tblr-blue-text-emphasis);--tblr-list-group-bg:var(--tblr-blue-bg-subtle);--tblr-list-group-border-color:var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-blue-border-subtle);--tblr-list-group-active-color:var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg:var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color:var(--tblr-azure-text-emphasis);--tblr-list-group-bg:var(--tblr-azure-bg-subtle);--tblr-list-group-border-color:var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-azure-border-subtle);--tblr-list-group-active-color:var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg:var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color:var(--tblr-indigo-text-emphasis);--tblr-list-group-bg:var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color:var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-active-color:var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color:var(--tblr-purple-text-emphasis);--tblr-list-group-bg:var(--tblr-purple-bg-subtle);--tblr-list-group-border-color:var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-purple-border-subtle);--tblr-list-group-active-color:var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg:var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color:var(--tblr-pink-text-emphasis);--tblr-list-group-bg:var(--tblr-pink-bg-subtle);--tblr-list-group-border-color:var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pink-border-subtle);--tblr-list-group-active-color:var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color:var(--tblr-red-text-emphasis);--tblr-list-group-bg:var(--tblr-red-bg-subtle);--tblr-list-group-border-color:var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-red-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-red-border-subtle);--tblr-list-group-active-color:var(--tblr-red-bg-subtle);--tblr-list-group-active-bg:var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color:var(--tblr-orange-text-emphasis);--tblr-list-group-bg:var(--tblr-orange-bg-subtle);--tblr-list-group-border-color:var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-orange-border-subtle);--tblr-list-group-active-color:var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg:var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color:var(--tblr-yellow-text-emphasis);--tblr-list-group-bg:var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color:var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-active-color:var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg:var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color:var(--tblr-lime-text-emphasis);--tblr-list-group-bg:var(--tblr-lime-bg-subtle);--tblr-list-group-border-color:var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-lime-border-subtle);--tblr-list-group-active-color:var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg:var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color:var(--tblr-green-text-emphasis);--tblr-list-group-bg:var(--tblr-green-bg-subtle);--tblr-list-group-border-color:var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-green-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-green-border-subtle);--tblr-list-group-active-color:var(--tblr-green-bg-subtle);--tblr-list-group-active-bg:var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color:var(--tblr-teal-text-emphasis);--tblr-list-group-bg:var(--tblr-teal-bg-subtle);--tblr-list-group-border-color:var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-teal-border-subtle);--tblr-list-group-active-color:var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg:var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color:var(--tblr-cyan-text-emphasis);--tblr-list-group-bg:var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color:var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-active-color:var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg:var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-cyan-text-emphasis)}.list-group-item-facebook{--tblr-list-group-color:var(--tblr-facebook-text-emphasis);--tblr-list-group-bg:var(--tblr-facebook-bg-subtle);--tblr-list-group-border-color:var(--tblr-facebook-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-active-color:var(--tblr-facebook-bg-subtle);--tblr-list-group-active-bg:var(--tblr-facebook-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-facebook-text-emphasis)}.list-group-item-twitter{--tblr-list-group-color:var(--tblr-twitter-text-emphasis);--tblr-list-group-bg:var(--tblr-twitter-bg-subtle);--tblr-list-group-border-color:var(--tblr-twitter-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-active-color:var(--tblr-twitter-bg-subtle);--tblr-list-group-active-bg:var(--tblr-twitter-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-twitter-text-emphasis)}.list-group-item-linkedin{--tblr-list-group-color:var(--tblr-linkedin-text-emphasis);--tblr-list-group-bg:var(--tblr-linkedin-bg-subtle);--tblr-list-group-border-color:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-active-color:var(--tblr-linkedin-bg-subtle);--tblr-list-group-active-bg:var(--tblr-linkedin-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-linkedin-text-emphasis)}.list-group-item-google{--tblr-list-group-color:var(--tblr-google-text-emphasis);--tblr-list-group-bg:var(--tblr-google-bg-subtle);--tblr-list-group-border-color:var(--tblr-google-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-google-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-google-border-subtle);--tblr-list-group-active-color:var(--tblr-google-bg-subtle);--tblr-list-group-active-bg:var(--tblr-google-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-google-text-emphasis)}.list-group-item-youtube{--tblr-list-group-color:var(--tblr-youtube-text-emphasis);--tblr-list-group-bg:var(--tblr-youtube-bg-subtle);--tblr-list-group-border-color:var(--tblr-youtube-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-active-color:var(--tblr-youtube-bg-subtle);--tblr-list-group-active-bg:var(--tblr-youtube-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-youtube-text-emphasis)}.list-group-item-vimeo{--tblr-list-group-color:var(--tblr-vimeo-text-emphasis);--tblr-list-group-bg:var(--tblr-vimeo-bg-subtle);--tblr-list-group-border-color:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-active-color:var(--tblr-vimeo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vimeo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vimeo-text-emphasis)}.list-group-item-dribbble{--tblr-list-group-color:var(--tblr-dribbble-text-emphasis);--tblr-list-group-bg:var(--tblr-dribbble-bg-subtle);--tblr-list-group-border-color:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-active-color:var(--tblr-dribbble-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dribbble-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dribbble-text-emphasis)}.list-group-item-github{--tblr-list-group-color:var(--tblr-github-text-emphasis);--tblr-list-group-bg:var(--tblr-github-bg-subtle);--tblr-list-group-border-color:var(--tblr-github-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-github-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-github-border-subtle);--tblr-list-group-active-color:var(--tblr-github-bg-subtle);--tblr-list-group-active-bg:var(--tblr-github-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-github-text-emphasis)}.list-group-item-instagram{--tblr-list-group-color:var(--tblr-instagram-text-emphasis);--tblr-list-group-bg:var(--tblr-instagram-bg-subtle);--tblr-list-group-border-color:var(--tblr-instagram-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-active-color:var(--tblr-instagram-bg-subtle);--tblr-list-group-active-bg:var(--tblr-instagram-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-instagram-text-emphasis)}.list-group-item-pinterest{--tblr-list-group-color:var(--tblr-pinterest-text-emphasis);--tblr-list-group-bg:var(--tblr-pinterest-bg-subtle);--tblr-list-group-border-color:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-active-color:var(--tblr-pinterest-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pinterest-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pinterest-text-emphasis)}.list-group-item-vk{--tblr-list-group-color:var(--tblr-vk-text-emphasis);--tblr-list-group-bg:var(--tblr-vk-bg-subtle);--tblr-list-group-border-color:var(--tblr-vk-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vk-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vk-border-subtle);--tblr-list-group-active-color:var(--tblr-vk-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vk-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vk-text-emphasis)}.list-group-item-rss{--tblr-list-group-color:var(--tblr-rss-text-emphasis);--tblr-list-group-bg:var(--tblr-rss-bg-subtle);--tblr-list-group-border-color:var(--tblr-rss-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-rss-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-rss-border-subtle);--tblr-list-group-active-color:var(--tblr-rss-bg-subtle);--tblr-list-group-active-bg:var(--tblr-rss-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-rss-text-emphasis)}.list-group-item-flickr{--tblr-list-group-color:var(--tblr-flickr-text-emphasis);--tblr-list-group-bg:var(--tblr-flickr-bg-subtle);--tblr-list-group-border-color:var(--tblr-flickr-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-active-color:var(--tblr-flickr-bg-subtle);--tblr-list-group-active-bg:var(--tblr-flickr-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-flickr-text-emphasis)}.list-group-item-bitbucket{--tblr-list-group-color:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-bg:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-border-color:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-active-color:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-active-bg:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-bitbucket-text-emphasis)}.list-group-item-tabler{--tblr-list-group-color:var(--tblr-tabler-text-emphasis);--tblr-list-group-bg:var(--tblr-tabler-bg-subtle);--tblr-list-group-border-color:var(--tblr-tabler-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-active-color:var(--tblr-tabler-bg-subtle);--tblr-list-group-active-bg:var(--tblr-tabler-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-tabler-text-emphasis)}.btn-close{--tblr-btn-close-color:#182433;--tblr-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--tblr-btn-close-opacity:0.4;--tblr-btn-close-hover-opacity:0.75;--tblr-btn-close-focus-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-btn-close-focus-opacity:1;--tblr-btn-close-disabled-opacity:0.25;--tblr-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--tblr-btn-close-color);background:transparent var(--tblr-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:4px;opacity:var(--tblr-btn-close-opacity)}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.btn-close-white{filter:var(--tblr-btn-close-white-filter)}[data-bs-theme=dark] .btn-close,body[data-bs-theme=dark] [data-bs-theme=light] .btn-close{filter:var(--tblr-btn-close-white-filter)}.toast{--tblr-toast-zindex:1090;--tblr-toast-padding-x:0.75rem;--tblr-toast-padding-y:0.5rem;--tblr-toast-spacing:calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width:350px;--tblr-toast-font-size:0.875rem;--tblr-toast-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-border-width:var(--tblr-border-width);--tblr-toast-border-color:var(--tblr-border-color);--tblr-toast-border-radius:var(--tblr-border-radius);--tblr-toast-box-shadow:var(--tblr-box-shadow);--tblr-toast-header-color:var(--tblr-secondary);--tblr-toast-header-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-header-border-color:var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex:1090;position:absolute;z-index:var(--tblr-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--tblr-toast-padding-x));margin-left:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex:1055;--tblr-modal-width:540px;--tblr-modal-padding:1.5rem;--tblr-modal-margin:0.5rem;--tblr-modal-bg:var(--tblr-bg-surface);--tblr-modal-border-color:transparent;--tblr-modal-border-width:var(--tblr-border-width);--tblr-modal-border-radius:var(--tblr-border-radius-lg);--tblr-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-modal-inner-border-radius:calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x:1.5rem;--tblr-modal-header-padding-y:1.5rem;--tblr-modal-header-padding:1.5rem;--tblr-modal-header-border-color:var(--tblr-border-color);--tblr-modal-header-border-width:var(--tblr-border-width);--tblr-modal-title-line-height:1.4285714286;--tblr-modal-footer-gap:0.75rem;--tblr-modal-footer-bg:var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color:var(--tblr-border-color);--tblr-modal-footer-border-width:var(--tblr-border-width);position:fixed;top:0;left:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-1rem)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex:1050;--tblr-backdrop-bg:#182433;--tblr-backdrop-opacity:0.24;position:fixed;top:0;left:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-left-radius:var(--tblr-modal-inner-border-radius);border-top-right-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin:calc(-.5 * var(--tblr-modal-header-padding-y)) calc(-.5 * var(--tblr-modal-header-padding-x)) calc(-.5 * var(--tblr-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-right-radius:var(--tblr-modal-inner-border-radius);border-bottom-left-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--tblr-modal-margin:1.75rem;--tblr-modal-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0}.modal-dialog{max-width:var(--tblr-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--tblr-modal-width:380px}}@media (min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width:720px}}@media (min-width:1200px){.modal-xl{--tblr-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--tblr-tooltip-zindex:1080;--tblr-tooltip-max-width:200px;--tblr-tooltip-padding-x:var(--tblr-spacer-2);--tblr-tooltip-padding-y:var(--tblr-spacer-2);--tblr-tooltip-font-size:0.765625rem;--tblr-tooltip-color:var(--tblr-light);--tblr-tooltip-bg:var(--tblr-bg-surface-dark);--tblr-tooltip-border-radius:var(--tblr-border-radius);--tblr-tooltip-opacity:0.9;--tblr-tooltip-arrow-width:0.8rem;--tblr-tooltip-arrow-height:0.4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex:1070;--tblr-popover-max-width:276px;--tblr-popover-font-size:0.765625rem;--tblr-popover-bg:var(--tblr-bg-surface);--tblr-popover-border-width:var(--tblr-border-width);--tblr-popover-border-color:var(--tblr-border-color);--tblr-popover-border-radius:var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius:calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-popover-header-padding-x:1rem;--tblr-popover-header-padding-y:0.5rem;--tblr-popover-header-font-size:0.875rem;--tblr-popover-header-color:inherit;--tblr-popover-header-bg:transparent;--tblr-popover-body-padding-x:1rem;--tblr-popover-body-padding-y:1rem;--tblr-popover-body-color:inherit;--tblr-popover-arrow-width:1rem;--tblr-popover-arrow-height:0.5rem;--tblr-popover-arrow-border:var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--tblr-popover-arrow-width);margin-left:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-left-radius:var(--tblr-popover-inner-border-radius);border-top-right-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-border-width:2px;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem;--tblr-spinner-border-width:1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--tblr-offcanvas-zindex:1045;--tblr-offcanvas-width:400px;--tblr-offcanvas-height:30vh;--tblr-offcanvas-padding-x:1.5rem;--tblr-offcanvas-padding-y:1.5rem;--tblr-offcanvas-color:var(--tblr-body-color);--tblr-offcanvas-bg:var(--tblr-bg-surface);--tblr-offcanvas-border-width:var(--tblr-border-width);--tblr-offcanvas-border-color:var(--tblr-border-color);--tblr-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-offcanvas-transition:transform 0.3s ease-in-out;--tblr-offcanvas-title-line-height:1.4285714286}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#182433}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-right:calc(-.5 * var(--tblr-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--tblr-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0;mask-position:-200% 0}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fcfdfe!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-secondary{color:#fcfdfe!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-success{color:#fcfdfe!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-info{color:#fcfdfe!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-warning{color:#fcfdfe!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-danger{color:#fcfdfe!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-light{color:#182433!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dark{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-muted{color:#fcfdfe!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-blue{color:#fcfdfe!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-azure{color:#fcfdfe!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-indigo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-purple{color:#fcfdfe!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pink{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-red{color:#fcfdfe!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-orange{color:#fcfdfe!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-yellow{color:#fcfdfe!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-lime{color:#fcfdfe!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-green{color:#fcfdfe!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-teal{color:#fcfdfe!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-cyan{color:#fcfdfe!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-facebook{color:#fcfdfe!important;background-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-twitter{color:#fcfdfe!important;background-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-linkedin{color:#fcfdfe!important;background-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-google{color:#fcfdfe!important;background-color:RGBA(var(--tblr-google-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-youtube{color:#fcfdfe!important;background-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vimeo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dribbble{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-github{color:#fcfdfe!important;background-color:RGBA(var(--tblr-github-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-instagram{color:#fcfdfe!important;background-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pinterest{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vk{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vk-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-rss{color:#fcfdfe!important;background-color:RGBA(var(--tblr-rss-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-flickr{color:#fcfdfe!important;background-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-bitbucket{color:#fcfdfe!important;background-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-tabler{color:#fcfdfe!important;background-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-bg-opacity,1))!important}.link-primary{color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--tblr-success-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--tblr-info-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--tblr-light-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(253,253,254,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(19,29,41,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important}.link-muted{color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important}.link-muted:focus,.link-muted:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-blue{color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important}.link-blue:focus,.link-blue:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-azure{color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important}.link-azure:focus,.link-azure:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-indigo{color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-indigo:focus,.link-indigo:hover{color:RGBA(53,79,188,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important}.link-purple{color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important}.link-purple:focus,.link-purple:hover{color:RGBA(139,50,161,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important}.link-pink{color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pink:focus,.link-pink:hover{color:RGBA(171,41,86,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important}.link-red{color:RGBA(var(--tblr-red-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important}.link-red:focus,.link-red:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-orange{color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important}.link-orange:focus,.link-orange:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-yellow{color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important}.link-yellow:focus,.link-yellow:hover{color:RGBA(196,127,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important}.link-lime{color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important}.link-lime:focus,.link-lime:hover{color:RGBA(93,147,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important}.link-green{color:RGBA(var(--tblr-green-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important}.link-green:focus,.link-green:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-teal{color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important}.link-teal:focus,.link-teal:hover{color:RGBA(10,133,96,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important}.link-cyan{color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important}.link-cyan:focus,.link-cyan:hover{color:RGBA(18,130,147,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important}.link-facebook{color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important}.link-facebook:focus,.link-facebook:hover{color:RGBA(19,95,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important}.link-twitter{color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important}.link-twitter:focus,.link-twitter:hover{color:RGBA(23,129,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important}.link-linkedin{color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important}.link-linkedin:focus,.link-linkedin:hover{color:RGBA(8,82,155,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important}.link-google{color:RGBA(var(--tblr-google-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important}.link-google:focus,.link-google:hover{color:RGBA(176,62,52,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important}.link-youtube{color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important}.link-youtube:focus,.link-youtube:hover{color:RGBA(204,0,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important}.link-vimeo{color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vimeo:focus,.link-vimeo:hover{color:RGBA(21,146,187,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important}.link-dribbble{color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dribbble:focus,.link-dribbble:hover{color:RGBA(187,61,110,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important}.link-github{color:RGBA(var(--tblr-github-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important}.link-github:focus,.link-github:hover{color:RGBA(19,18,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important}.link-instagram{color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important}.link-instagram:focus,.link-instagram:hover{color:RGBA(182,51,76,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important}.link-pinterest{color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pinterest:focus,.link-pinterest:hover{color:RGBA(151,6,22,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important}.link-vk{color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vk:focus,.link-vk:hover{color:RGBA(79,105,134,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important}.link-rss{color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important}.link-rss:focus,.link-rss:hover{color:RGBA(204,132,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important}.link-flickr{color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important}.link-flickr:focus,.link-flickr:hover{color:RGBA(0,79,176,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important}.link-bitbucket{color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important}.link-bitbucket:focus,.link-bitbucket:hover{color:RGBA(0,66,163,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important}.link-tabler{color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important}.link-tabler:focus,.link-tabler:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x,0) var(--tblr-focus-ring-y,0) var(--tblr-focus-ring-blur,0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--tblr-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio:100%}.ratio-2x1{--tblr-aspect-ratio:50%}.ratio-1x2{--tblr-aspect-ratio:200%}.ratio-3x1{--tblr-aspect-ratio:33.3333333333%}.ratio-1x3{--tblr-aspect-ratio:300%}.ratio-4x3{--tblr-aspect-ratio:75%}.ratio-3x4{--tblr-aspect-ratio:133.3333333333%}.ratio-16x9{--tblr-aspect-ratio:56.25%}.ratio-9x16{--tblr-aspect-ratio:177.7777777778%}.ratio-21x9{--tblr-aspect-ratio:42.8571428571%}.ratio-9x21{--tblr-aspect-ratio:233.3333333333%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color:rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color:rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color:rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color:rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color:rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color:rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color:rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color:rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color:rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color:rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color:rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color:rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color:rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color:rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color:rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color:rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color:rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color:rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color:rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color:rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-facebook{--tblr-focus-ring-color:rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-twitter{--tblr-focus-ring-color:rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-linkedin{--tblr-focus-ring-color:rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-google{--tblr-focus-ring-color:rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-youtube{--tblr-focus-ring-color:rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vimeo{--tblr-focus-ring-color:rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dribbble{--tblr-focus-ring-color:rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-github{--tblr-focus-ring-color:rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-instagram{--tblr-focus-ring-color:rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pinterest{--tblr-focus-ring-color:rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vk{--tblr-focus-ring-color:rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-rss{--tblr-focus-ring-color:rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-flickr{--tblr-focus-ring-color:rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-bitbucket{--tblr-focus-ring-color:rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-tabler{--tblr-focus-ring-color:rgba(var(--tblr-tabler-rgb), var(--tblr-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-wide{border:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-wide{border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-wide{border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-0{border-left:0!important}.border-primary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-primary-rgb),var(--tblr-border-opacity))!important}.border-secondary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-secondary-rgb),var(--tblr-border-opacity))!important}.border-success{--tblr-border-opacity:1;border-color:rgba(var(--tblr-success-rgb),var(--tblr-border-opacity))!important}.border-info{--tblr-border-opacity:1;border-color:rgba(var(--tblr-info-rgb),var(--tblr-border-opacity))!important}.border-warning{--tblr-border-opacity:1;border-color:rgba(var(--tblr-warning-rgb),var(--tblr-border-opacity))!important}.border-danger{--tblr-border-opacity:1;border-color:rgba(var(--tblr-danger-rgb),var(--tblr-border-opacity))!important}.border-light{--tblr-border-opacity:1;border-color:rgba(var(--tblr-light-rgb),var(--tblr-border-opacity))!important}.border-dark{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dark-rgb),var(--tblr-border-opacity))!important}.border-muted{--tblr-border-opacity:1;border-color:rgba(var(--tblr-muted-rgb),var(--tblr-border-opacity))!important}.border-blue{--tblr-border-opacity:1;border-color:rgba(var(--tblr-blue-rgb),var(--tblr-border-opacity))!important}.border-azure{--tblr-border-opacity:1;border-color:rgba(var(--tblr-azure-rgb),var(--tblr-border-opacity))!important}.border-indigo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-indigo-rgb),var(--tblr-border-opacity))!important}.border-purple{--tblr-border-opacity:1;border-color:rgba(var(--tblr-purple-rgb),var(--tblr-border-opacity))!important}.border-pink{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pink-rgb),var(--tblr-border-opacity))!important}.border-red{--tblr-border-opacity:1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-orange{--tblr-border-opacity:1;border-color:rgba(var(--tblr-orange-rgb),var(--tblr-border-opacity))!important}.border-yellow{--tblr-border-opacity:1;border-color:rgba(var(--tblr-yellow-rgb),var(--tblr-border-opacity))!important}.border-lime{--tblr-border-opacity:1;border-color:rgba(var(--tblr-lime-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity:1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-teal{--tblr-border-opacity:1;border-color:rgba(var(--tblr-teal-rgb),var(--tblr-border-opacity))!important}.border-cyan{--tblr-border-opacity:1;border-color:rgba(var(--tblr-cyan-rgb),var(--tblr-border-opacity))!important}.border-facebook{--tblr-border-opacity:1;border-color:rgba(var(--tblr-facebook-rgb),var(--tblr-border-opacity))!important}.border-twitter{--tblr-border-opacity:1;border-color:rgba(var(--tblr-twitter-rgb),var(--tblr-border-opacity))!important}.border-linkedin{--tblr-border-opacity:1;border-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-border-opacity))!important}.border-google{--tblr-border-opacity:1;border-color:rgba(var(--tblr-google-rgb),var(--tblr-border-opacity))!important}.border-youtube{--tblr-border-opacity:1;border-color:rgba(var(--tblr-youtube-rgb),var(--tblr-border-opacity))!important}.border-vimeo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-border-opacity))!important}.border-dribbble{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-border-opacity))!important}.border-github{--tblr-border-opacity:1;border-color:rgba(var(--tblr-github-rgb),var(--tblr-border-opacity))!important}.border-instagram{--tblr-border-opacity:1;border-color:rgba(var(--tblr-instagram-rgb),var(--tblr-border-opacity))!important}.border-pinterest{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-border-opacity))!important}.border-vk{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vk-rgb),var(--tblr-border-opacity))!important}.border-rss{--tblr-border-opacity:1;border-color:rgba(var(--tblr-rss-rgb),var(--tblr-border-opacity))!important}.border-flickr{--tblr-border-opacity:1;border-color:rgba(var(--tblr-flickr-rgb),var(--tblr-border-opacity))!important}.border-bitbucket{--tblr-border-opacity:1;border-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-border-opacity))!important}.border-tabler{--tblr-border-opacity:1;border-color:rgba(var(--tblr-tabler-rgb),var(--tblr-border-opacity))!important}.border-black{--tblr-border-opacity:1;border-color:rgba(var(--tblr-black-rgb),var(--tblr-border-opacity))!important}.border-white{--tblr-border-opacity:1;border-color:rgba(var(--tblr-white-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--tblr-border-opacity:0.1}.border-opacity-25{--tblr-border-opacity:0.25}.border-opacity-50{--tblr-border-opacity:0.5}.border-opacity-75{--tblr-border-opacity:0.75}.border-opacity-100{--tblr-border-opacity:1}.w-0{width:0!important}.w-1{width:.25rem!important}.w-2{width:.5rem!important}.w-3{width:1rem!important}.w-4{width:1.5rem!important}.w-5{width:2rem!important}.w-6{width:3rem!important}.w-7{width:5rem!important}.w-8{width:8rem!important}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-0{height:0!important}.h-1{height:.25rem!important}.h-2{height:.5rem!important}.h-3{height:1rem!important}.h-4{height:1.5rem!important}.h-5{height:2rem!important}.h-6{height:3rem!important}.h-7{height:5rem!important}.h-8{height:8rem!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:3rem!important}.m-7{margin:5rem!important}.m-8{margin:8rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:2rem!important;margin-left:2rem!important}.mx-6{margin-right:3rem!important;margin-left:3rem!important}.mx-7{margin-right:5rem!important;margin-left:5rem!important}.mx-8{margin-right:8rem!important;margin-left:8rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:3rem!important}.mt-7{margin-top:5rem!important}.mt-8{margin-top:8rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:2rem!important}.me-6{margin-right:3rem!important}.me-7{margin-right:5rem!important}.me-8{margin-right:8rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:3rem!important}.mb-7{margin-bottom:5rem!important}.mb-8{margin-bottom:8rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:2rem!important}.ms-6{margin-left:3rem!important}.ms-7{margin-left:5rem!important}.ms-8{margin-left:8rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:3rem!important}.p-7{padding:5rem!important}.p-8{padding:8rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:2rem!important;padding-left:2rem!important}.px-6{padding-right:3rem!important;padding-left:3rem!important}.px-7{padding-right:5rem!important;padding-left:5rem!important}.px-8{padding-right:8rem!important;padding-left:8rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:3rem!important}.pt-7{padding-top:5rem!important}.pt-8{padding-top:8rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:2rem!important}.pe-6{padding-right:3rem!important}.pe-7{padding-right:5rem!important}.pe-8{padding-right:8rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:3rem!important}.pb-7{padding-bottom:5rem!important}.pb-8{padding-bottom:8rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:2rem!important}.ps-6{padding-left:3rem!important}.ps-7{padding-left:5rem!important}.ps-8{padding-left:8rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:3rem!important}.gap-7{gap:5rem!important}.gap-8{gap:8rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:3rem!important}.row-gap-7{row-gap:5rem!important}.row-gap-8{row-gap:8rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity:1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity:1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--tblr-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity:1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity:1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity:1;color:inherit!important}.text-opacity-25{--tblr-text-opacity:0.25}.text-opacity-50{--tblr-text-opacity:0.5}.text-opacity-75{--tblr-text-opacity:0.75}.text-opacity-100{--tblr-text-opacity:1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10{--tblr-link-opacity:0.1}.link-opacity-10-hover:hover{--tblr-link-opacity:0.1}.link-opacity-25{--tblr-link-opacity:0.25}.link-opacity-25-hover:hover{--tblr-link-opacity:0.25}.link-opacity-50{--tblr-link-opacity:0.5}.link-opacity-50-hover:hover{--tblr-link-opacity:0.5}.link-opacity-75{--tblr-link-opacity:0.75}.link-opacity-75-hover:hover{--tblr-link-opacity:0.75}.link-opacity-100{--tblr-link-opacity:1}.link-opacity-100-hover:hover{--tblr-link-opacity:1}.link-offset-1{text-underline-offset:.125em!important}.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2{text-underline-offset:.25em!important}.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3{text-underline-offset:.375em!important}.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-facebook{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-twitter{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-linkedin{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-google{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-youtube{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vimeo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dribbble{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-github{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-instagram{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pinterest{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vk{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-rss{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-flickr{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-bitbucket{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-tabler{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-underline-opacity-0{--tblr-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity:0}.link-underline-opacity-10{--tblr-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity:0.1}.link-underline-opacity-25{--tblr-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity:0.25}.link-underline-opacity-50{--tblr-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity:0.5}.link-underline-opacity-75{--tblr-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity:0.75}.link-underline-opacity-100{--tblr-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity:1}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity:0.1}.bg-opacity-25{--tblr-bg-opacity:0.25}.bg-opacity-50{--tblr-bg-opacity:0.5}.bg-opacity-75{--tblr-bg-opacity:0.75}.bg-opacity-100{--tblr-bg-opacity:1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}.object-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-scale-down{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-none{-o-object-fit:none!important;object-fit:none!important}.tracking-tight{letter-spacing:-.05em!important}.tracking-normal{letter-spacing:0!important}.tracking-wide{letter-spacing:.05em!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:-webkit-grab!important;cursor:grab!important}.cursor-grabbing{cursor:-webkit-grabbing!important;cursor:grabbing!important}.border-x{border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-wide{border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-0{border-left:0!important;border-right:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{-moz-columns:2!important;columns:2!important}.columns-3{-moz-columns:3!important;columns:3!important}.columns-4{-moz-columns:4!important;columns:4!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:3rem!important}.m-sm-7{margin:5rem!important}.m-sm-8{margin:8rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:2rem!important;margin-left:2rem!important}.mx-sm-6{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-7{margin-right:5rem!important;margin-left:5rem!important}.mx-sm-8{margin-right:8rem!important;margin-left:8rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-sm-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:3rem!important}.mt-sm-7{margin-top:5rem!important}.mt-sm-8{margin-top:8rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:2rem!important}.me-sm-6{margin-right:3rem!important}.me-sm-7{margin-right:5rem!important}.me-sm-8{margin-right:8rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:3rem!important}.mb-sm-7{margin-bottom:5rem!important}.mb-sm-8{margin-bottom:8rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:2rem!important}.ms-sm-6{margin-left:3rem!important}.ms-sm-7{margin-left:5rem!important}.ms-sm-8{margin-left:8rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:3rem!important}.p-sm-7{padding:5rem!important}.p-sm-8{padding:8rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:2rem!important;padding-left:2rem!important}.px-sm-6{padding-right:3rem!important;padding-left:3rem!important}.px-sm-7{padding-right:5rem!important;padding-left:5rem!important}.px-sm-8{padding-right:8rem!important;padding-left:8rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-sm-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-sm-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:3rem!important}.pt-sm-7{padding-top:5rem!important}.pt-sm-8{padding-top:8rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:2rem!important}.pe-sm-6{padding-right:3rem!important}.pe-sm-7{padding-right:5rem!important}.pe-sm-8{padding-right:8rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:3rem!important}.pb-sm-7{padding-bottom:5rem!important}.pb-sm-8{padding-bottom:8rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:2rem!important}.ps-sm-6{padding-left:3rem!important}.ps-sm-7{padding-left:5rem!important}.ps-sm-8{padding-left:8rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:3rem!important}.gap-sm-7{gap:5rem!important}.gap-sm-8{gap:8rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:3rem!important}.row-gap-sm-7{row-gap:5rem!important}.row-gap-sm-8{row-gap:8rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-sm-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-sm-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-sm-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}.columns-sm-2{-moz-columns:2!important;columns:2!important}.columns-sm-3{-moz-columns:3!important;columns:3!important}.columns-sm-4{-moz-columns:4!important;columns:4!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:3rem!important}.m-md-7{margin:5rem!important}.m-md-8{margin:8rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:2rem!important;margin-left:2rem!important}.mx-md-6{margin-right:3rem!important;margin-left:3rem!important}.mx-md-7{margin-right:5rem!important;margin-left:5rem!important}.mx-md-8{margin-right:8rem!important;margin-left:8rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-md-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:3rem!important}.mt-md-7{margin-top:5rem!important}.mt-md-8{margin-top:8rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:2rem!important}.me-md-6{margin-right:3rem!important}.me-md-7{margin-right:5rem!important}.me-md-8{margin-right:8rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:3rem!important}.mb-md-7{margin-bottom:5rem!important}.mb-md-8{margin-bottom:8rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:2rem!important}.ms-md-6{margin-left:3rem!important}.ms-md-7{margin-left:5rem!important}.ms-md-8{margin-left:8rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:3rem!important}.p-md-7{padding:5rem!important}.p-md-8{padding:8rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:2rem!important;padding-left:2rem!important}.px-md-6{padding-right:3rem!important;padding-left:3rem!important}.px-md-7{padding-right:5rem!important;padding-left:5rem!important}.px-md-8{padding-right:8rem!important;padding-left:8rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-md-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-md-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:3rem!important}.pt-md-7{padding-top:5rem!important}.pt-md-8{padding-top:8rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:2rem!important}.pe-md-6{padding-right:3rem!important}.pe-md-7{padding-right:5rem!important}.pe-md-8{padding-right:8rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:3rem!important}.pb-md-7{padding-bottom:5rem!important}.pb-md-8{padding-bottom:8rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:2rem!important}.ps-md-6{padding-left:3rem!important}.ps-md-7{padding-left:5rem!important}.ps-md-8{padding-left:8rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:3rem!important}.gap-md-7{gap:5rem!important}.gap-md-8{gap:8rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:3rem!important}.row-gap-md-7{row-gap:5rem!important}.row-gap-md-8{row-gap:8rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-md-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-md-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-md-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}.columns-md-2{-moz-columns:2!important;columns:2!important}.columns-md-3{-moz-columns:3!important;columns:3!important}.columns-md-4{-moz-columns:4!important;columns:4!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:3rem!important}.m-lg-7{margin:5rem!important}.m-lg-8{margin:8rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:2rem!important;margin-left:2rem!important}.mx-lg-6{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-7{margin-right:5rem!important;margin-left:5rem!important}.mx-lg-8{margin-right:8rem!important;margin-left:8rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-lg-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:3rem!important}.mt-lg-7{margin-top:5rem!important}.mt-lg-8{margin-top:8rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:2rem!important}.me-lg-6{margin-right:3rem!important}.me-lg-7{margin-right:5rem!important}.me-lg-8{margin-right:8rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:3rem!important}.mb-lg-7{margin-bottom:5rem!important}.mb-lg-8{margin-bottom:8rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:2rem!important}.ms-lg-6{margin-left:3rem!important}.ms-lg-7{margin-left:5rem!important}.ms-lg-8{margin-left:8rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:3rem!important}.p-lg-7{padding:5rem!important}.p-lg-8{padding:8rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:2rem!important;padding-left:2rem!important}.px-lg-6{padding-right:3rem!important;padding-left:3rem!important}.px-lg-7{padding-right:5rem!important;padding-left:5rem!important}.px-lg-8{padding-right:8rem!important;padding-left:8rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-lg-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-lg-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:3rem!important}.pt-lg-7{padding-top:5rem!important}.pt-lg-8{padding-top:8rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:2rem!important}.pe-lg-6{padding-right:3rem!important}.pe-lg-7{padding-right:5rem!important}.pe-lg-8{padding-right:8rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:3rem!important}.pb-lg-7{padding-bottom:5rem!important}.pb-lg-8{padding-bottom:8rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:2rem!important}.ps-lg-6{padding-left:3rem!important}.ps-lg-7{padding-left:5rem!important}.ps-lg-8{padding-left:8rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:3rem!important}.gap-lg-7{gap:5rem!important}.gap-lg-8{gap:8rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:3rem!important}.row-gap-lg-7{row-gap:5rem!important}.row-gap-lg-8{row-gap:8rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-lg-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-lg-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-lg-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}.columns-lg-2{-moz-columns:2!important;columns:2!important}.columns-lg-3{-moz-columns:3!important;columns:3!important}.columns-lg-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:3rem!important}.m-xl-7{margin:5rem!important}.m-xl-8{margin:8rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xl-6{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-7{margin-right:5rem!important;margin-left:5rem!important}.mx-xl-8{margin-right:8rem!important;margin-left:8rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:3rem!important}.mt-xl-7{margin-top:5rem!important}.mt-xl-8{margin-top:8rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:2rem!important}.me-xl-6{margin-right:3rem!important}.me-xl-7{margin-right:5rem!important}.me-xl-8{margin-right:8rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:3rem!important}.mb-xl-7{margin-bottom:5rem!important}.mb-xl-8{margin-bottom:8rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:2rem!important}.ms-xl-6{margin-left:3rem!important}.ms-xl-7{margin-left:5rem!important}.ms-xl-8{margin-left:8rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:3rem!important}.p-xl-7{padding:5rem!important}.p-xl-8{padding:8rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xl-6{padding-right:3rem!important;padding-left:3rem!important}.px-xl-7{padding-right:5rem!important;padding-left:5rem!important}.px-xl-8{padding-right:8rem!important;padding-left:8rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:3rem!important}.pt-xl-7{padding-top:5rem!important}.pt-xl-8{padding-top:8rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:2rem!important}.pe-xl-6{padding-right:3rem!important}.pe-xl-7{padding-right:5rem!important}.pe-xl-8{padding-right:8rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:3rem!important}.pb-xl-7{padding-bottom:5rem!important}.pb-xl-8{padding-bottom:8rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:2rem!important}.ps-xl-6{padding-left:3rem!important}.ps-xl-7{padding-left:5rem!important}.ps-xl-8{padding-left:8rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:3rem!important}.gap-xl-7{gap:5rem!important}.gap-xl-8{gap:8rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:3rem!important}.row-gap-xl-7{row-gap:5rem!important}.row-gap-xl-8{row-gap:8rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.columns-xl-2{-moz-columns:2!important;columns:2!important}.columns-xl-3{-moz-columns:3!important;columns:3!important}.columns-xl-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:3rem!important}.m-xxl-7{margin:5rem!important}.m-xxl-8{margin:8rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xxl-6{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-7{margin-right:5rem!important;margin-left:5rem!important}.mx-xxl-8{margin-right:8rem!important;margin-left:8rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xxl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:3rem!important}.mt-xxl-7{margin-top:5rem!important}.mt-xxl-8{margin-top:8rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:2rem!important}.me-xxl-6{margin-right:3rem!important}.me-xxl-7{margin-right:5rem!important}.me-xxl-8{margin-right:8rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:3rem!important}.mb-xxl-7{margin-bottom:5rem!important}.mb-xxl-8{margin-bottom:8rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:2rem!important}.ms-xxl-6{margin-left:3rem!important}.ms-xxl-7{margin-left:5rem!important}.ms-xxl-8{margin-left:8rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:3rem!important}.p-xxl-7{padding:5rem!important}.p-xxl-8{padding:8rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xxl-6{padding-right:3rem!important;padding-left:3rem!important}.px-xxl-7{padding-right:5rem!important;padding-left:5rem!important}.px-xxl-8{padding-right:8rem!important;padding-left:8rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xxl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xxl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:3rem!important}.pt-xxl-7{padding-top:5rem!important}.pt-xxl-8{padding-top:8rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:2rem!important}.pe-xxl-6{padding-right:3rem!important}.pe-xxl-7{padding-right:5rem!important}.pe-xxl-8{padding-right:8rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:3rem!important}.pb-xxl-7{padding-bottom:5rem!important}.pb-xxl-8{padding-bottom:8rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:2rem!important}.ps-xxl-6{padding-left:3rem!important}.ps-xxl-7{padding-left:5rem!important}.ps-xxl-8{padding-left:8rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:3rem!important}.gap-xxl-7{gap:5rem!important}.gap-xxl-8{gap:8rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:3rem!important}.row-gap-xxl-7{row-gap:5rem!important}.row-gap-xxl-8{row-gap:8rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xxl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xxl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xxl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{-moz-columns:2!important;columns:2!important}.columns-xxl-3{-moz-columns:3!important;columns:3!important}.columns-xxl-4{-moz-columns:4!important;columns:4!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:host,:root{font-size:16px;height:100%}:host,:root,[data-bs-theme=light]{--tblr-primary:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-primary-fg:var(--tblr-light);--tblr-primary-darken:#004c95;--tblr-primary-lt:#e6eef6;--tblr-primary-lt-rgb:230,238,246;--tblr-secondary:#667382;--tblr-secondary-rgb:102,115,130;--tblr-secondary-fg:var(--tblr-light);--tblr-secondary-darken:#5c6875;--tblr-secondary-lt:#f0f1f3;--tblr-secondary-lt-rgb:240,241,243;--tblr-success:#2fb344;--tblr-success-rgb:47,179,68;--tblr-success-fg:var(--tblr-light);--tblr-success-darken:#2aa13d;--tblr-success-lt:#eaf7ec;--tblr-success-lt-rgb:234,247,236;--tblr-info:#4299e1;--tblr-info-rgb:66,153,225;--tblr-info-fg:var(--tblr-light);--tblr-info-darken:#3b8acb;--tblr-info-lt:#ecf5fc;--tblr-info-lt-rgb:236,245,252;--tblr-warning:#f76707;--tblr-warning-rgb:247,103,7;--tblr-warning-fg:var(--tblr-light);--tblr-warning-darken:#de5d06;--tblr-warning-lt:#fef0e6;--tblr-warning-lt-rgb:254,240,230;--tblr-danger:#d63939;--tblr-danger-rgb:214,57,57;--tblr-danger-fg:var(--tblr-light);--tblr-danger-darken:#c13333;--tblr-danger-lt:#fbebeb;--tblr-danger-lt-rgb:251,235,235;--tblr-light:#fcfdfe;--tblr-light-rgb:252,253,254;--tblr-light-fg:var(--tblr-dark);--tblr-light-darken:#e3e4e5;--tblr-light-lt:white;--tblr-light-lt-rgb:255,255,255;--tblr-dark:#182433;--tblr-dark-rgb:24,36,51;--tblr-dark-fg:var(--tblr-light);--tblr-dark-darken:#16202e;--tblr-dark-lt:#e8e9eb;--tblr-dark-lt-rgb:232,233,235;--tblr-muted:#667382;--tblr-muted-rgb:102,115,130;--tblr-muted-fg:var(--tblr-light);--tblr-muted-darken:#5c6875;--tblr-muted-lt:#f0f1f3;--tblr-muted-lt-rgb:240,241,243;--tblr-blue:#0054a6;--tblr-blue-rgb:0,84,166;--tblr-blue-fg:var(--tblr-light);--tblr-blue-darken:#004c95;--tblr-blue-lt:#e6eef6;--tblr-blue-lt-rgb:230,238,246;--tblr-azure:#4299e1;--tblr-azure-rgb:66,153,225;--tblr-azure-fg:var(--tblr-light);--tblr-azure-darken:#3b8acb;--tblr-azure-lt:#ecf5fc;--tblr-azure-lt-rgb:236,245,252;--tblr-indigo:#4263eb;--tblr-indigo-rgb:66,99,235;--tblr-indigo-fg:var(--tblr-light);--tblr-indigo-darken:#3b59d4;--tblr-indigo-lt:#eceffd;--tblr-indigo-lt-rgb:236,239,253;--tblr-purple:#ae3ec9;--tblr-purple-rgb:174,62,201;--tblr-purple-fg:var(--tblr-light);--tblr-purple-darken:#9d38b5;--tblr-purple-lt:#f7ecfa;--tblr-purple-lt-rgb:247,236,250;--tblr-pink:#d6336c;--tblr-pink-rgb:214,51,108;--tblr-pink-fg:var(--tblr-light);--tblr-pink-darken:#c12e61;--tblr-pink-lt:#fbebf0;--tblr-pink-lt-rgb:251,235,240;--tblr-red:#d63939;--tblr-red-rgb:214,57,57;--tblr-red-fg:var(--tblr-light);--tblr-red-darken:#c13333;--tblr-red-lt:#fbebeb;--tblr-red-lt-rgb:251,235,235;--tblr-orange:#f76707;--tblr-orange-rgb:247,103,7;--tblr-orange-fg:var(--tblr-light);--tblr-orange-darken:#de5d06;--tblr-orange-lt:#fef0e6;--tblr-orange-lt-rgb:254,240,230;--tblr-yellow:#f59f00;--tblr-yellow-rgb:245,159,0;--tblr-yellow-fg:var(--tblr-light);--tblr-yellow-darken:#dd8f00;--tblr-yellow-lt:#fef5e6;--tblr-yellow-lt-rgb:254,245,230;--tblr-lime:#74b816;--tblr-lime-rgb:116,184,22;--tblr-lime-fg:var(--tblr-light);--tblr-lime-darken:#68a614;--tblr-lime-lt:#f1f8e8;--tblr-lime-lt-rgb:241,248,232;--tblr-green:#2fb344;--tblr-green-rgb:47,179,68;--tblr-green-fg:var(--tblr-light);--tblr-green-darken:#2aa13d;--tblr-green-lt:#eaf7ec;--tblr-green-lt-rgb:234,247,236;--tblr-teal:#0ca678;--tblr-teal-rgb:12,166,120;--tblr-teal-fg:var(--tblr-light);--tblr-teal-darken:#0b956c;--tblr-teal-lt:#e7f6f2;--tblr-teal-lt-rgb:231,246,242;--tblr-cyan:#17a2b8;--tblr-cyan-rgb:23,162,184;--tblr-cyan-fg:var(--tblr-light);--tblr-cyan-darken:#1592a6;--tblr-cyan-lt:#e8f6f8;--tblr-cyan-lt-rgb:232,246,248;--tblr-facebook:#1877f2;--tblr-facebook-rgb:24,119,242;--tblr-facebook-fg:var(--tblr-light);--tblr-facebook-darken:#166bda;--tblr-facebook-lt:#e8f1fe;--tblr-facebook-lt-rgb:232,241,254;--tblr-twitter:#1da1f2;--tblr-twitter-rgb:29,161,242;--tblr-twitter-fg:var(--tblr-light);--tblr-twitter-darken:#1a91da;--tblr-twitter-lt:#e8f6fe;--tblr-twitter-lt-rgb:232,246,254;--tblr-linkedin:#0a66c2;--tblr-linkedin-rgb:10,102,194;--tblr-linkedin-fg:var(--tblr-light);--tblr-linkedin-darken:#095caf;--tblr-linkedin-lt:#e7f0f9;--tblr-linkedin-lt-rgb:231,240,249;--tblr-google:#dc4e41;--tblr-google-rgb:220,78,65;--tblr-google-fg:var(--tblr-light);--tblr-google-darken:#c6463b;--tblr-google-lt:#fcedec;--tblr-google-lt-rgb:252,237,236;--tblr-youtube:#ff0000;--tblr-youtube-rgb:255,0,0;--tblr-youtube-fg:var(--tblr-light);--tblr-youtube-darken:#e60000;--tblr-youtube-lt:#ffe6e6;--tblr-youtube-lt-rgb:255,230,230;--tblr-vimeo:#1ab7ea;--tblr-vimeo-rgb:26,183,234;--tblr-vimeo-fg:var(--tblr-light);--tblr-vimeo-darken:#17a5d3;--tblr-vimeo-lt:#e8f8fd;--tblr-vimeo-lt-rgb:232,248,253;--tblr-dribbble:#ea4c89;--tblr-dribbble-rgb:234,76,137;--tblr-dribbble-fg:var(--tblr-light);--tblr-dribbble-darken:#d3447b;--tblr-dribbble-lt:#fdedf3;--tblr-dribbble-lt-rgb:253,237,243;--tblr-github:#181717;--tblr-github-rgb:24,23,23;--tblr-github-fg:var(--tblr-light);--tblr-github-darken:#161515;--tblr-github-lt:#e8e8e8;--tblr-github-lt-rgb:232,232,232;--tblr-instagram:#e4405f;--tblr-instagram-rgb:228,64,95;--tblr-instagram-fg:var(--tblr-light);--tblr-instagram-darken:#cd3a56;--tblr-instagram-lt:#fcecef;--tblr-instagram-lt-rgb:252,236,239;--tblr-pinterest:#bd081c;--tblr-pinterest-rgb:189,8,28;--tblr-pinterest-fg:var(--tblr-light);--tblr-pinterest-darken:#aa0719;--tblr-pinterest-lt:#f8e6e8;--tblr-pinterest-lt-rgb:248,230,232;--tblr-vk:#6383a8;--tblr-vk-rgb:99,131,168;--tblr-vk-fg:var(--tblr-light);--tblr-vk-darken:#597697;--tblr-vk-lt:#eff3f6;--tblr-vk-lt-rgb:239,243,246;--tblr-rss:#ffa500;--tblr-rss-rgb:255,165,0;--tblr-rss-fg:var(--tblr-light);--tblr-rss-darken:#e69500;--tblr-rss-lt:#fff6e6;--tblr-rss-lt-rgb:255,246,230;--tblr-flickr:#0063dc;--tblr-flickr-rgb:0,99,220;--tblr-flickr-fg:var(--tblr-light);--tblr-flickr-darken:#0059c6;--tblr-flickr-lt:#e6effc;--tblr-flickr-lt-rgb:230,239,252;--tblr-bitbucket:#0052cc;--tblr-bitbucket-rgb:0,82,204;--tblr-bitbucket-fg:var(--tblr-light);--tblr-bitbucket-darken:#004ab8;--tblr-bitbucket-lt:#e6eefa;--tblr-bitbucket-lt-rgb:230,238,250;--tblr-tabler:#0054a6;--tblr-tabler-rgb:0,84,166;--tblr-tabler-fg:var(--tblr-light);--tblr-tabler-darken:#004c95;--tblr-tabler-lt:#e6eef6;--tblr-tabler-lt-rgb:230,238,246;--tblr-gray-50:#fcfdfe;--tblr-gray-50-rgb:252,253,254;--tblr-gray-50-fg:var(--tblr-dark);--tblr-gray-50-darken:#e3e4e5;--tblr-gray-50-lt:white;--tblr-gray-50-lt-rgb:255,255,255;--tblr-gray-100:#f6f8fb;--tblr-gray-100-rgb:246,248,251;--tblr-gray-100-fg:var(--tblr-dark);--tblr-gray-100-darken:#dddfe2;--tblr-gray-100-lt:#fefeff;--tblr-gray-100-lt-rgb:254,254,255;--tblr-gray-200:#eef1f4;--tblr-gray-200-rgb:238,241,244;--tblr-gray-200-fg:var(--tblr-dark);--tblr-gray-200-darken:#d6d9dc;--tblr-gray-200-lt:#fdfefe;--tblr-gray-200-lt-rgb:253,254,254;--tblr-gray-300:#dadfe5;--tblr-gray-300-rgb:218,223,229;--tblr-gray-300-fg:var(--tblr-dark);--tblr-gray-300-darken:#c4c9ce;--tblr-gray-300-lt:#fbfcfc;--tblr-gray-300-lt-rgb:251,252,252;--tblr-gray-400:#bbc3cd;--tblr-gray-400-rgb:187,195,205;--tblr-gray-400-fg:var(--tblr-light);--tblr-gray-400-darken:#a8b0b9;--tblr-gray-400-lt:#f8f9fa;--tblr-gray-400-lt-rgb:248,249,250;--tblr-gray-500:#929dab;--tblr-gray-500-rgb:146,157,171;--tblr-gray-500-fg:var(--tblr-light);--tblr-gray-500-darken:#838d9a;--tblr-gray-500-lt:#f4f5f7;--tblr-gray-500-lt-rgb:244,245,247;--tblr-gray-600:#667382;--tblr-gray-600-rgb:102,115,130;--tblr-gray-600-fg:var(--tblr-light);--tblr-gray-600-darken:#5c6875;--tblr-gray-600-lt:#f0f1f3;--tblr-gray-600-lt-rgb:240,241,243;--tblr-gray-700:#3a4859;--tblr-gray-700-rgb:58,72,89;--tblr-gray-700-fg:var(--tblr-light);--tblr-gray-700-darken:#344150;--tblr-gray-700-lt:#ebedee;--tblr-gray-700-lt-rgb:235,237,238;--tblr-gray-800:#182433;--tblr-gray-800-rgb:24,36,51;--tblr-gray-800-fg:var(--tblr-light);--tblr-gray-800-darken:#16202e;--tblr-gray-800-lt:#e8e9eb;--tblr-gray-800-lt-rgb:232,233,235;--tblr-gray-900:#040a11;--tblr-gray-900-rgb:4,10,17;--tblr-gray-900-fg:var(--tblr-light);--tblr-gray-900-darken:#04090f;--tblr-gray-900-lt:#e6e7e7;--tblr-gray-900-lt-rgb:230,231,231;--tblr-spacer-0:0;--tblr-spacer-1:0.25rem;--tblr-spacer-2:0.5rem;--tblr-spacer-3:1rem;--tblr-spacer-4:1.5rem;--tblr-spacer-5:2rem;--tblr-spacer-6:3rem;--tblr-spacer-7:5rem;--tblr-spacer-8:8rem;--tblr-spacer:1rem;--tblr-bg-surface:var(--tblr-white);--tblr-bg-surface-secondary:var(--tblr-gray-100);--tblr-bg-surface-tertiary:var(--tblr-gray-50);--tblr-bg-surface-dark:var(--tblr-dark);--tblr-bg-forms:var(--tblr-bg-surface);--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-dark-color:#bbc3cd;--tblr-border-dark-color-translucent:rgba(4, 32, 69, 0.27);--tblr-border-active-color:#b6bcc3;--tblr-icon-color:var(--tblr-gray-500);--tblr-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-disabled-bg:var(--tblr-bg-surface-secondary);--tblr-disabled-color:var(--tblr-gray-300);--tblr-code-color:var(--tblr-gray-600);--tblr-code-bg:var(--tblr-bg-surface-secondary);--tblr-dark-mode-border-color:#1f2e41;--tblr-dark-mode-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-dark-mode-border-color-active:#2c415d;--tblr-dark-mode-border-dark-color:#1f2e41;--tblr-page-padding:var(--tblr-spacer-3);--tblr-page-padding-y:var(--tblr-spacer-4);--tblr-font-weight-light:300;--tblr-font-weight-normal:400;--tblr-font-weight-medium:500;--tblr-font-weight-bold:600;--tblr-font-weight-headings:var(--tblr-font-weight-bold);--tblr-font-size-h1:1.5rem;--tblr-font-size-h2:1.25rem;--tblr-font-size-h3:1rem;--tblr-font-size-h4:0.875rem;--tblr-font-size-h5:0.75rem;--tblr-font-size-h6:0.625rem;--tblr-line-height-h1:2rem;--tblr-line-height-h2:1.75rem;--tblr-line-height-h3:1.5rem;--tblr-line-height-h4:1.25rem;--tblr-line-height-h5:1rem;--tblr-line-height-h6:1rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-border:inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-box-shadow-transparent:0 0 0 0 transparent;--tblr-box-shadow-input:0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06);--tblr-box-shadow-card:0 0 4px rgba(var(--tblr-body-color-rgb), 0.04);--tblr-box-shadow-card-hover:rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0;--tblr-box-shadow-dropdown:0 16px 24px 2px rgba(0, 0, 0, 0.07),0 6px 30px 5px rgba(0, 0, 0, 0.06),0 8px 10px -5px rgba(0, 0, 0, 0.1)}@media (max-width:991.98px){:host,:root,[data-bs-theme=light]{--tblr-page-padding:var(--tblr-spacer-2)}}@keyframes pulse{from{opacity:1;transform:scale3d(.8,.8,.8)}50%{transform:scale3d(1,1,1);opacity:1}to{opacity:1;transform:scale3d(.8,.8,.8)}}@keyframes tada{0%{transform:scale3d(1,1,1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}50%{transform:scale3d(1,1,1)}}@keyframes rotate-360{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{from{opacity:0}50%{opacity:1}to{opacity:0}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0;position:relative;min-height:100%;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:0 0}}*{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){::-webkit-scrollbar{-webkit-transition:none;transition:none}}::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}::-webkit-scrollbar-track{background:0 0}:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}::-webkit-scrollbar-corner{background:0 0}.layout-fluid .container,.layout-fluid [class*=" container-"],.layout-fluid [class^=container-]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius:0;--tblr-theme-boxed-width:1320px}@media (min-width:768px){.layout-boxed{background:#182433 linear-gradient(to right,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius:4px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media (min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-left-radius:var(--tblr-theme-boxed-border-radius);border-top-right-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg:var(--tblr-bg-surface);--tblr-navbar-border-width:var(--tblr-border-width);--tblr-navbar-active-border-color:var(--tblr-primary);--tblr-navbar-active-bg:rgba(0, 0, 0, 0.06);--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-border-color:var(--tblr-border-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2rem;min-height:2rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;right:.375rem;transform:translate(50%,-50%)}.navbar-nav{margin:0;padding:0}@media (max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s;position:relative}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon:after,.navbar-toggler-icon:before{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;left:0;transition:inherit}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon:after,.navbar-toggler-icon:before{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media (prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(-90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color:transparent!important;background:0 0!important}.navbar-nav{align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media (min-width:576px){.navbar-vertical.navbar-expand-sm{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:576px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media (min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-left:15rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-vertical.navbar-expand-md{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media (min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-left:15rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:992px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-left:15rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1200px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-left:15rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1400px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-left:15rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}@media (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-left:15rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;left:0;right:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center .container{margin-top:auto;margin-bottom:auto}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y)}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media (min-width:768px){.page-cover{min-height:12rem}}@media (min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h4);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-right:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur:20px;--tblr-page-cover-padding:1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur,0));left:calc(-2 * var(--tblr-page-cover-blur,0));right:calc(-2 * var(--tblr-page-cover-blur,0));bottom:calc(-2 * var(--tblr-page-cover-blur,0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:#fff;padding:2rem 0;color:var(--tblr-secondary);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}body.theme-dark .hide-theme-dark,body[data-bs-theme=dark] .hide-theme-dark{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-muted:#3a4859;--tblr-body-bg:#151f2c;--tblr-body-bg-rgb:21,31,44;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-bg-forms:#151f2c;--tblr-bg-surface:#182433;--tblr-bg-surface-dark:#151f2c;--tblr-bg-surface-secondary:#1b293a;--tblr-bg-surface-tertiary:#151f2c;--tblr-link-color:#0069cf;--tblr-link-hover-color:#0054a6;--tblr-active-bg:#1b293a;--tblr-disabled-color:var(--tblr-gray-700);--tblr-border-color:var(--tblr-dark-mode-border-color);--tblr-border-color-translucent:var( + --tblr-dark-mode-border-color-translucent + );--tblr-border-dark-color:var(--tblr-dark-mode-border-dark-color);--tblr-border-color-active:var( + --tblr-dark-mode-border-color-active + );--tblr-btn-color:#151f2c;--tblr-code-color:var(--tblr-body-color);--tblr-code-bg:#1f2e41;--tblr-primary-lt:#16293f;--tblr-primary-lt-rgb:22,41,63;--tblr-secondary-lt:#202c3b;--tblr-secondary-lt-rgb:32,44,59;--tblr-success-lt:#1a3235;--tblr-success-lt-rgb:26,50,53;--tblr-info-lt:#1c3044;--tblr-info-lt-rgb:28,48,68;--tblr-warning-lt:#2e2b2f;--tblr-warning-lt-rgb:46,43,47;--tblr-danger-lt:#2b2634;--tblr-danger-lt-rgb:43,38,52;--tblr-light-lt:#2f3a47;--tblr-light-lt-rgb:47,58,71;--tblr-dark-lt:#182433;--tblr-dark-lt-rgb:24,36,51;--tblr-muted-lt:#202c3b;--tblr-muted-lt-rgb:32,44,59;--tblr-blue-lt:#16293f;--tblr-blue-lt-rgb:22,41,63;--tblr-azure-lt:#1c3044;--tblr-azure-lt-rgb:28,48,68;--tblr-indigo-lt:#1c2a45;--tblr-indigo-lt-rgb:28,42,69;--tblr-purple-lt:#272742;--tblr-purple-lt-rgb:39,39,66;--tblr-pink-lt:#2b2639;--tblr-pink-lt-rgb:43,38,57;--tblr-red-lt:#2b2634;--tblr-red-lt-rgb:43,38,52;--tblr-orange-lt:#2e2b2f;--tblr-orange-lt-rgb:46,43,47;--tblr-yellow-lt:#2e302e;--tblr-yellow-lt-rgb:46,48,46;--tblr-lime-lt:#213330;--tblr-lime-lt-rgb:33,51,48;--tblr-green-lt:#1a3235;--tblr-green-lt-rgb:26,50,53;--tblr-teal-lt:#17313a;--tblr-teal-lt-rgb:23,49,58;--tblr-cyan-lt:#183140;--tblr-cyan-lt-rgb:24,49,64;--tblr-facebook-lt:#182c46;--tblr-facebook-lt-rgb:24,44,70;--tblr-twitter-lt:#193146;--tblr-twitter-lt-rgb:25,49,70;--tblr-linkedin-lt:#172b41;--tblr-linkedin-lt-rgb:23,43,65;--tblr-google-lt:#2c2834;--tblr-google-lt-rgb:44,40,52;--tblr-youtube-lt:#2f202e;--tblr-youtube-lt-rgb:47,32,46;--tblr-vimeo-lt:#183345;--tblr-vimeo-lt-rgb:24,51,69;--tblr-dribbble-lt:#2d283c;--tblr-dribbble-lt-rgb:45,40,60;--tblr-github-lt:#182330;--tblr-github-lt-rgb:24,35,48;--tblr-instagram-lt:#2c2737;--tblr-instagram-lt-rgb:44,39,55;--tblr-pinterest-lt:#292131;--tblr-pinterest-lt-rgb:41,33,49;--tblr-vk-lt:#202e3f;--tblr-vk-lt-rgb:32,46,63;--tblr-rss-lt:#2f312e;--tblr-rss-lt-rgb:47,49,46;--tblr-flickr-lt:#162a44;--tblr-flickr-lt-rgb:22,42,68;--tblr-bitbucket-lt:#162942;--tblr-bitbucket-lt-rgb:22,41,66;--tblr-tabler-lt:#16293f;--tblr-tabler-lt-rgb:22,41,63}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color:var(--tblr-body-color)}.accordion-button:focus:not(:focus-visible){outline:0;box-shadow:none}.accordion-button:after{opacity:.7}.accordion-button:not(.collapsed){font-weight:var(--tblr-font-weight-bold);border-bottom-color:transparent;box-shadow:none}.accordion-button:not(.collapsed):after{opacity:1}.alert{--tblr-alert-color:var(--tblr-secondary);--tblr-alert-bg:var(--tblr-surface);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-left:.25rem var(--tblr-border-style) var(--tblr-alert-color);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.alert>:last-child{margin-bottom:0}.alert-important{border-color:transparent;background:var(--tblr-alert-color);color:#fff}.alert-important .alert-icon,.alert-important .alert-link,.alert-important .alert-title{color:inherit}.alert-important .alert-link:hover{color:inherit}.alert-important .btn-close{filter:var(--tblr-btn-close-white-filter)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-primary{--tblr-alert-color:var(--tblr-primary)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary)}.alert-success{--tblr-alert-color:var(--tblr-success)}.alert-info{--tblr-alert-color:var(--tblr-info)}.alert-warning{--tblr-alert-color:var(--tblr-warning)}.alert-danger{--tblr-alert-color:var(--tblr-danger)}.alert-light{--tblr-alert-color:var(--tblr-light)}.alert-dark{--tblr-alert-color:var(--tblr-dark)}.alert-muted{--tblr-alert-color:var(--tblr-muted)}.alert-blue{--tblr-alert-color:var(--tblr-blue)}.alert-azure{--tblr-alert-color:var(--tblr-azure)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo)}.alert-purple{--tblr-alert-color:var(--tblr-purple)}.alert-pink{--tblr-alert-color:var(--tblr-pink)}.alert-red{--tblr-alert-color:var(--tblr-red)}.alert-orange{--tblr-alert-color:var(--tblr-orange)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow)}.alert-lime{--tblr-alert-color:var(--tblr-lime)}.alert-green{--tblr-alert-color:var(--tblr-green)}.alert-teal{--tblr-alert-color:var(--tblr-teal)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin)}.alert-google{--tblr-alert-color:var(--tblr-google)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble)}.alert-github{--tblr-alert-color:var(--tblr-github)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest)}.alert-vk{--tblr-alert-color:var(--tblr-vk)}.alert-rss{--tblr-alert-color:var(--tblr-rss)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler)}.alert-icon{color:var(--tblr-alert-color);width:1.5rem!important;height:1.5rem!important;margin:-.125rem 1rem -.125rem 0}.alert-title{font-size:.875rem;line-height:1.25rem;font-weight:var(--tblr-font-weight-bold);margin-bottom:.25rem;color:var(--tblr-alert-color)}.avatar{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-bg:var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow:var(--tblr-box-shadow-border);--tblr-avatar-font-size:1rem;--tblr-avatar-icon-size:1.5rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow)}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;right:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size)/ 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size:1rem;--tblr-avatar-status-size:0.25rem;--tblr-avatar-font-size:0.5rem;--tblr-avatar-icon-size:0.75rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size:1.25rem;--tblr-avatar-status-size:0.375rem;--tblr-avatar-font-size:0.625rem;--tblr-avatar-icon-size:1rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size:2rem;--tblr-avatar-status-size:0.5rem;--tblr-avatar-font-size:0.75rem;--tblr-avatar-icon-size:1.25rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:0.875rem;--tblr-avatar-icon-size:1.5rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size:3rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:1.25rem;--tblr-avatar-icon-size:2rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size:5rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:2rem;--tblr-avatar-icon-size:3rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size:7rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:3rem;--tblr-avatar-icon-size:5rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap:0}.avatar-list-stacked .avatar{margin-right:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-cap-bg,var(--tblr-card-bg,var(--tblr-bg-surface)))}.avatar-upload{width:4rem;height:4rem;border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);flex-direction:column;transition:color .3s,background-color .3s}@media (prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-body-bg))}.badge{justify-content:center;align-items:center;background:var(--tblr-bg-surface-secondary);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;min-width:1.35714285em;font-weight:var(--tblr-font-weight-bold);letter-spacing:.04em;vertical-align:bottom}a.badge{color:var(--tblr-bg-surface)}.badge .avatar{box-sizing:content-box;width:1.25rem;height:1.25rem;margin:0 .5rem 0 -.5rem}.badge .icon{width:1em;height:1em;font-size:1rem;stroke-width:2}.badge-empty,.badge:empty{display:inline-block;width:.5rem;height:.5rem;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;right:0!important;transform:translate(50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.breadcrumb{--tblr-breadcrumb-item-active-font-weight:var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color:var(--tblr-disabled-color);--tblr-breadcrumb-link-color:var(--tblr-link-color);padding:0;margin:0;background:0 0}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color:var(--tblr-secondary)}.breadcrumb-item.active{font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-dots{--tblr-breadcrumb-divider:"·"}.breadcrumb-arrows{--tblr-breadcrumb-divider:"›"}.breadcrumb-bullets{--tblr-breadcrumb-divider:"•"}.btn{--tblr-btn-icon-size:1.25rem;--tblr-btn-bg:var(--tblr-bg-surface);--tblr-btn-color:var(--tblr-body-color);--tblr-btn-border-color:var(--tblr-border-color);--tblr-btn-hover-bg:var(--tblr-btn-bg);--tblr-btn-hover-border-color:var(--tblr-border-color-active);--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-active-color:var(--tblr-primary);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-btn-active-border-color:var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow)}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4);vertical-align:bottom;color:inherit}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4)}.btn .icon-right{margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#0054a6;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#004385;border-color:transparent}.btn-primary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-primary-fg);--tblr-btn-bg:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-border-color:var(--tblr-primary)}.btn-secondary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-secondary-fg);--tblr-btn-bg:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-border-color:var(--tblr-secondary)}.btn-success{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-success-fg);--tblr-btn-bg:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-border-color:var(--tblr-success)}.btn-info{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-info-fg);--tblr-btn-bg:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-border-color:var(--tblr-info)}.btn-warning{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-warning-fg);--tblr-btn-bg:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-border-color:var(--tblr-warning)}.btn-danger{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-danger-fg);--tblr-btn-bg:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-border-color:var(--tblr-danger)}.btn-light{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-light-fg);--tblr-btn-bg:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-border-color:var(--tblr-light)}.btn-dark{--tblr-btn-border-color:var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-active-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-color:var(--tblr-dark-fg);--tblr-btn-bg:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-border-color:var(--tblr-dark)}.btn-muted{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-muted-fg);--tblr-btn-bg:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-border-color:var(--tblr-muted)}.btn-blue{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-blue-fg);--tblr-btn-bg:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-border-color:var(--tblr-blue)}.btn-azure{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-azure-fg);--tblr-btn-bg:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-border-color:var(--tblr-azure)}.btn-indigo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-indigo-fg);--tblr-btn-bg:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-border-color:var(--tblr-indigo)}.btn-purple{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-purple-fg);--tblr-btn-bg:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-border-color:var(--tblr-purple)}.btn-pink{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pink-fg);--tblr-btn-bg:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-border-color:var(--tblr-pink)}.btn-red{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-red-fg);--tblr-btn-bg:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-border-color:var(--tblr-red)}.btn-orange{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-orange-fg);--tblr-btn-bg:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-border-color:var(--tblr-orange)}.btn-yellow{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-yellow-fg);--tblr-btn-bg:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-border-color:var(--tblr-yellow)}.btn-lime{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-lime-fg);--tblr-btn-bg:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-border-color:var(--tblr-lime)}.btn-green{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-green-fg);--tblr-btn-bg:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-border-color:var(--tblr-green)}.btn-teal{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-teal-fg);--tblr-btn-bg:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-border-color:var(--tblr-teal)}.btn-cyan{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-cyan-fg);--tblr-btn-bg:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-border-color:var(--tblr-cyan)}.btn-facebook{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-facebook-fg);--tblr-btn-bg:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-border-color:var(--tblr-facebook)}.btn-twitter{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-twitter-fg);--tblr-btn-bg:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-border-color:var(--tblr-twitter)}.btn-linkedin{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-linkedin-fg);--tblr-btn-bg:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-border-color:var(--tblr-linkedin)}.btn-google{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-google-fg);--tblr-btn-bg:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-border-color:var(--tblr-google)}.btn-youtube{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-youtube-fg);--tblr-btn-bg:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-border-color:var(--tblr-youtube)}.btn-vimeo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vimeo-fg);--tblr-btn-bg:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-border-color:var(--tblr-vimeo)}.btn-dribbble{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-dribbble-fg);--tblr-btn-bg:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-border-color:var(--tblr-dribbble)}.btn-github{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-github-fg);--tblr-btn-bg:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-border-color:var(--tblr-github)}.btn-instagram{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-instagram-fg);--tblr-btn-bg:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-border-color:var(--tblr-instagram)}.btn-pinterest{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pinterest-fg);--tblr-btn-bg:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-border-color:var(--tblr-pinterest)}.btn-vk{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vk-fg);--tblr-btn-bg:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-border-color:var(--tblr-vk)}.btn-rss{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-rss-fg);--tblr-btn-bg:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-border-color:var(--tblr-rss)}.btn-flickr{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-flickr-fg);--tblr-btn-bg:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-border-color:var(--tblr-flickr)}.btn-bitbucket{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-bitbucket-fg);--tblr-btn-bg:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-border-color:var(--tblr-bitbucket)}.btn-tabler{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-tabler-fg);--tblr-btn-bg:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-border-color:var(--tblr-tabler)}.btn-ghost-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-hover-border-color:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-hover-border-color:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-hover-border-color:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-hover-border-color:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-hover-border-color:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-hover-border-color:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-hover-border-color:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-hover-border-color:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-hover-border-color:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-hover-border-color:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-hover-border-color:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-hover-border-color:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-hover-border-color:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-hover-border-color:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-hover-border-color:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-hover-border-color:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-hover-border-color:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-hover-border-color:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-hover-border-color:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-hover-border-color:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-hover-border-color:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-hover-border-color:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-hover-border-color:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-hover-border-color:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-hover-border-color:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-hover-border-color:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-hover-border-color:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-hover-border-color:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-hover-border-color:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-hover-border-color:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-hover-border-color:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-hover-border-color:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-hover-border-color:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-hover-border-color:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-hover-border-color:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-hover-border-color:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-group-sm>.btn,.btn-sm{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:.75rem}.btn-group-lg>.btn,.btn-lg{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:2rem}.btn-pill{padding-right:1.5em;padding-left:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon{min-width:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);padding-left:0;padding-right:0}.btn-icon .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1.5rem;right:1.5rem;border-radius:100rem}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-right-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);left:calc(50% - var(--tblr-btn-icon-size)/ 2);top:calc(50% - var(--tblr-btn-icon-size)/ 2);animation:spinner-border .75s linear infinite}.btn-action{padding:0;border:0;color:var(--tblr-secondary);display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:var(--tblr-border-radius);background:0 0}.btn-action:after{content:none}.btn-action:focus{outline:0;box-shadow:none}.btn-action.show,.btn-action:hover{color:var(--tblr-body-color);background:var(--tblr-active-bg)}.btn-action.show{color:var(--tblr-primary)}.btn-action .icon{margin:0;width:1.25rem;height:1.25rem;font-size:1.25rem;stroke-width:1}.btn-actions{display:flex}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-box-shadow-input)}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group>.btn-check:checked+.btn,.btn-group>.btn.active,.btn-group>.btn:active{z-index:5}.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.next-month,.calendar-date.prev-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:0 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media (prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;right:0;left:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-end .date-item,.calendar-range.range-start .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{left:50%}.calendar-range.range-end:before{right:50%}.carousel-indicators-vertical{left:auto;top:0;margin:0 1rem 0 0;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0 3px;width:3px;height:30px;border:0;border-left:10px var(--tblr-border-style) transparent;border-right:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0;margin:0 3px;opacity:.75}@media (min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio,100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;left:0;right:0;bottom:0;height:90%;background:linear-gradient(0deg,rgba(24,36,51,.9),rgba(24,36,51,0))}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media (prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px 0}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-footer,.card-borderless .card-header{border-color:transparent}.card-stamp{--tblr-stamp-size:7rem;position:absolute;top:0;right:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-right-radius:4px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size:13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg,var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);right:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color:var(--tblr-primary);--tblr-card-bg:var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.25rem;text-align:center;transition:background .3s;border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}@media (prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset:.25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));right:var(--tblr-card-stacked-offset);left:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1.25rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background:rgba(24,36,51,.48)}.card-cover:first-child,.card-cover:first-child:before{border-radius:4px 4px 0 0}.card-cover-blurred:before{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.card-actions{margin:-.5rem -.5rem -.5rem auto;padding-left:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:0 0}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left{transform:rotate(-1.5deg)}.card-rotate-right{transform:rotate(1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px 0 rgba(0,0,0,.08)}.card-link-rotate:hover{transform:rotate(1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:0 0;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 0 0 .25rem;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media (min-width:768px){.card-md>.card-body{padding:2.5rem}}@media (min-width:768px){.card-lg>.card-body{padding:2rem}}@media (min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;right:.75rem;display:flex;margin-left:auto}.card-options-link{display:inline-block;min-width:1rem;margin-left:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;right:0;left:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;right:auto;bottom:0;width:2px;height:100%;border-radius:var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius)}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-left:1.25rem;border-left:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-right:1.25rem;border-right:0}.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child{border-top:0}.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th,.card-table thead tr:first-child td,.card-table thead tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-left:auto;margin-right:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-right:1.25rem;padding-left:1.25rem;border-right:0;border-left:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg,var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-left:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-left-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-right-radius:0}.card-tabs .card{border-bottom-left-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-left-radius:var(--tblr-card-border-radius);border-top-left-radius:0}.card-note{--tblr-card-bg:#fff7dd;--tblr-card-border-color:#fff1c9}.btn-close{cursor:pointer}.btn-close:focus{outline:0}.dropdown-menu{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-right:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-right:.5rem;margin-left:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 .25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;left:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0,9px,9px,0)}.dropdown-menu-arrow.dropdown-menu-end:before{right:.75rem;left:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-left:-.25rem}.dropend .dropdown-toggle:after{margin-left:auto}.dropdown-menu-card{padding:0}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding:1.5rem;--tblr-datagrid-item-width:15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media (min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-img img{height:8rem;width:auto}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-subtitle,.empty-title{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:16rem}.container-tight{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:30rem}.container-narrow{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:45rem}.row-0{margin-right:0;margin-left:0}.row-0>.col,.row-0>[class*=col-]{padding-right:0;padding-left:0}.row-0 .card{margin-bottom:0}.row-sm{margin-right:-.375rem;margin-left:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-right:.375rem;padding-left:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-right:-1.5rem;margin-left:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-right:1.5rem;padding-left:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-right:-3rem;margin-left:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-right:3rem;padding-left:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:3rem}.space-x-6{display:flex;gap:3rem}.space-y-7{display:flex;flex-direction:column;gap:5rem}.space-x-7{display:flex;gap:5rem}.space-y-8{display:flex;flex-direction:column;gap:8rem}.space-x-8{display:flex;gap:8rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-left:1rem!important}.divide-x>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-left:0!important}.divide-x-0>:not(template):not(:last-child){padding-right:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-left:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-right:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-left:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-right:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-left:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-left:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-right:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-left:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-right:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:3rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:3rem!important}.divide-x-6>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-left:3rem!important}.divide-x-6>:not(template):not(:last-child){padding-right:3rem!important}.divide-y-7>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-7>:not(template):not(:first-child){padding-top:5rem!important}.divide-y-7>:not(template):not(:last-child){padding-bottom:5rem!important}.divide-x-7>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-7>:not(template):not(:first-child){padding-left:5rem!important}.divide-x-7>:not(template):not(:last-child){padding-right:5rem!important}.divide-y-8>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-8>:not(template):not(:first-child){padding-top:8rem!important}.divide-y-8>:not(template):not(:last-child){padding-bottom:8rem!important}.divide-x-8>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-8>:not(template):not(:first-child){padding-left:8rem!important}.divide-x-8>:not(template):not(:last-child){padding-right:8rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size:1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size:1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size:1rem;stroke-width:1}.icon-md{--tblr-icon-size:2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size:3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio:75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y)/ 2)}.img-responsive-1x1{--tblr-img-responsive-ratio:100%}.img-responsive-2x1{--tblr-img-responsive-ratio:50%}.img-responsive-1x2{--tblr-img-responsive-ratio:200%}.img-responsive-3x1{--tblr-img-responsive-ratio:33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio:300%}.img-responsive-4x3{--tblr-img-responsive-ratio:75%}.img-responsive-3x4{--tblr-img-responsive-ratio:133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio:56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio:177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio:42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio:233.3333333333%}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-label-description{float:right;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-secondary)}.form-hint{display:block;color:var(--tblr-secondary)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.form-control+.form-hint,.form-select+.form-hint,.input-group+.form-hint{margin-top:.5rem}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-body-bg) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control.disabled,.form-control:disabled{color:var(--tblr-secondary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:rgba(0,0,0,.1);color:#fff;border-color:transparent}.form-control-dark:focus{background-color:rgba(0,0,0,.1);box-shadow:none;border-color:rgba(255,255,255,.24)}.form-control-dark::-webkit-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark:-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::placeholder{color:rgba(255,255,255,.6)}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:0 0!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-body-bg);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-secondary);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-box-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .btn,.input-group .form-control{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#80aad3!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-right:0}.input-group-flat .form-control:not(:first-child){border-left:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-right:0}.input-group-flat .input-group-text:last-child{padding-left:0}.form-file-button{margin-left:0;border-left:0}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{right:0;left:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:3px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.form-colorinput-color:before{position:absolute;top:0;left:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;left:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.form-imagecheck-image:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck:hover .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck:hover .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 -.5rem -.5rem 0;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 .5rem .5rem 0}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;left:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem .75rem;font-size:.875rem;line-height:1.4285714286;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px;box-shadow:var(--tblr-box-shadow-input);transition:border-color .3s,background .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-box-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.5625rem;right:.5625rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:left;padding:1.25rem 1.25rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-check{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0;box-shadow:var(--tblr-box-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single{margin:0}.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0}.form-switch-lg{padding-left:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-left:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-control.is-invalid-lite,.form-control.is-valid-lite,.form-select.is-invalid-lite,.form-select.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size:0.75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-left:0;margin-right:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-secondary);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-text-secondary-rgb),.04);border-left-color:#0054a6;border-left-width:2px}.list-group-item:active,.list-group-item:focus,.list-group-item:hover{background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-group-item.disabled,.list-group-item:disabled{color:#929dab;background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item-actions.show,.list-group-hoverable .list-group-item:hover .list-group-item-actions{opacity:1}.list-group-transparent{--tblr-list-group-border-radius:0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:0 0;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated-item{padding:1rem 0}.list-separated-item:first-child{padding-top:0}.list-separated-item:last-child{padding-bottom:0}.list-separated-item+.list-separated-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-inline-item:not(:last-child){margin-right:auto;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" · ";-webkit-margin-end:.5rem;margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#0054a6;vertical-align:middle}.loader:after{position:absolute;top:0;left:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-left-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;right:0;left:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translateX(-100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content .btn-close{position:absolute;top:0;right:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{-webkit-transition:none;transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.modal-body::-webkit-scrollbar-track{background:0 0}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.modal-body::-webkit-scrollbar-corner{background:0 0}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;left:0;right:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:0 0;padding:0 3.5rem 0 1.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-left:1.25rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-left:.5rem}.nav-vertical .nav-item.show .nav-link,.nav-vertical .nav-link.active{font-weight:var(--tblr-font-weight-bold)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-left:1.25rem}.nav-bordered .nav-link{padding-left:0;padding-right:0;margin:0 0 -var(--tblr-border-width);border:0;border-bottom:2px var(--tblr-border-style) transparent;color:var(--tblr-secondary)}.nav-bordered .nav-item.show .nav-link,.nav-bordered .nav-link.active{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-link{display:flex;transition:color .3s;align-items:center}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link-toggle{margin-left:auto;padding:0 .25rem;transition:transform .3s}@media (prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-right:.5rem;color:var(--tblr-icon-color)}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#bbc3cd;font-size:.75rem}.stars .star:not(:first-child){margin-left:.25rem}.pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.page-link{min-width:1.75rem;border-radius:var(--tblr-border-radius)}.page-item{text-align:center}.page-item:not(.active) .page-link:hover{background:0 0}.page-item.page-next,.page-item.page-prev{flex:0 0 50%;text-align:left}.page-item.page-next{margin-left:auto;text-align:right}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#0054a6}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}@keyframes progress-indeterminate{0%{right:100%;left:-35%}100%,60%{right:-90%;left:100%}}.progress{position:relative;width:100%;line-height:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;left:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg,var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;height:100%;background:0 0;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-left:auto;padding-left:2rem}.ribbon{--tblr-ribbon-margin:0.25rem;--tblr-ribbon-border-radius:var(--tblr-border-radius);position:absolute;top:.75rem;right:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;right:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));right:.75rem;width:2rem;padding:.5rem 0;border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;right:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-top.ribbon-start{right:auto;left:.75rem}.ribbon-top.ribbon-start:before{top:0;right:100%;left:auto}.ribbon-start{right:auto;left:calc(-1 * var(--tblr-ribbon-margin))}.ribbon-start:before{top:auto;bottom:100%;left:0;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-left:.25rem;border-radius:0 0 var(--tblr-ribbon-border-radius) 0}.ribbon-bookmark:after{position:absolute;top:0;right:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-right-width:0;border-left-color:transparent;border-left-width:.5rem}.ribbon-bookmark.ribbon-left{padding-right:.5rem}.ribbon-bookmark.ribbon-left:after{right:auto;left:100%;border-right-color:transparent;border-right-width:.5rem;border-left-width:0}.ribbon-bookmark.ribbon-top{padding-right:0;padding-bottom:.25rem;padding-left:0;border-radius:0 var(--tblr-ribbon-border-radius) 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;right:0;left:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:1.7142857143}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media (min-width:768px){.markdown>.hr,.markdown>hr{margin-top:3em;margin-bottom:3em}}.markdown>.h1,.markdown>.h2,.markdown>.h3,.markdown>.h4,.markdown>.h5,.markdown>.h6,.markdown>h1,.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{font-weight:var(--tblr-font-weight-bold)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img{border-radius:var(--tblr-border-radius)}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.steps{--tblr-steps-color:var(--tblr-primary);--tblr-steps-inactive-color:var(--tblr-border-color);--tblr-steps-dot-size:.5rem;--tblr-steps-border-width:2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color:var(--tblr-blue)}.steps-azure{--tblr-steps-color:var(--tblr-azure)}.steps-indigo{--tblr-steps-color:var(--tblr-indigo)}.steps-purple{--tblr-steps-color:var(--tblr-purple)}.steps-pink{--tblr-steps-color:var(--tblr-pink)}.steps-red{--tblr-steps-color:var(--tblr-red)}.steps-orange{--tblr-steps-color:var(--tblr-orange)}.steps-yellow{--tblr-steps-color:var(--tblr-yellow)}.steps-lime{--tblr-steps-color:var(--tblr-lime)}.steps-green{--tblr-steps-color:var(--tblr-green)}.steps-teal{--tblr-steps-color:var(--tblr-teal)}.steps-cyan{--tblr-steps-color:var(--tblr-cyan)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;left:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;left:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translateX(-50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size:1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset:6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset:-2px}.steps-vertical .step-item{text-align:left;padding-top:0;padding-left:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);left:0;transform:translate(0,0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translateX(-50%);top:var(--tblr-steps-dot-offset);left:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25,1.25)}60%{transform:scale(1.25,1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1,1)}30%{transform:scale(3,3)}80%{transform:scale(3,3)}100%{transform:scale(1,1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1,1)}80%{transform:scale(3,3);opacity:0}100%{transform:scale(3,3);opacity:0}}.status{--tblr-status-height:1.5rem;--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:0 0!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-secondary{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-success{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-info{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-warning{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-danger{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-light{--tblr-status-color:#fcfdfe;--tblr-status-color-rgb:252,253,254}.status-dark{--tblr-status-color:#182433;--tblr-status-color-rgb:24,36,51}.status-muted{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-blue{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-azure{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-indigo{--tblr-status-color:#4263eb;--tblr-status-color-rgb:66,99,235}.status-purple{--tblr-status-color:#ae3ec9;--tblr-status-color-rgb:174,62,201}.status-pink{--tblr-status-color:#d6336c;--tblr-status-color-rgb:214,51,108}.status-red{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-orange{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-yellow{--tblr-status-color:#f59f00;--tblr-status-color-rgb:245,159,0}.status-lime{--tblr-status-color:#74b816;--tblr-status-color-rgb:116,184,22}.status-green{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-teal{--tblr-status-color:#0ca678;--tblr-status-color-rgb:12,166,120}.status-cyan{--tblr-status-color:#17a2b8;--tblr-status-color-rgb:23,162,184}.status-facebook{--tblr-status-color:#1877f2;--tblr-status-color-rgb:24,119,242}.status-twitter{--tblr-status-color:#1da1f2;--tblr-status-color-rgb:29,161,242}.status-linkedin{--tblr-status-color:#0a66c2;--tblr-status-color-rgb:10,102,194}.status-google{--tblr-status-color:#dc4e41;--tblr-status-color-rgb:220,78,65}.status-youtube{--tblr-status-color:#ff0000;--tblr-status-color-rgb:255,0,0}.status-vimeo{--tblr-status-color:#1ab7ea;--tblr-status-color-rgb:26,183,234}.status-dribbble{--tblr-status-color:#ea4c89;--tblr-status-color-rgb:234,76,137}.status-github{--tblr-status-color:#181717;--tblr-status-color-rgb:24,23,23}.status-instagram{--tblr-status-color:#e4405f;--tblr-status-color-rgb:228,64,95}.status-pinterest{--tblr-status-color:#bd081c;--tblr-status-color-rgb:189,8,28}.status-vk{--tblr-status-color:#6383a8;--tblr-status-color-rgb:99,131,168}.status-rss{--tblr-status-color:#ffa500;--tblr-status-color-rgb:255,165,0}.status-flickr{--tblr-status-color:#0063dc;--tblr-status-color-rgb:0,99,220}.status-bitbucket{--tblr-status-color:#0052cc;--tblr-status-color-rgb:0,82,204}.status-tabler{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-dot{--tblr-status-dot-color:var(--tblr-status-color, #667382);--tblr-status-size:0.5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size:2.5rem;--tblr-status-indicator-color:var(--tblr-status-color, #667382);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size:.75rem;position:absolute;left:50%;top:50%;margin:calc(var(--tblr-status-circle-size)/ -2) 0 0 calc(var(--tblr-status-circle-size)/ -2);width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:nth-child(1){z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:nth-child(1){animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:0 0;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:0}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;left:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media (prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media (prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-down,.switch-icon-slide-left,.switch-icon-slide-right,.switch-icon-slide-up{overflow:hidden}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:opacity .3s,transform .3s}@media (prefers-reduced-motion:reduce){.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:none}}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-up .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-up.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-up.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-left .switch-icon-a{transform:translateX(0)}.switch-icon-slide-left .switch-icon-b{transform:translateX(100%)}.switch-icon-slide-left.active .switch-icon-a{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-right .switch-icon-a{transform:translateX(0)}.switch-icon-slide-right .switch-icon-b{transform:translateX(-100%)}.switch-icon-slide-right.active .switch-icon-a{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.markdown>table thead th,.table thead th{color:var(--tblr-secondary);background:var(--tblr-bg-surface-tertiary);font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.markdown>table thead th,.table thead th{background:0 0}}.table-responsive .markdown>table,.table-responsive .table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:0 0}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media (max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media (max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media (max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media (max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media (max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s;margin:-.5rem -.75rem;padding:.5rem .75rem}@media (prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort.asc,.table-sort.desc,.table-sort:hover{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,");background:currentColor;margin-left:.25rem}.table-sort.asc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:0 0}.tag{--tblr-tag-height:1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-box-shadow-input);gap:.5rem}.tag .btn-close{margin-right:-.25rem;margin-left:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size:0.625rem;--tblr-badge-padding-x:.25rem;--tblr-badge-padding-y:.125rem;margin-right:-.25rem}.tag-avatar,.tag-check,.tag-flag,.tag-icon,.tag-payment{margin-left:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-right:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{background:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.toast .toast-header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.toast button[data-bs-dismiss=toast]{outline:0}.toast-primary{--tblr-toast-color:#0054a6}.toast-secondary{--tblr-toast-color:#667382}.toast-success{--tblr-toast-color:#2fb344}.toast-info{--tblr-toast-color:#4299e1}.toast-warning{--tblr-toast-color:#f76707}.toast-danger{--tblr-toast-color:#d63939}.toast-light{--tblr-toast-color:#fcfdfe}.toast-dark{--tblr-toast-color:#182433}.toast-muted{--tblr-toast-color:#667382}.toast-blue{--tblr-toast-color:#0054a6}.toast-azure{--tblr-toast-color:#4299e1}.toast-indigo{--tblr-toast-color:#4263eb}.toast-purple{--tblr-toast-color:#ae3ec9}.toast-pink{--tblr-toast-color:#d6336c}.toast-red{--tblr-toast-color:#d63939}.toast-orange{--tblr-toast-color:#f76707}.toast-yellow{--tblr-toast-color:#f59f00}.toast-lime{--tblr-toast-color:#74b816}.toast-green{--tblr-toast-color:#2fb344}.toast-teal{--tblr-toast-color:#0ca678}.toast-cyan{--tblr-toast-color:#17a2b8}.toast-facebook{--tblr-toast-color:#1877f2}.toast-twitter{--tblr-toast-color:#1da1f2}.toast-linkedin{--tblr-toast-color:#0a66c2}.toast-google{--tblr-toast-color:#dc4e41}.toast-youtube{--tblr-toast-color:#ff0000}.toast-vimeo{--tblr-toast-color:#1ab7ea}.toast-dribbble{--tblr-toast-color:#ea4c89}.toast-github{--tblr-toast-color:#181717}.toast-instagram{--tblr-toast-color:#e4405f}.toast-pinterest{--tblr-toast-color:#bd081c}.toast-vk{--tblr-toast-color:#6383a8}.toast-rss{--tblr-toast-color:#ffa500}.toast-flickr{--tblr-toast-color:#0063dc}.toast-bitbucket{--tblr-toast-color:#0052cc}.toast-tabler{--tblr-toast-color:#0054a6}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height:1.5rem;--tblr-tracking-gap-width:0.125rem;--tblr-tracking-block-border-radius:var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius:var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size:2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);left:calc(var(--tblr-timeline-icon-size)/ 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size,2.5rem);height:var(--tblr-timeline-icon-size,2.5rem);background:var(--tblr-gray-200);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-left:calc(var(--tblr-timeline-icon-size,2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-left:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-right:.5rem}.hr-text:after{content:"";margin-left:.5rem}.hr-text>:first-child{padding-right:.5rem;padding-left:0;color:var(--tblr-secondary)}.hr-text.hr-text-left:before{content:none}.hr-text.hr-text-left>:first-child{padding-right:.5rem;padding-left:.5rem}.hr-text.hr-text-right:before{content:""}.hr-text.hr-text-right:after{content:none}.hr-text.hr-text-right>:first-child{padding-right:0;padding-left:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{line-height:1.4}a{-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:inherit}.h1,h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}.h2,h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}.h3,h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}.h4,h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}.h5,h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}.h6,h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.strong,b,strong{font-weight:var(--tblr-font-weight-bold)}blockquote{padding-left:1rem;border-left:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:right}blockquote cite:before{content:"— "}ol,ul{padding-left:1.5rem}.hr,hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius)}pre code{background:0 0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}.kbd,kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%}.list-unstyled{margin-left:0}::-moz-selection{background-color:rgba(var(--tblr-primary-rgb),.16)}::selection{background-color:rgba(var(--tblr-primary-rgb),.16)}[class*=" link-"].disabled,[class^=link-].disabled{color:var(--tblr-disabled-color);pointer-events:none}.subheader{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)}.offcanvas-footer{padding:1.5rem 1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>:last-child{margin-bottom:0}.bg-white-overlay{color:#fff;background-color:rgba(252,253,254,.24)}.bg-dark-overlay{color:#fff;background-color:rgba(24,36,51,.24)}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-primary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-primary-lt-rgb),var(--tblr-bg-opacity))!important}.border-primary{border-color:#0054a6!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-secondary-lt-rgb),var(--tblr-bg-opacity))!important}.border-secondary{border-color:#667382!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-success-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-success-lt-rgb),var(--tblr-bg-opacity))!important}.border-success{border-color:#2fb344!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-info-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-info-lt-rgb),var(--tblr-bg-opacity))!important}.border-info{border-color:#4299e1!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-warning-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-warning-lt-rgb),var(--tblr-bg-opacity))!important}.border-warning{border-color:#f76707!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-danger-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-danger-lt-rgb),var(--tblr-bg-opacity))!important}.border-danger{border-color:#d63939!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-light-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-light-lt-rgb),var(--tblr-bg-opacity))!important}.border-light{border-color:#fcfdfe!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-dark-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dark-lt-rgb),var(--tblr-bg-opacity))!important}.border-dark{border-color:#182433!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-muted-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-muted-lt-rgb),var(--tblr-bg-opacity))!important}.border-muted{border-color:#667382!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-blue-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-blue-lt-rgb),var(--tblr-bg-opacity))!important}.border-blue{border-color:#0054a6!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-azure-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-azure-lt-rgb),var(--tblr-bg-opacity))!important}.border-azure{border-color:#4299e1!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-indigo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-indigo-lt-rgb),var(--tblr-bg-opacity))!important}.border-indigo{border-color:#4263eb!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-purple-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-purple-lt-rgb),var(--tblr-bg-opacity))!important}.border-purple{border-color:#ae3ec9!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-pink-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pink-lt-rgb),var(--tblr-bg-opacity))!important}.border-pink{border-color:#d6336c!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-red-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-red-lt-rgb),var(--tblr-bg-opacity))!important}.border-red{border-color:#d63939!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-orange-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-orange-lt-rgb),var(--tblr-bg-opacity))!important}.border-orange{border-color:#f76707!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-yellow-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-yellow-lt-rgb),var(--tblr-bg-opacity))!important}.border-yellow{border-color:#f59f00!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-lime-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-lime-lt-rgb),var(--tblr-bg-opacity))!important}.border-lime{border-color:#74b816!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-green-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-green-lt-rgb),var(--tblr-bg-opacity))!important}.border-green{border-color:#2fb344!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-teal-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-teal-lt-rgb),var(--tblr-bg-opacity))!important}.border-teal{border-color:#0ca678!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-cyan-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-cyan-lt-rgb),var(--tblr-bg-opacity))!important}.border-cyan{border-color:#17a2b8!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-facebook-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-facebook-lt-rgb),var(--tblr-bg-opacity))!important}.border-facebook{border-color:#1877f2!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-twitter-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-twitter-lt-rgb),var(--tblr-bg-opacity))!important}.border-twitter{border-color:#1da1f2!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-linkedin-lt-rgb),var(--tblr-bg-opacity))!important}.border-linkedin{border-color:#0a66c2!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-google-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-google-lt-rgb),var(--tblr-bg-opacity))!important}.border-google{border-color:#dc4e41!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-youtube-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-youtube-lt-rgb),var(--tblr-bg-opacity))!important}.border-youtube{border-color:red!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vimeo-lt-rgb),var(--tblr-bg-opacity))!important}.border-vimeo{border-color:#1ab7ea!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dribbble-lt-rgb),var(--tblr-bg-opacity))!important}.border-dribbble{border-color:#ea4c89!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-github-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-github-lt-rgb),var(--tblr-bg-opacity))!important}.border-github{border-color:#181717!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-instagram-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-instagram-lt-rgb),var(--tblr-bg-opacity))!important}.border-instagram{border-color:#e4405f!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pinterest-lt-rgb),var(--tblr-bg-opacity))!important}.border-pinterest{border-color:#bd081c!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-vk-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vk-lt-rgb),var(--tblr-bg-opacity))!important}.border-vk{border-color:#6383a8!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-rss-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-rss-lt-rgb),var(--tblr-bg-opacity))!important}.border-rss{border-color:orange!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-flickr-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-flickr-lt-rgb),var(--tblr-bg-opacity))!important}.border-flickr{border-color:#0063dc!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-bitbucket-lt-rgb),var(--tblr-bg-opacity))!important}.border-bitbucket{border-color:#0052cc!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-tabler-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-tabler-lt-rgb),var(--tblr-bg-opacity))!important}.border-tabler{border-color:#0054a6!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-white-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-white-lt-rgb),var(--tblr-bg-opacity))!important}.border-white{border-color:#fff!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-google-fg{color:var(--tblr-google-fg)!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-github-fg{color:var(--tblr-github-fg)!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-gray-50{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-50-rgb),var(--tblr-bg-opacity))!important}.text-gray-50-fg{color:#182433!important}.bg-gray-100{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-100-rgb),var(--tblr-bg-opacity))!important}.text-gray-100-fg{color:#182433!important}.bg-gray-200{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-200-rgb),var(--tblr-bg-opacity))!important}.text-gray-200-fg{color:#182433!important}.bg-gray-300{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-300-rgb),var(--tblr-bg-opacity))!important}.text-gray-300-fg{color:#182433!important}.bg-gray-400{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-400-rgb),var(--tblr-bg-opacity))!important}.text-gray-400-fg{color:#fcfdfe!important}.bg-gray-500{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-500-rgb),var(--tblr-bg-opacity))!important}.text-gray-500-fg{color:#fcfdfe!important}.bg-gray-600{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-600-rgb),var(--tblr-bg-opacity))!important}.text-gray-600-fg{color:#fcfdfe!important}.bg-gray-700{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-700-rgb),var(--tblr-bg-opacity))!important}.text-gray-700-fg{color:#fcfdfe!important}.bg-gray-800{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-800-rgb),var(--tblr-bg-opacity))!important}.text-gray-800-fg{color:#fcfdfe!important}.bg-gray-900{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-900-rgb),var(--tblr-bg-opacity))!important}.text-gray-900-fg{color:#fcfdfe!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:active,.scrollable.hover:focus,.scrollable.hover:hover{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:3rem!important}.h-6{height:3rem!important}.w-7{width:5rem!important}.h-7{height:5rem!important}.w-8{width:8rem!important}.h-8{height:8rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:0!important}.opacity-5{opacity:.05!important}.opacity-10{opacity:.1!important}.opacity-15{opacity:.15!important}.opacity-20{opacity:.2!important}.opacity-25{opacity:.25!important}.opacity-30{opacity:.3!important}.opacity-35{opacity:.35!important}.opacity-40{opacity:.4!important}.opacity-45{opacity:.45!important}.opacity-50{opacity:.5!important}.opacity-55{opacity:.55!important}.opacity-60{opacity:.6!important}.opacity-65{opacity:.65!important}.opacity-70{opacity:.7!important}.opacity-75{opacity:.75!important}.opacity-80{opacity:.8!important}.opacity-85{opacity:.85!important}.opacity-90{opacity:.9!important}.opacity-95{opacity:.95!important}.opacity-100{opacity:1!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler.rtl.css b/gin_ops/static/dist/css/tabler.rtl.css new file mode 100644 index 0000000..1cbab9d --- /dev/null +++ b/gin_ops/static/dist/css/tabler.rtl.css @@ -0,0 +1,25777 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8"; +/* prettier-ignore */ +/* prettier-ignore */ +:root, +[data-bs-theme=light] { + --tblr-blue: #0054a6; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-black: #000000; + --tblr-white: #ffffff; + --tblr-gray: #667382; + --tblr-gray-dark: #182433; + --tblr-gray-100: #f6f8fb; + --tblr-gray-200: #eef1f4; + --tblr-gray-300: #dadfe5; + --tblr-gray-400: #bbc3cd; + --tblr-gray-500: #929dab; + --tblr-gray-600: #667382; + --tblr-gray-700: #3a4859; + --tblr-gray-800: #182433; + --tblr-gray-900: #040a11; + --tblr-primary: #0054a6; + --tblr-secondary: #667382; + --tblr-success: #2fb344; + --tblr-info: #4299e1; + --tblr-warning: #f76707; + --tblr-danger: #d63939; + --tblr-light: #fcfdfe; + --tblr-dark: #182433; + --tblr-muted: #667382; + --tblr-blue: #0054a6; + --tblr-azure: #4299e1; + --tblr-indigo: #4263eb; + --tblr-purple: #ae3ec9; + --tblr-pink: #d6336c; + --tblr-red: #d63939; + --tblr-orange: #f76707; + --tblr-yellow: #f59f00; + --tblr-lime: #74b816; + --tblr-green: #2fb344; + --tblr-teal: #0ca678; + --tblr-cyan: #17a2b8; + --tblr-facebook: #1877f2; + --tblr-twitter: #1da1f2; + --tblr-linkedin: #0a66c2; + --tblr-google: #dc4e41; + --tblr-youtube: #ff0000; + --tblr-vimeo: #1ab7ea; + --tblr-dribbble: #ea4c89; + --tblr-github: #181717; + --tblr-instagram: #e4405f; + --tblr-pinterest: #bd081c; + --tblr-vk: #6383a8; + --tblr-rss: #ffa500; + --tblr-flickr: #0063dc; + --tblr-bitbucket: #0052cc; + --tblr-tabler: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-success-rgb: 47, 179, 68; + --tblr-info-rgb: 66, 153, 225; + --tblr-warning-rgb: 247, 103, 7; + --tblr-danger-rgb: 214, 57, 57; + --tblr-light-rgb: 252, 253, 254; + --tblr-dark-rgb: 24, 36, 51; + --tblr-muted-rgb: 102, 115, 130; + --tblr-blue-rgb: 0, 84, 166; + --tblr-azure-rgb: 66, 153, 225; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-purple-rgb: 174, 62, 201; + --tblr-pink-rgb: 214, 51, 108; + --tblr-red-rgb: 214, 57, 57; + --tblr-orange-rgb: 247, 103, 7; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-lime-rgb: 116, 184, 22; + --tblr-green-rgb: 47, 179, 68; + --tblr-teal-rgb: 12, 166, 120; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-google-rgb: 220, 78, 65; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-github-rgb: 24, 23, 23; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-vk-rgb: 99, 131, 168; + --tblr-rss-rgb: 255, 165, 0; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-primary-text-emphasis: #002242; + --tblr-secondary-text-emphasis: #292e34; + --tblr-success-text-emphasis: #13481b; + --tblr-info-text-emphasis: #1a3d5a; + --tblr-warning-text-emphasis: #632903; + --tblr-danger-text-emphasis: #561717; + --tblr-light-text-emphasis: #3a4859; + --tblr-dark-text-emphasis: #3a4859; + --tblr-primary-bg-subtle: #ccdded; + --tblr-secondary-bg-subtle: #e0e3e6; + --tblr-success-bg-subtle: #d5f0da; + --tblr-info-bg-subtle: #d9ebf9; + --tblr-warning-bg-subtle: #fde1cd; + --tblr-danger-bg-subtle: #f7d7d7; + --tblr-light-bg-subtle: #fbfcfd; + --tblr-dark-bg-subtle: #bbc3cd; + --tblr-primary-border-subtle: #99bbdb; + --tblr-secondary-border-subtle: #c2c7cd; + --tblr-success-border-subtle: #ace1b4; + --tblr-info-border-subtle: #b3d6f3; + --tblr-warning-border-subtle: #fcc29c; + --tblr-danger-border-subtle: #efb0b0; + --tblr-light-border-subtle: #eef1f4; + --tblr-dark-border-subtle: #929dab; + --tblr-white-rgb: 255, 255, 255; + --tblr-black-rgb: 0, 0, 0; + --tblr-font-sans-serif: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif; + --tblr-font-monospace: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + --tblr-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --tblr-body-font-family: var(--tblr-font-sans-serif); + --tblr-body-font-size: 0.875rem; + --tblr-body-font-weight: 400; + --tblr-body-line-height: 1.4285714286; + --tblr-body-color: #182433; + --tblr-body-color-rgb: 24, 36, 51; + --tblr-body-bg: #f6f8fb; + --tblr-body-bg-rgb: 246, 248, 251; + --tblr-emphasis-color: #182433; + --tblr-emphasis-color-rgb: 24, 36, 51; + --tblr-secondary-color: rgba(24, 36, 51, 0.75); + --tblr-secondary-color-rgb: 24, 36, 51; + --tblr-secondary-bg: #eef1f4; + --tblr-secondary-bg-rgb: 238, 241, 244; + --tblr-tertiary-color: rgba(24, 36, 51, 0.5); + --tblr-tertiary-color-rgb: 24, 36, 51; + --tblr-tertiary-bg: #f6f8fb; + --tblr-tertiary-bg-rgb: 246, 248, 251; + --tblr-heading-color: inherit; + --tblr-link-color: #0054a6; + --tblr-link-color-rgb: 0, 84, 166; + --tblr-link-decoration: none; + --tblr-link-hover-color: #004385; + --tblr-link-hover-color-rgb: 0, 67, 133; + --tblr-link-hover-decoration: underline; + --tblr-code-color: var(--tblr-gray-600); + --tblr-highlight-bg: #fdeccc; + --tblr-border-width: 1px; + --tblr-border-style: solid; + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-radius: 4px; + --tblr-border-radius-sm: 2px; + --tblr-border-radius-lg: 8px; + --tblr-border-radius-xl: 1rem; + --tblr-border-radius-xxl: 2rem; + --tblr-border-radius-2xl: var(--tblr-border-radius-xxl); + --tblr-border-radius-pill: 100rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --tblr-box-shadow-inset: 0 0 transparent; + --tblr-focus-ring-width: 0.25rem; + --tblr-focus-ring-opacity: 0.25; + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), 0.25); + --tblr-form-valid-color: #2fb344; + --tblr-form-valid-border-color: #2fb344; + --tblr-form-invalid-color: #d63939; + --tblr-form-invalid-border-color: #d63939; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + color-scheme: dark; + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-body-bg: #040a11; + --tblr-body-bg-rgb: 4, 10, 17; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-secondary-color: rgba(252, 253, 254, 0.75); + --tblr-secondary-color-rgb: 252, 253, 254; + --tblr-secondary-bg: #182433; + --tblr-secondary-bg-rgb: 24, 36, 51; + --tblr-tertiary-color: rgba(252, 253, 254, 0.5); + --tblr-tertiary-color-rgb: 252, 253, 254; + --tblr-tertiary-bg: #0e1722; + --tblr-tertiary-bg-rgb: 14, 23, 34; + --tblr-primary-text-emphasis: #6698ca; + --tblr-secondary-text-emphasis: #a3abb4; + --tblr-success-text-emphasis: #82d18f; + --tblr-info-text-emphasis: #8ec2ed; + --tblr-warning-text-emphasis: #faa46a; + --tblr-danger-text-emphasis: #e68888; + --tblr-light-text-emphasis: #f6f8fb; + --tblr-dark-text-emphasis: #dadfe5; + --tblr-primary-bg-subtle: #001121; + --tblr-secondary-bg-subtle: #14171a; + --tblr-success-bg-subtle: #09240e; + --tblr-info-bg-subtle: #0d1f2d; + --tblr-warning-bg-subtle: #311501; + --tblr-danger-bg-subtle: #2b0b0b; + --tblr-light-bg-subtle: #182433; + --tblr-dark-bg-subtle: #0c121a; + --tblr-primary-border-subtle: #003264; + --tblr-secondary-border-subtle: #3d454e; + --tblr-success-border-subtle: #1c6b29; + --tblr-info-border-subtle: #285c87; + --tblr-warning-border-subtle: #943e04; + --tblr-danger-border-subtle: #802222; + --tblr-light-border-subtle: #3a4859; + --tblr-dark-border-subtle: #182433; + --tblr-heading-color: inherit; + --tblr-link-color: #6698ca; + --tblr-link-hover-color: #85add5; + --tblr-link-color-rgb: 102, 152, 202; + --tblr-link-hover-color-rgb: 133, 173, 213; + --tblr-code-color: var(--tblr-gray-300); + --tblr-border-color: #1f2e41; + --tblr-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-form-valid-color: #82d18f; + --tblr-form-valid-border-color: #82d18f; + --tblr-form-invalid-color: #e68888; + --tblr-form-invalid-border-color: #e68888; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--tblr-body-font-family); + font-size: var(--tblr-body-font-size); + font-weight: var(--tblr-body-font-weight); + line-height: var(--tblr-body-line-height); + color: var(--tblr-body-color); + text-align: var(--tblr-body-text-align); + background-color: var(--tblr-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr, .hr { + margin: 2rem 0; + color: inherit; + border: 0; + border-top: var(--tblr-border-width) solid; + opacity: 0.16; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: var(--tblr-spacer); + font-weight: var(--tblr-font-weight-bold); + line-height: 1.2; + color: var(--tblr-heading-color); +} + +h1, .h1 { + font-size: 1.5rem; +} + +h2, .h2 { + font-size: 1.25rem; +} + +h3, .h3 { + font-size: 1rem; +} + +h4, .h4 { + font-size: 0.875rem; +} + +h5, .h5 { + font-size: 0.75rem; +} + +h6, .h6 { + font-size: 0.625rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-right: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 600; +} + +dd { + margin-bottom: 0.5rem; + margin-right: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 85.714285%; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--tblr-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 1)); + text-decoration: none; +} +a:hover { + --tblr-link-color-rgb: var(--tblr-link-hover-color-rgb); + text-decoration: underline; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--tblr-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 85.714285%; + color: var(--tblr-light); +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 85.714285%; + color: var(--tblr-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.25rem 0.5rem; + font-size: var(--tblr-font-size-h5); + color: var(--tblr-text-secondary-dark); + background-color: var(--tblr-code-bg); + border-radius: 2px; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: var(--tblr-secondary-color); + text-align: right; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: right; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: 1.5rem; + line-height: inherit; +} +legend + * { + clear: right; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px; +} + +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 0.875rem; + font-weight: var(--tblr-font-weight-normal); +} + +.display-1 { + font-size: 5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-5 { + font-size: 3rem; + font-weight: 300; + line-height: 1.2; +} + +.display-6 { + font-size: 2rem; + font-weight: 300; + line-height: 1.2; +} + +.list-unstyled { + padding-right: 0; + list-style: none; +} + +.list-inline { + padding-right: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-left: 0.5rem; +} + +.initialism { + font-size: 85.714285%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 0.875rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 85.714285%; + color: #667382; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--tblr-body-bg); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-sm); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --tblr-breakpoint-xs: 0; + --tblr-breakpoint-sm: 576px; + --tblr-breakpoint-md: 768px; + --tblr-breakpoint-lg: 992px; + --tblr-breakpoint-xl: 1200px; + --tblr-breakpoint-xxl: 1400px; +} + +.row { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--tblr-gutter-y)); + margin-left: calc(-0.5 * var(--tblr-gutter-x)); + margin-right: calc(-0.5 * var(--tblr-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-top: var(--tblr-gutter-y); +} + +.grid { + display: grid; + grid-template-rows: repeat(var(--tblr-rows, 1), 1fr); + grid-template-columns: repeat(var(--tblr-columns, 12), 1fr); + gap: var(--tblr-gap, var(--tblr-page-padding)); +} +.grid .g-col-1 { + grid-column: auto/span 1; +} +.grid .g-col-2 { + grid-column: auto/span 2; +} +.grid .g-col-3 { + grid-column: auto/span 3; +} +.grid .g-col-4 { + grid-column: auto/span 4; +} +.grid .g-col-5 { + grid-column: auto/span 5; +} +.grid .g-col-6 { + grid-column: auto/span 6; +} +.grid .g-col-7 { + grid-column: auto/span 7; +} +.grid .g-col-8 { + grid-column: auto/span 8; +} +.grid .g-col-9 { + grid-column: auto/span 9; +} +.grid .g-col-10 { + grid-column: auto/span 10; +} +.grid .g-col-11 { + grid-column: auto/span 11; +} +.grid .g-col-12 { + grid-column: auto/span 12; +} +.grid .g-start-1 { + grid-column-start: 1; +} +.grid .g-start-2 { + grid-column-start: 2; +} +.grid .g-start-3 { + grid-column-start: 3; +} +.grid .g-start-4 { + grid-column-start: 4; +} +.grid .g-start-5 { + grid-column-start: 5; +} +.grid .g-start-6 { + grid-column-start: 6; +} +.grid .g-start-7 { + grid-column-start: 7; +} +.grid .g-start-8 { + grid-column-start: 8; +} +.grid .g-start-9 { + grid-column-start: 9; +} +.grid .g-start-10 { + grid-column-start: 10; +} +.grid .g-start-11 { + grid-column-start: 11; +} +@media (min-width: 576px) { + .grid .g-col-sm-1 { + grid-column: auto/span 1; + } + .grid .g-col-sm-2 { + grid-column: auto/span 2; + } + .grid .g-col-sm-3 { + grid-column: auto/span 3; + } + .grid .g-col-sm-4 { + grid-column: auto/span 4; + } + .grid .g-col-sm-5 { + grid-column: auto/span 5; + } + .grid .g-col-sm-6 { + grid-column: auto/span 6; + } + .grid .g-col-sm-7 { + grid-column: auto/span 7; + } + .grid .g-col-sm-8 { + grid-column: auto/span 8; + } + .grid .g-col-sm-9 { + grid-column: auto/span 9; + } + .grid .g-col-sm-10 { + grid-column: auto/span 10; + } + .grid .g-col-sm-11 { + grid-column: auto/span 11; + } + .grid .g-col-sm-12 { + grid-column: auto/span 12; + } + .grid .g-start-sm-1 { + grid-column-start: 1; + } + .grid .g-start-sm-2 { + grid-column-start: 2; + } + .grid .g-start-sm-3 { + grid-column-start: 3; + } + .grid .g-start-sm-4 { + grid-column-start: 4; + } + .grid .g-start-sm-5 { + grid-column-start: 5; + } + .grid .g-start-sm-6 { + grid-column-start: 6; + } + .grid .g-start-sm-7 { + grid-column-start: 7; + } + .grid .g-start-sm-8 { + grid-column-start: 8; + } + .grid .g-start-sm-9 { + grid-column-start: 9; + } + .grid .g-start-sm-10 { + grid-column-start: 10; + } + .grid .g-start-sm-11 { + grid-column-start: 11; + } +} +@media (min-width: 768px) { + .grid .g-col-md-1 { + grid-column: auto/span 1; + } + .grid .g-col-md-2 { + grid-column: auto/span 2; + } + .grid .g-col-md-3 { + grid-column: auto/span 3; + } + .grid .g-col-md-4 { + grid-column: auto/span 4; + } + .grid .g-col-md-5 { + grid-column: auto/span 5; + } + .grid .g-col-md-6 { + grid-column: auto/span 6; + } + .grid .g-col-md-7 { + grid-column: auto/span 7; + } + .grid .g-col-md-8 { + grid-column: auto/span 8; + } + .grid .g-col-md-9 { + grid-column: auto/span 9; + } + .grid .g-col-md-10 { + grid-column: auto/span 10; + } + .grid .g-col-md-11 { + grid-column: auto/span 11; + } + .grid .g-col-md-12 { + grid-column: auto/span 12; + } + .grid .g-start-md-1 { + grid-column-start: 1; + } + .grid .g-start-md-2 { + grid-column-start: 2; + } + .grid .g-start-md-3 { + grid-column-start: 3; + } + .grid .g-start-md-4 { + grid-column-start: 4; + } + .grid .g-start-md-5 { + grid-column-start: 5; + } + .grid .g-start-md-6 { + grid-column-start: 6; + } + .grid .g-start-md-7 { + grid-column-start: 7; + } + .grid .g-start-md-8 { + grid-column-start: 8; + } + .grid .g-start-md-9 { + grid-column-start: 9; + } + .grid .g-start-md-10 { + grid-column-start: 10; + } + .grid .g-start-md-11 { + grid-column-start: 11; + } +} +@media (min-width: 992px) { + .grid .g-col-lg-1 { + grid-column: auto/span 1; + } + .grid .g-col-lg-2 { + grid-column: auto/span 2; + } + .grid .g-col-lg-3 { + grid-column: auto/span 3; + } + .grid .g-col-lg-4 { + grid-column: auto/span 4; + } + .grid .g-col-lg-5 { + grid-column: auto/span 5; + } + .grid .g-col-lg-6 { + grid-column: auto/span 6; + } + .grid .g-col-lg-7 { + grid-column: auto/span 7; + } + .grid .g-col-lg-8 { + grid-column: auto/span 8; + } + .grid .g-col-lg-9 { + grid-column: auto/span 9; + } + .grid .g-col-lg-10 { + grid-column: auto/span 10; + } + .grid .g-col-lg-11 { + grid-column: auto/span 11; + } + .grid .g-col-lg-12 { + grid-column: auto/span 12; + } + .grid .g-start-lg-1 { + grid-column-start: 1; + } + .grid .g-start-lg-2 { + grid-column-start: 2; + } + .grid .g-start-lg-3 { + grid-column-start: 3; + } + .grid .g-start-lg-4 { + grid-column-start: 4; + } + .grid .g-start-lg-5 { + grid-column-start: 5; + } + .grid .g-start-lg-6 { + grid-column-start: 6; + } + .grid .g-start-lg-7 { + grid-column-start: 7; + } + .grid .g-start-lg-8 { + grid-column-start: 8; + } + .grid .g-start-lg-9 { + grid-column-start: 9; + } + .grid .g-start-lg-10 { + grid-column-start: 10; + } + .grid .g-start-lg-11 { + grid-column-start: 11; + } +} +@media (min-width: 1200px) { + .grid .g-col-xl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xl-1 { + grid-column-start: 1; + } + .grid .g-start-xl-2 { + grid-column-start: 2; + } + .grid .g-start-xl-3 { + grid-column-start: 3; + } + .grid .g-start-xl-4 { + grid-column-start: 4; + } + .grid .g-start-xl-5 { + grid-column-start: 5; + } + .grid .g-start-xl-6 { + grid-column-start: 6; + } + .grid .g-start-xl-7 { + grid-column-start: 7; + } + .grid .g-start-xl-8 { + grid-column-start: 8; + } + .grid .g-start-xl-9 { + grid-column-start: 9; + } + .grid .g-start-xl-10 { + grid-column-start: 10; + } + .grid .g-start-xl-11 { + grid-column-start: 11; + } +} +@media (min-width: 1400px) { + .grid .g-col-xxl-1 { + grid-column: auto/span 1; + } + .grid .g-col-xxl-2 { + grid-column: auto/span 2; + } + .grid .g-col-xxl-3 { + grid-column: auto/span 3; + } + .grid .g-col-xxl-4 { + grid-column: auto/span 4; + } + .grid .g-col-xxl-5 { + grid-column: auto/span 5; + } + .grid .g-col-xxl-6 { + grid-column: auto/span 6; + } + .grid .g-col-xxl-7 { + grid-column: auto/span 7; + } + .grid .g-col-xxl-8 { + grid-column: auto/span 8; + } + .grid .g-col-xxl-9 { + grid-column: auto/span 9; + } + .grid .g-col-xxl-10 { + grid-column: auto/span 10; + } + .grid .g-col-xxl-11 { + grid-column: auto/span 11; + } + .grid .g-col-xxl-12 { + grid-column: auto/span 12; + } + .grid .g-start-xxl-1 { + grid-column-start: 1; + } + .grid .g-start-xxl-2 { + grid-column-start: 2; + } + .grid .g-start-xxl-3 { + grid-column-start: 3; + } + .grid .g-start-xxl-4 { + grid-column-start: 4; + } + .grid .g-start-xxl-5 { + grid-column-start: 5; + } + .grid .g-start-xxl-6 { + grid-column-start: 6; + } + .grid .g-start-xxl-7 { + grid-column-start: 7; + } + .grid .g-start-xxl-8 { + grid-column-start: 8; + } + .grid .g-start-xxl-9 { + grid-column-start: 9; + } + .grid .g-start-xxl-10 { + grid-column-start: 10; + } + .grid .g-start-xxl-11 { + grid-column-start: 11; + } +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-right: 8.33333333%; +} + +.offset-2 { + margin-right: 16.66666667%; +} + +.offset-3 { + margin-right: 25%; +} + +.offset-4 { + margin-right: 33.33333333%; +} + +.offset-5 { + margin-right: 41.66666667%; +} + +.offset-6 { + margin-right: 50%; +} + +.offset-7 { + margin-right: 58.33333333%; +} + +.offset-8 { + margin-right: 66.66666667%; +} + +.offset-9 { + margin-right: 75%; +} + +.offset-10 { + margin-right: 83.33333333%; +} + +.offset-11 { + margin-right: 91.66666667%; +} + +.g-0, +.gx-0 { + --tblr-gutter-x: 0; +} + +.g-0, +.gy-0 { + --tblr-gutter-y: 0; +} + +.g-1, +.gx-1 { + --tblr-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --tblr-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --tblr-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --tblr-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --tblr-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --tblr-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --tblr-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --tblr-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --tblr-gutter-x: 2rem; +} + +.g-5, +.gy-5 { + --tblr-gutter-y: 2rem; +} + +.g-6, +.gx-6 { + --tblr-gutter-x: 3rem; +} + +.g-6, +.gy-6 { + --tblr-gutter-y: 3rem; +} + +.g-7, +.gx-7 { + --tblr-gutter-x: 5rem; +} + +.g-7, +.gy-7 { + --tblr-gutter-y: 5rem; +} + +.g-8, +.gx-8 { + --tblr-gutter-x: 8rem; +} + +.g-8, +.gy-8 { + --tblr-gutter-y: 8rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-right: 0; + } + .offset-sm-1 { + margin-right: 8.33333333%; + } + .offset-sm-2 { + margin-right: 16.66666667%; + } + .offset-sm-3 { + margin-right: 25%; + } + .offset-sm-4 { + margin-right: 33.33333333%; + } + .offset-sm-5 { + margin-right: 41.66666667%; + } + .offset-sm-6 { + margin-right: 50%; + } + .offset-sm-7 { + margin-right: 58.33333333%; + } + .offset-sm-8 { + margin-right: 66.66666667%; + } + .offset-sm-9 { + margin-right: 75%; + } + .offset-sm-10 { + margin-right: 83.33333333%; + } + .offset-sm-11 { + margin-right: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --tblr-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --tblr-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --tblr-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --tblr-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --tblr-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --tblr-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --tblr-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --tblr-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --tblr-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --tblr-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --tblr-gutter-x: 2rem; + } + .g-sm-5, + .gy-sm-5 { + --tblr-gutter-y: 2rem; + } + .g-sm-6, + .gx-sm-6 { + --tblr-gutter-x: 3rem; + } + .g-sm-6, + .gy-sm-6 { + --tblr-gutter-y: 3rem; + } + .g-sm-7, + .gx-sm-7 { + --tblr-gutter-x: 5rem; + } + .g-sm-7, + .gy-sm-7 { + --tblr-gutter-y: 5rem; + } + .g-sm-8, + .gx-sm-8 { + --tblr-gutter-x: 8rem; + } + .g-sm-8, + .gy-sm-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-right: 0; + } + .offset-md-1 { + margin-right: 8.33333333%; + } + .offset-md-2 { + margin-right: 16.66666667%; + } + .offset-md-3 { + margin-right: 25%; + } + .offset-md-4 { + margin-right: 33.33333333%; + } + .offset-md-5 { + margin-right: 41.66666667%; + } + .offset-md-6 { + margin-right: 50%; + } + .offset-md-7 { + margin-right: 58.33333333%; + } + .offset-md-8 { + margin-right: 66.66666667%; + } + .offset-md-9 { + margin-right: 75%; + } + .offset-md-10 { + margin-right: 83.33333333%; + } + .offset-md-11 { + margin-right: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --tblr-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --tblr-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --tblr-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --tblr-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --tblr-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --tblr-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --tblr-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --tblr-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --tblr-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --tblr-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --tblr-gutter-x: 2rem; + } + .g-md-5, + .gy-md-5 { + --tblr-gutter-y: 2rem; + } + .g-md-6, + .gx-md-6 { + --tblr-gutter-x: 3rem; + } + .g-md-6, + .gy-md-6 { + --tblr-gutter-y: 3rem; + } + .g-md-7, + .gx-md-7 { + --tblr-gutter-x: 5rem; + } + .g-md-7, + .gy-md-7 { + --tblr-gutter-y: 5rem; + } + .g-md-8, + .gx-md-8 { + --tblr-gutter-x: 8rem; + } + .g-md-8, + .gy-md-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-right: 0; + } + .offset-lg-1 { + margin-right: 8.33333333%; + } + .offset-lg-2 { + margin-right: 16.66666667%; + } + .offset-lg-3 { + margin-right: 25%; + } + .offset-lg-4 { + margin-right: 33.33333333%; + } + .offset-lg-5 { + margin-right: 41.66666667%; + } + .offset-lg-6 { + margin-right: 50%; + } + .offset-lg-7 { + margin-right: 58.33333333%; + } + .offset-lg-8 { + margin-right: 66.66666667%; + } + .offset-lg-9 { + margin-right: 75%; + } + .offset-lg-10 { + margin-right: 83.33333333%; + } + .offset-lg-11 { + margin-right: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --tblr-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --tblr-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --tblr-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --tblr-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --tblr-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --tblr-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --tblr-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --tblr-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --tblr-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --tblr-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --tblr-gutter-x: 2rem; + } + .g-lg-5, + .gy-lg-5 { + --tblr-gutter-y: 2rem; + } + .g-lg-6, + .gx-lg-6 { + --tblr-gutter-x: 3rem; + } + .g-lg-6, + .gy-lg-6 { + --tblr-gutter-y: 3rem; + } + .g-lg-7, + .gx-lg-7 { + --tblr-gutter-x: 5rem; + } + .g-lg-7, + .gy-lg-7 { + --tblr-gutter-y: 5rem; + } + .g-lg-8, + .gx-lg-8 { + --tblr-gutter-x: 8rem; + } + .g-lg-8, + .gy-lg-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-right: 0; + } + .offset-xl-1 { + margin-right: 8.33333333%; + } + .offset-xl-2 { + margin-right: 16.66666667%; + } + .offset-xl-3 { + margin-right: 25%; + } + .offset-xl-4 { + margin-right: 33.33333333%; + } + .offset-xl-5 { + margin-right: 41.66666667%; + } + .offset-xl-6 { + margin-right: 50%; + } + .offset-xl-7 { + margin-right: 58.33333333%; + } + .offset-xl-8 { + margin-right: 66.66666667%; + } + .offset-xl-9 { + margin-right: 75%; + } + .offset-xl-10 { + margin-right: 83.33333333%; + } + .offset-xl-11 { + margin-right: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --tblr-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --tblr-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --tblr-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --tblr-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --tblr-gutter-x: 2rem; + } + .g-xl-5, + .gy-xl-5 { + --tblr-gutter-y: 2rem; + } + .g-xl-6, + .gx-xl-6 { + --tblr-gutter-x: 3rem; + } + .g-xl-6, + .gy-xl-6 { + --tblr-gutter-y: 3rem; + } + .g-xl-7, + .gx-xl-7 { + --tblr-gutter-x: 5rem; + } + .g-xl-7, + .gy-xl-7 { + --tblr-gutter-y: 5rem; + } + .g-xl-8, + .gx-xl-8 { + --tblr-gutter-x: 8rem; + } + .g-xl-8, + .gy-xl-8 { + --tblr-gutter-y: 8rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-right: 0; + } + .offset-xxl-1 { + margin-right: 8.33333333%; + } + .offset-xxl-2 { + margin-right: 16.66666667%; + } + .offset-xxl-3 { + margin-right: 25%; + } + .offset-xxl-4 { + margin-right: 33.33333333%; + } + .offset-xxl-5 { + margin-right: 41.66666667%; + } + .offset-xxl-6 { + margin-right: 50%; + } + .offset-xxl-7 { + margin-right: 58.33333333%; + } + .offset-xxl-8 { + margin-right: 66.66666667%; + } + .offset-xxl-9 { + margin-right: 75%; + } + .offset-xxl-10 { + margin-right: 83.33333333%; + } + .offset-xxl-11 { + margin-right: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --tblr-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --tblr-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --tblr-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --tblr-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --tblr-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --tblr-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --tblr-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --tblr-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --tblr-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --tblr-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --tblr-gutter-x: 2rem; + } + .g-xxl-5, + .gy-xxl-5 { + --tblr-gutter-y: 2rem; + } + .g-xxl-6, + .gx-xxl-6 { + --tblr-gutter-x: 3rem; + } + .g-xxl-6, + .gy-xxl-6 { + --tblr-gutter-y: 3rem; + } + .g-xxl-7, + .gx-xxl-7 { + --tblr-gutter-x: 5rem; + } + .g-xxl-7, + .gy-xxl-7 { + --tblr-gutter-y: 5rem; + } + .g-xxl-8, + .gx-xxl-8 { + --tblr-gutter-x: 8rem; + } + .g-xxl-8, + .gy-xxl-8 { + --tblr-gutter-y: 8rem; + } +} +.table, .markdown > table { + --tblr-table-color-type: initial; + --tblr-table-bg-type: initial; + --tblr-table-color-state: initial; + --tblr-table-bg-state: initial; + --tblr-table-color: inherit; + --tblr-table-bg: transparent; + --tblr-table-border-color: var(--tblr-border-color-translucent); + --tblr-table-accent-bg: transparent; + --tblr-table-striped-color: inherit; + --tblr-table-striped-bg: var(--tblr-bg-surface-tertiary); + --tblr-table-active-color: inherit; + --tblr-table-active-bg: rgba(0, 0, 0, 0.1); + --tblr-table-hover-color: inherit; + --tblr-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--tblr-table-border-color); +} +.table > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + color: var(--tblr-table-color-state, var(--tblr-table-color-type, var(--tblr-table-color))); + background-color: var(--tblr-table-bg); + border-bottom-width: var(--tblr-border-width); + box-shadow: inset 0 0 0 9999px var(--tblr-table-bg-state, var(--tblr-table-bg-type, var(--tblr-table-accent-bg))); +} +.table > tbody, .markdown > table > tbody { + vertical-align: inherit; +} +.table > thead, .markdown > table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent); +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > *, .markdown > table > :not(caption) > * { + border-width: var(--tblr-border-width) 0; +} +.table-bordered > :not(caption) > * > *, .markdown > table > :not(caption) > * > * { + border-width: 0 var(--tblr-border-width); +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(even) > * { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --tblr-table-color-type: var(--tblr-table-striped-color); + --tblr-table-bg-type: var(--tblr-table-striped-bg); +} + +.table-active { + --tblr-table-color-state: var(--tblr-table-active-color); + --tblr-table-bg-state: var(--tblr-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --tblr-table-color-state: var(--tblr-table-hover-color); + --tblr-table-bg-state: var(--tblr-table-hover-bg); +} + +.table-primary { + --tblr-table-color: #182433; + --tblr-table-bg: #ccdded; + --tblr-table-border-color: #bacbda; + --tblr-table-striped-bg: #c3d4e4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #bacbda; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #bfcfdf; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-secondary { + --tblr-table-color: #182433; + --tblr-table-bg: #e0e3e6; + --tblr-table-border-color: #ccd0d4; + --tblr-table-striped-bg: #d6d9dd; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #ccd0d4; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #d1d5d9; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-success { + --tblr-table-color: #182433; + --tblr-table-bg: #d5f0da; + --tblr-table-border-color: #c2dcc9; + --tblr-table-striped-bg: #cce6d2; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c2dcc9; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #c7e1cd; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-info { + --tblr-table-color: #182433; + --tblr-table-bg: #d9ebf9; + --tblr-table-border-color: #c6d7e5; + --tblr-table-striped-bg: #cfe1ef; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #c6d7e5; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #cbdcea; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-warning { + --tblr-table-color: #182433; + --tblr-table-bg: #fde1cd; + --tblr-table-border-color: #e6cebe; + --tblr-table-striped-bg: #f2d8c5; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e6cebe; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ecd3c1; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-danger { + --tblr-table-color: #182433; + --tblr-table-bg: #f7d7d7; + --tblr-table-border-color: #e1c5c7; + --tblr-table-striped-bg: #eccecf; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e1c5c7; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #e6cacb; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-light { + --tblr-table-color: #182433; + --tblr-table-bg: #fcfdfe; + --tblr-table-border-color: #e5e7ea; + --tblr-table-striped-bg: #f1f2f4; + --tblr-table-striped-color: #182433; + --tblr-table-active-bg: #e5e7ea; + --tblr-table-active-color: #182433; + --tblr-table-hover-bg: #ebedef; + --tblr-table-hover-color: #182433; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-dark { + --tblr-table-color: #fcfdfe; + --tblr-table-bg: #182433; + --tblr-table-border-color: #2f3a47; + --tblr-table-striped-bg: #232f3d; + --tblr-table-striped-color: #fcfdfe; + --tblr-table-active-bg: #2f3a47; + --tblr-table-active-color: #fcfdfe; + --tblr-table-hover-bg: #293442; + --tblr-table-hover-color: #fcfdfe; + color: var(--tblr-table-color); + border-color: var(--tblr-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; + font-size: 0.875rem; + font-weight: var(--tblr-font-weight-medium); +} + +.col-form-label { + padding-top: calc(0.5625rem + var(--tblr-border-width)); + padding-bottom: calc(0.5625rem + var(--tblr-border-width)); + margin-bottom: 0; + font-size: inherit; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.4285714286; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--tblr-border-width)); + padding-bottom: calc(0.5rem + var(--tblr-border-width)); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.125rem + var(--tblr-border-width)); + padding-bottom: calc(0.125rem + var(--tblr-border-width)); + font-size: 0.75rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-secondary-color); +} + +.form-control { + display: block; + width: 100%; + padding: 0.5625rem 0.75rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-clip: padding-box; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--tblr-body-color); + background-color: var(--tblr-bg-forms); + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.4285714286em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-webkit-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::-ms-input-placeholder { + color: #929dab; + opacity: 1; +} +.form-control::placeholder { + color: #929dab; + opacity: 1; +} +.form-control:disabled { + background-color: var(--tblr-bg-surface-secondary); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.5625rem 0.75rem; + margin: -0.5625rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--tblr-body-color); + background-color: var(--tblr-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--tblr-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--tblr-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-secondary-bg); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.5625rem 0; + margin-bottom: 0; + line-height: 1.4285714286; + color: var(--tblr-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--tblr-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-left: 0; + padding-right: 0; +} + +.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} +.form-control-sm::file-selector-button { + padding: 0.125rem 0.25rem; + margin: -0.125rem -0.25rem; + -webkit-margin-end: 0.25rem; + margin-inline-end: 0.25rem; +} + +.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 0.75rem; + margin: -0.5rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; +} + +textarea.form-control { + min-height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + padding: 0.5625rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--tblr-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.4285714286em + 0.25rem + calc(var(--tblr-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2)); +} + +.form-select { + --tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.5625rem 0.75rem 0.5625rem 2.25rem; + font-family: var(--tblr-font-sans-serif); + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-bg-forms); + background-image: var(--tblr-form-select-bg-img), var(--tblr-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: left 0.75rem center; + background-size: 16px 12px; + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #80aad3; + outline: 0; + box-shadow: var(--tblr-box-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-left: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--tblr-bg-surface-secondary); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--tblr-body-color); +} + +.form-select-sm { + padding-top: 0.125rem; + padding-bottom: 0.125rem; + padding-right: 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-right: 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +[data-bs-theme=dark] .form-select, body[data-bs-theme=dark] [data-bs-theme=light] .form-select { + --tblr-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23fcfdfe' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} + +.form-check { + display: block; + min-height: 1.25rem; + padding-right: 2rem; + margin-bottom: 0.75rem; +} +.form-check .form-check-input { + float: right; + margin-right: -2rem; +} + +.form-check-reverse { + padding-left: 2rem; + padding-right: 0; + text-align: left; +} +.form-check-reverse .form-check-input { + float: left; + margin-left: -2rem; + margin-right: 0; +} + +.form-check-input { + --tblr-form-check-bg: var(--tblr-bg-forms); + width: 1.25rem; + height: 1.25rem; + margin-top: 0.0892857143rem; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-form-check-bg); + background-image: var(--tblr-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: var(--tblr-border-radius); +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #80aad3; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-check-input:checked { + background-color: var(--tblr-primary); + border-color: var(--tblr-border-color-translucent); +} +.form-check-input:checked[type=checkbox] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: var(--tblr-primary); + border-color: var(--tblr-primary); + --tblr-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.7; +} + +.form-switch { + padding-right: 2.5rem; +} +.form-switch .form-check-input { + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23dadfe5'/%3e%3c/svg%3e"); + width: 2rem; + margin-right: -2.5rem; + background-image: var(--tblr-form-switch-bg); + background-position: right center; + border-radius: 2rem; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2380aad3'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: left center; + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-left: 2.5rem; + padding-right: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-left: -2.5rem; + margin-right: 0; +} + +.form-check-inline { + display: inline-block; + margin-left: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.4; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --tblr-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} + +.form-range { + width: 100%; + height: 1.25rem; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #f6f8fb, 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.375rem; + -webkit-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b3cce4; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: var(--tblr-primary); + border: 2px var(--tblr-border-style) #ffffff; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b3cce4; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.25rem; + color: transparent; + cursor: pointer; + background-color: var(--tblr-border-color); + border-color: transparent; + border-radius: 1rem; + box-shadow: 0 0 transparent; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--tblr-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--tblr-secondary-color); +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--tblr-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--tblr-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + right: 0; + z-index: 2; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--tblr-border-width) solid transparent; + transform-origin: 100% 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::-webkit-input-placeholder, .form-floating > .form-control-plaintext::-webkit-input-placeholder { + color: transparent; +} +.form-floating > .form-control:-ms-input-placeholder, .form-floating > .form-control-plaintext:-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::-ms-input-placeholder, .form-floating > .form-control-plaintext::-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-ms-input-placeholder), .form-floating > .form-control-plaintext:not(:-ms-input-placeholder) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem); +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--tblr-bg-forms); + border-radius: var(--tblr-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--tblr-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--tblr-border-width) 0; +} +.form-floating > :disabled ~ label, +.form-floating > .form-control:disabled ~ label { + color: #667382; +} +.form-floating > :disabled ~ label::after, +.form-floating > .form-control:disabled ~ label::after { + background-color: var(--tblr-bg-surface-secondary); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.5625rem 0.75rem; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.4285714286; + color: var(--tblr-secondary); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-bg-surface-secondary); + border: var(--tblr-border-width) solid var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 0.75rem; + font-size: 1.25rem; + border-radius: var(--tblr-border-radius-lg); +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.125rem 0.25rem; + font-size: 0.75rem; + border-radius: var(--tblr-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-left: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-right: calc(var(--tblr-border-width) * -1); + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-success); + border-radius: var(--tblr-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--tblr-form-valid-border-color); + padding-left: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: left calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-left: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) left calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e"); + padding-left: 4.125rem; + background-position: left 0.75rem center, center left 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--tblr-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--tblr-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--tblr-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--tblr-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-right: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 85.714285%; + color: var(--tblr-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: var(--tblr-spacer-2) var(--tblr-spacer-2); + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--tblr-danger); + border-radius: var(--tblr-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--tblr-form-invalid-border-color); + padding-left: calc(1.4285714286em + 1.125rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: left calc(0.3571428572em + 0.28125rem) center; + background-size: calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-left: calc(1.4285714286em + 1.125rem); + background-position: top calc(0.3571428572em + 0.28125rem) left calc(0.3571428572em + 0.28125rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --tblr-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e"); + padding-left: 4.125rem; + background-position: left 0.75rem center, center left 2.25rem; + background-size: 16px 12px, calc(0.7142857143em + 0.5625rem) calc(0.7142857143em + 0.5625rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--tblr-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.4285714286em + 1.125rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--tblr-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--tblr-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--tblr-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-right: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --tblr-btn-padding-x: 1rem; + --tblr-btn-padding-y: 0.5625rem; + --tblr-btn-font-family: var(--tblr-font-sans-serif); + --tblr-btn-font-size: 0.875rem; + --tblr-btn-font-weight: var(--tblr-font-weight-medium); + --tblr-btn-line-height: 1.4285714286; + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-width: var(--tblr-border-width); + --tblr-btn-border-color: transparent; + --tblr-btn-border-radius: var(--tblr-border-radius); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-disabled-opacity: 0.4; + --tblr-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--tblr-btn-padding-y) var(--tblr-btn-padding-x); + font-family: var(--tblr-btn-font-family); + font-size: var(--tblr-btn-font-size); + font-weight: var(--tblr-btn-font-weight); + line-height: var(--tblr-btn-line-height); + color: var(--tblr-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-btn-border-width) solid var(--tblr-btn-border-color); + border-radius: var(--tblr-btn-border-radius); + background-color: var(--tblr-btn-bg); + box-shadow: var(--tblr-btn-box-shadow); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--tblr-btn-hover-color); + text-decoration: none; + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--tblr-btn-color); + background-color: var(--tblr-btn-bg); + border-color: var(--tblr-btn-border-color); +} +.btn:focus-visible { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--tblr-btn-hover-border-color); + outline: 0; + box-shadow: var(--tblr-btn-box-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--tblr-btn-active-color); + background-color: var(--tblr-btn-active-bg); + border-color: var(--tblr-btn-active-border-color); + box-shadow: var(--tblr-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--tblr-btn-active-shadow), var(--tblr-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--tblr-btn-disabled-color); + pointer-events: none; + background-color: var(--tblr-btn-disabled-bg); + border-color: var(--tblr-btn-disabled-border-color); + opacity: var(--tblr-btn-disabled-opacity); + box-shadow: none; +} + +.btn-link { + --tblr-btn-font-weight: 400; + --tblr-btn-color: var(--tblr-link-color); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-link-hover-color); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-color: var(--tblr-link-hover-color); + --tblr-btn-active-border-color: transparent; + --tblr-btn-disabled-color: #667382; + --tblr-btn-disabled-border-color: transparent; + --tblr-btn-box-shadow: 0 0 0 #000; + --tblr-btn-focus-shadow-rgb: 38, 109, 179; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--tblr-btn-color); +} +.btn-link:hover { + color: var(--tblr-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-padding-y: 0.5rem; + --tblr-btn-padding-x: 0.75rem; + --tblr-btn-font-size: 1.25rem; + --tblr-btn-border-radius: var(--tblr-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-padding-y: 0.125rem; + --tblr-btn-padding-x: 0.25rem; + --tblr-btn-font-size: 0.75rem; + --tblr-btn-border-radius: var(--tblr-border-radius-sm); +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(45deg); +} + +.dropdown-menu { + --tblr-dropdown-zindex: 1000; + --tblr-dropdown-min-width: 11rem; + --tblr-dropdown-padding-x: 0; + --tblr-dropdown-padding-y: 0.25rem; + --tblr-dropdown-spacer: 1px; + --tblr-dropdown-font-size: 0.875rem; + --tblr-dropdown-color: var(--tblr-body-color); + --tblr-dropdown-bg: var(--tblr-bg-surface); + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-border-radius: var(--tblr-border-radius); + --tblr-dropdown-border-width: var(--tblr-border-width); + --tblr-dropdown-inner-border-radius: calc(var(--tblr-border-radius) - var(--tblr-border-width)); + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-divider-margin-y: var(--tblr-spacer); + --tblr-dropdown-box-shadow: var(--tblr-box-shadow-dropdown); + --tblr-dropdown-link-color: inherit; + --tblr-dropdown-link-hover-color: inherit; + --tblr-dropdown-link-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: var(--tblr-tertiary-color); + --tblr-dropdown-item-padding-x: 0.75rem; + --tblr-dropdown-item-padding-y: 0.5rem; + --tblr-dropdown-header-color: #667382; + --tblr-dropdown-header-padding-x: 0.75rem; + --tblr-dropdown-header-padding-y: 0.25rem; + position: absolute; + z-index: var(--tblr-dropdown-zindex); + display: none; + min-width: var(--tblr-dropdown-min-width); + padding: var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x); + margin: 0; + font-size: var(--tblr-dropdown-font-size); + color: var(--tblr-dropdown-color); + text-align: right; + list-style: none; + background-color: var(--tblr-dropdown-bg); + background-clip: padding-box; + border: var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color); + border-radius: var(--tblr-dropdown-border-radius); + box-shadow: var(--tblr-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + right: 0; + margin-top: var(--tblr-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + left: auto; + right: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + left: 0; + right: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + left: 0; + right: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + left: auto; + right: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + left: 0; + right: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--tblr-dropdown-spacer); +} +.dropup .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(-135deg); +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + left: auto; + right: 100%; + margin-top: 0; + margin-right: var(--tblr-dropdown-spacer); +} +.dropend .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(135deg); +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + left: 100%; + right: auto; + margin-top: 0; + margin-left: var(--tblr-dropdown-spacer); +} +.dropstart .dropdown-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(-45deg); +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--tblr-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--tblr-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--tblr-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--tblr-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--tblr-dropdown-link-hover-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--tblr-dropdown-link-active-color); + text-decoration: none; + background-color: var(--tblr-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--tblr-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.765625rem; + color: var(--tblr-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x); + color: var(--tblr-dropdown-link-color); +} + +.dropdown-menu-dark { + --tblr-dropdown-color: #dadfe5; + --tblr-dropdown-bg: #182433; + --tblr-dropdown-border-color: var(--tblr-border-color-translucent); + --tblr-dropdown-box-shadow: ; + --tblr-dropdown-link-color: #dadfe5; + --tblr-dropdown-link-hover-color: #ffffff; + --tblr-dropdown-divider-bg: var(--tblr-border-color-translucent); + --tblr-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --tblr-dropdown-link-active-color: var(--tblr-primary); + --tblr-dropdown-link-active-bg: var(--tblr-active-bg); + --tblr-dropdown-link-disabled-color: #929dab; + --tblr-dropdown-header-color: #929dab; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: var(--tblr-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-right: calc(var(--tblr-border-width) * -1); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.dropdown-toggle-split { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-right: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-left: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-left: 0.1875rem; + padding-right: 0.1875rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-left: 0.5625rem; + padding-right: 0.5625rem; +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--tblr-border-width) * -1); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav { + --tblr-nav-link-padding-x: 0.75rem; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-secondary); + --tblr-nav-link-hover-color: var(--tblr-link-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-disabled-color); + display: flex; + flex-wrap: wrap; + padding-right: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x); + font-size: var(--tblr-nav-link-font-size); + font-weight: var(--tblr-nav-link-font-weight); + color: var(--tblr-nav-link-color); + background: none; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--tblr-nav-link-hover-color); + text-decoration: none; +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--tblr-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --tblr-nav-tabs-border-width: var(--tblr-border-width); + --tblr-nav-tabs-border-color: var(--tblr-border-color); + --tblr-nav-tabs-border-radius: var(--tblr-border-radius); + --tblr-nav-tabs-link-hover-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + --tblr-nav-tabs-link-active-color: var(--tblr-body-color); + --tblr-nav-tabs-link-active-bg: var(--tblr-body-bg); + --tblr-nav-tabs-link-active-border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color); + border-bottom: var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--tblr-nav-tabs-border-width)); + border: var(--tblr-nav-tabs-border-width) solid transparent; + border-top-right-radius: var(--tblr-nav-tabs-border-radius); + border-top-left-radius: var(--tblr-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--tblr-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--tblr-nav-tabs-link-active-color); + background-color: var(--tblr-nav-tabs-link-active-bg); + border-color: var(--tblr-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--tblr-nav-tabs-border-width)); + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.nav-pills { + --tblr-nav-pills-border-radius: var(--tblr-border-radius); + --tblr-nav-pills-link-active-color: var(--tblr-primary); + --tblr-nav-pills-link-active-bg: var(--tblr-active-bg); +} +.nav-pills .nav-link { + border-radius: var(--tblr-nav-pills-border-radius); +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--tblr-nav-pills-link-active-color); + background-color: var(--tblr-nav-pills-link-active-bg); +} + +.nav-underline { + --tblr-nav-underline-gap: 1rem; + --tblr-nav-underline-border-width: 0.125rem; + --tblr-nav-underline-link-active-color: var(--tblr-emphasis-color); + gap: var(--tblr-nav-underline-gap); +} +.nav-underline .nav-link { + padding-left: 0; + padding-right: 0; + border-bottom: var(--tblr-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 600; + color: var(--tblr-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --tblr-navbar-padding-x: 0; + --tblr-navbar-padding-y: 0.25rem; + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-hover-color: rgba(var(--tblr-emphasis-color-rgb), 0.8); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: var(--tblr-body-color) color; + --tblr-navbar-brand-padding-y: 0.5rem; + --tblr-navbar-brand-margin-end: 1rem; + --tblr-navbar-brand-font-size: 1.25rem; + --tblr-navbar-brand-color: var(--tblr-body-color); + --tblr-navbar-brand-hover-color: var(--tblr-body-color) color; + --tblr-navbar-nav-link-padding-x: 0.75rem; + --tblr-navbar-toggler-padding-y: 0; + --tblr-navbar-toggler-padding-x: 0; + --tblr-navbar-toggler-font-size: 1rem; + --tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --tblr-navbar-toggler-border-color: rgba(var(--tblr-emphasis-color-rgb), 0.15); + --tblr-navbar-toggler-border-radius: var(--tblr-border-radius); + --tblr-navbar-toggler-focus-width: 0; + --tblr-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--tblr-navbar-brand-padding-y); + padding-bottom: var(--tblr-navbar-brand-padding-y); + margin-left: var(--tblr-navbar-brand-margin-end); + font-size: var(--tblr-navbar-brand-font-size); + color: var(--tblr-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--tblr-navbar-brand-hover-color); + text-decoration: none; +} + +.navbar-nav { + --tblr-nav-link-padding-x: 0; + --tblr-nav-link-padding-y: 0.5rem; + --tblr-nav-link-font-weight: ; + --tblr-nav-link-color: var(--tblr-navbar-color); + --tblr-nav-link-hover-color: var(--tblr-navbar-hover-color); + --tblr-nav-link-disabled-color: var(--tblr-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-right: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--tblr-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--tblr-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--tblr-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x); + font-size: var(--tblr-navbar-toggler-font-size); + line-height: 1; + color: var(--tblr-navbar-color); + background-color: transparent; + border: var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color); + border-radius: var(--tblr-navbar-toggler-border-radius); + transition: var(--tblr-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--tblr-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--tblr-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--tblr-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-left: var(--tblr-navbar-nav-link-padding-x); + padding-right: var(--tblr-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark, +.navbar[data-bs-theme=dark], +body[data-bs-theme=dark] .navbar[data-bs-theme=light] { + --tblr-navbar-color: rgba(255, 255, 255, 0.7); + --tblr-navbar-hover-color: rgba(255, 255, 255, 0.75); + --tblr-navbar-disabled-color: var(--tblr-disabled-color); + --tblr-navbar-active-color: #ffffff; + --tblr-navbar-brand-color: #ffffff; + --tblr-navbar-brand-hover-color: #ffffff; + --tblr-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +[data-bs-theme=dark] .navbar-toggler-icon, body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon { + --tblr-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --tblr-card-spacer-y: 1.25rem; + --tblr-card-spacer-x: 1.25rem; + --tblr-card-title-spacer-y: 1.25rem; + --tblr-card-title-color: ; + --tblr-card-subtitle-color: ; + --tblr-card-border-width: var(--tblr-border-width); + --tblr-card-border-color: var(--tblr-border-color-translucent); + --tblr-card-border-radius: var(--tblr-border-radius); + --tblr-card-box-shadow: var(--tblr-shadow-card); + --tblr-card-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-card-cap-padding-y: 1.25rem; + --tblr-card-cap-padding-x: 1.25rem; + --tblr-card-cap-bg: var(--tblr-bg-surface-tertiary); + --tblr-card-cap-color: inherit; + --tblr-card-height: ; + --tblr-card-color: inherit; + --tblr-card-bg: var(--tblr-bg-surface); + --tblr-card-img-overlay-padding: 1rem; + --tblr-card-group-margin: 1.5rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--tblr-card-height); + color: var(--tblr-body-color); + word-wrap: break-word; + background-color: var(--tblr-card-bg); + background-clip: border-box; + border: var(--tblr-card-border-width) solid var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius); + box-shadow: var(--tblr-card-box-shadow); +} +.card > hr, .card > .hr { + margin-left: 0; + margin-right: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-right-radius: var(--tblr-card-inner-border-radius); + border-top-left-radius: var(--tblr-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-left-radius: var(--tblr-card-inner-border-radius); + border-bottom-right-radius: var(--tblr-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--tblr-card-spacer-y) var(--tblr-card-spacer-x); + color: var(--tblr-card-color); +} + +.card-title { + margin-bottom: var(--tblr-card-title-spacer-y); + color: var(--tblr-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--tblr-card-title-spacer-y)); + margin-bottom: 0; + color: var(--tblr-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-right: var(--tblr-card-spacer-x); +} + +.card-header { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + margin-bottom: 0; + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-bottom: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-header:first-child { + border-radius: var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x); + color: var(--tblr-card-cap-color); + background-color: var(--tblr-card-cap-bg); + border-top: var(--tblr-card-border-width) solid var(--tblr-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius); +} + +.card-header-tabs { + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--tblr-card-cap-padding-y)); + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--tblr-card-bg); + border-bottom-color: var(--tblr-card-bg); +} + +.card-header-pills { + margin-left: calc(-0.5 * var(--tblr-card-cap-padding-x)); + margin-right: calc(-0.5 * var(--tblr-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: var(--tblr-card-img-overlay-padding); + border-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-right-radius: var(--tblr-card-inner-border-radius); + border-top-left-radius: var(--tblr-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-left-radius: var(--tblr-card-inner-border-radius); + border-bottom-right-radius: var(--tblr-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--tblr-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-right: 0; + border-right: 0; + } + .card-group > .card:not(:last-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-right-radius: 0; + } +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); + --tblr-accordion-bg: transparent; + --tblr-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --tblr-accordion-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-border-width: var(--tblr-border-width); + --tblr-accordion-border-radius: var(--tblr-border-radius); + --tblr-accordion-inner-border-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + --tblr-accordion-btn-padding-x: 1.25rem; + --tblr-accordion-btn-padding-y: 1rem; + --tblr-accordion-btn-color: var(--tblr-body-color); + --tblr-accordion-btn-bg: transparent; + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --tblr-accordion-btn-icon-width: 1rem; + --tblr-accordion-btn-icon-transform: rotate(-180deg); + --tblr-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --tblr-accordion-btn-focus-border-color: var(--tblr-border-color-translucent); + --tblr-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-accordion-body-padding-x: 1.25rem; + --tblr-accordion-body-padding-y: 1rem; + --tblr-accordion-active-color: inherit; + --tblr-accordion-active-bg: transparent; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x); + font-size: 0.875rem; + color: var(--tblr-accordion-btn-color); + text-align: right; + background-color: var(--tblr-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--tblr-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--tblr-accordion-active-color); + background-color: var(--tblr-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--tblr-accordion-btn-active-icon); + transform: var(--tblr-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--tblr-accordion-btn-icon-width); + height: var(--tblr-accordion-btn-icon-width); + margin-right: auto; + content: ""; + background-image: var(--tblr-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--tblr-accordion-btn-icon-width); + transition: var(--tblr-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--tblr-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--tblr-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--tblr-accordion-color); + background-color: var(--tblr-accordion-bg); + border: var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-right-radius: var(--tblr-accordion-border-radius); + border-top-left-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-right-radius: var(--tblr-accordion-inner-border-radius); + border-top-left-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-left-radius: var(--tblr-accordion-border-radius); + border-bottom-right-radius: var(--tblr-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-left-radius: var(--tblr-accordion-inner-border-radius); + border-bottom-right-radius: var(--tblr-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-left-radius: var(--tblr-accordion-border-radius); + border-bottom-right-radius: var(--tblr-accordion-border-radius); +} + +.accordion-body { + padding: var(--tblr-accordion-body-padding-y) var(--tblr-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-left: 0; + border-right: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --tblr-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --tblr-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.breadcrumb { + --tblr-breadcrumb-padding-x: 0; + --tblr-breadcrumb-padding-y: 0; + --tblr-breadcrumb-margin-bottom: 1rem; + --tblr-breadcrumb-bg: ; + --tblr-breadcrumb-border-radius: ; + --tblr-breadcrumb-divider-color: var(--tblr-secondary); + --tblr-breadcrumb-item-padding-x: 0.5rem; + --tblr-breadcrumb-item-active-color: inherit; + display: flex; + flex-wrap: wrap; + padding: var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x); + margin-bottom: var(--tblr-breadcrumb-margin-bottom); + font-size: var(--tblr-breadcrumb-font-size); + list-style: none; + background-color: var(--tblr-breadcrumb-bg); + border-radius: var(--tblr-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-right: var(--tblr-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: right; + padding-left: var(--tblr-breadcrumb-item-padding-x); + color: var(--tblr-breadcrumb-divider-color); + content: var(--tblr-breadcrumb-divider, "/") ; +} +.breadcrumb-item.active { + color: var(--tblr-breadcrumb-item-active-color); +} + +.pagination { + --tblr-pagination-padding-x: 0.25rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.875rem; + --tblr-pagination-color: var(--tblr-secondary); + --tblr-pagination-bg: transparent; + --tblr-pagination-border-width: 0; + --tblr-pagination-border-color: var(--tblr-border-color); + --tblr-pagination-border-radius: var(--tblr-border-radius); + --tblr-pagination-hover-color: var(--tblr-link-hover-color); + --tblr-pagination-hover-bg: var(--tblr-tertiary-bg); + --tblr-pagination-hover-border-color: var(--tblr-border-color); + --tblr-pagination-focus-color: var(--tblr-link-hover-color); + --tblr-pagination-focus-bg: var(--tblr-secondary-bg); + --tblr-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-pagination-active-color: #ffffff; + --tblr-pagination-active-bg: var(--tblr-primary); + --tblr-pagination-active-border-color: var(--tblr-primary); + --tblr-pagination-disabled-color: var(--tblr-disabled-color); + --tblr-pagination-disabled-bg: transparent; + --tblr-pagination-disabled-border-color: var(--tblr-border-color); + display: flex; + padding-right: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x); + font-size: var(--tblr-pagination-font-size); + color: var(--tblr-pagination-color); + background-color: var(--tblr-pagination-bg); + border: var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--tblr-pagination-hover-color); + text-decoration: none; + background-color: var(--tblr-pagination-hover-bg); + border-color: var(--tblr-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--tblr-pagination-focus-color); + background-color: var(--tblr-pagination-focus-bg); + outline: 0; + box-shadow: var(--tblr-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--tblr-pagination-active-color); + background-color: var(--tblr-pagination-active-bg); + border-color: var(--tblr-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--tblr-pagination-disabled-color); + pointer-events: none; + background-color: var(--tblr-pagination-disabled-bg); + border-color: var(--tblr-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-right: calc(0 * -1); +} +.page-item:first-child .page-link { + border-top-right-radius: var(--tblr-pagination-border-radius); + border-bottom-right-radius: var(--tblr-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-left-radius: var(--tblr-pagination-border-radius); + border-bottom-left-radius: var(--tblr-pagination-border-radius); +} + +.pagination-lg { + --tblr-pagination-padding-x: 1.5rem; + --tblr-pagination-padding-y: 0.75rem; + --tblr-pagination-font-size: 1.09375rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-lg); +} + +.pagination-sm { + --tblr-pagination-padding-x: 0.5rem; + --tblr-pagination-padding-y: 0.25rem; + --tblr-pagination-font-size: 0.765625rem; + --tblr-pagination-border-radius: var(--tblr-border-radius-sm); +} + +.badge { + --tblr-badge-padding-x: 0.5em; + --tblr-badge-padding-y: 0.25em; + --tblr-badge-font-size: 85.714285%; + --tblr-badge-font-weight: var(--tblr-font-weight-medium); + --tblr-badge-color: var(--tblr-secondary); + --tblr-badge-border-radius: var(--tblr-border-radius); + display: inline-block; + padding: var(--tblr-badge-padding-y) var(--tblr-badge-padding-x); + font-size: var(--tblr-badge-font-size); + font-weight: var(--tblr-badge-font-weight); + line-height: 1; + color: var(--tblr-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--tblr-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --tblr-alert-bg: transparent; + --tblr-alert-padding-x: 1rem; + --tblr-alert-padding-y: 0.75rem; + --tblr-alert-margin-bottom: 1rem; + --tblr-alert-color: inherit; + --tblr-alert-border-color: transparent; + --tblr-alert-border: var(--tblr-border-width) solid var(--tblr-alert-border-color); + --tblr-alert-border-radius: var(--tblr-border-radius); + --tblr-alert-link-color: inherit; + position: relative; + padding: var(--tblr-alert-padding-y) var(--tblr-alert-padding-x); + margin-bottom: var(--tblr-alert-margin-bottom); + color: var(--tblr-alert-color); + background-color: var(--tblr-alert-bg); + border: var(--tblr-alert-border); + border-radius: var(--tblr-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: var(--tblr-font-weight-bold); + color: var(--tblr-alert-link-color); +} + +.alert-dismissible { + padding-left: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + left: 0; + z-index: 2; + padding: 0.9375rem 1rem; +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary-text-emphasis); + --tblr-alert-bg: var(--tblr-primary-bg-subtle); + --tblr-alert-border-color: var(--tblr-primary-border-subtle); + --tblr-alert-link-color: var(--tblr-primary-text-emphasis); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary-text-emphasis); + --tblr-alert-bg: var(--tblr-secondary-bg-subtle); + --tblr-alert-border-color: var(--tblr-secondary-border-subtle); + --tblr-alert-link-color: var(--tblr-secondary-text-emphasis); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success-text-emphasis); + --tblr-alert-bg: var(--tblr-success-bg-subtle); + --tblr-alert-border-color: var(--tblr-success-border-subtle); + --tblr-alert-link-color: var(--tblr-success-text-emphasis); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info-text-emphasis); + --tblr-alert-bg: var(--tblr-info-bg-subtle); + --tblr-alert-border-color: var(--tblr-info-border-subtle); + --tblr-alert-link-color: var(--tblr-info-text-emphasis); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning-text-emphasis); + --tblr-alert-bg: var(--tblr-warning-bg-subtle); + --tblr-alert-border-color: var(--tblr-warning-border-subtle); + --tblr-alert-link-color: var(--tblr-warning-text-emphasis); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger-text-emphasis); + --tblr-alert-bg: var(--tblr-danger-bg-subtle); + --tblr-alert-border-color: var(--tblr-danger-border-subtle); + --tblr-alert-link-color: var(--tblr-danger-text-emphasis); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light-text-emphasis); + --tblr-alert-bg: var(--tblr-light-bg-subtle); + --tblr-alert-border-color: var(--tblr-light-border-subtle); + --tblr-alert-link-color: var(--tblr-light-text-emphasis); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark-text-emphasis); + --tblr-alert-bg: var(--tblr-dark-bg-subtle); + --tblr-alert-border-color: var(--tblr-dark-border-subtle); + --tblr-alert-link-color: var(--tblr-dark-text-emphasis); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted-text-emphasis); + --tblr-alert-bg: var(--tblr-muted-bg-subtle); + --tblr-alert-border-color: var(--tblr-muted-border-subtle); + --tblr-alert-link-color: var(--tblr-muted-text-emphasis); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue-text-emphasis); + --tblr-alert-bg: var(--tblr-blue-bg-subtle); + --tblr-alert-border-color: var(--tblr-blue-border-subtle); + --tblr-alert-link-color: var(--tblr-blue-text-emphasis); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure-text-emphasis); + --tblr-alert-bg: var(--tblr-azure-bg-subtle); + --tblr-alert-border-color: var(--tblr-azure-border-subtle); + --tblr-alert-link-color: var(--tblr-azure-text-emphasis); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo-text-emphasis); + --tblr-alert-bg: var(--tblr-indigo-bg-subtle); + --tblr-alert-border-color: var(--tblr-indigo-border-subtle); + --tblr-alert-link-color: var(--tblr-indigo-text-emphasis); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple-text-emphasis); + --tblr-alert-bg: var(--tblr-purple-bg-subtle); + --tblr-alert-border-color: var(--tblr-purple-border-subtle); + --tblr-alert-link-color: var(--tblr-purple-text-emphasis); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink-text-emphasis); + --tblr-alert-bg: var(--tblr-pink-bg-subtle); + --tblr-alert-border-color: var(--tblr-pink-border-subtle); + --tblr-alert-link-color: var(--tblr-pink-text-emphasis); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red-text-emphasis); + --tblr-alert-bg: var(--tblr-red-bg-subtle); + --tblr-alert-border-color: var(--tblr-red-border-subtle); + --tblr-alert-link-color: var(--tblr-red-text-emphasis); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange-text-emphasis); + --tblr-alert-bg: var(--tblr-orange-bg-subtle); + --tblr-alert-border-color: var(--tblr-orange-border-subtle); + --tblr-alert-link-color: var(--tblr-orange-text-emphasis); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow-text-emphasis); + --tblr-alert-bg: var(--tblr-yellow-bg-subtle); + --tblr-alert-border-color: var(--tblr-yellow-border-subtle); + --tblr-alert-link-color: var(--tblr-yellow-text-emphasis); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime-text-emphasis); + --tblr-alert-bg: var(--tblr-lime-bg-subtle); + --tblr-alert-border-color: var(--tblr-lime-border-subtle); + --tblr-alert-link-color: var(--tblr-lime-text-emphasis); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green-text-emphasis); + --tblr-alert-bg: var(--tblr-green-bg-subtle); + --tblr-alert-border-color: var(--tblr-green-border-subtle); + --tblr-alert-link-color: var(--tblr-green-text-emphasis); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal-text-emphasis); + --tblr-alert-bg: var(--tblr-teal-bg-subtle); + --tblr-alert-border-color: var(--tblr-teal-border-subtle); + --tblr-alert-link-color: var(--tblr-teal-text-emphasis); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan-text-emphasis); + --tblr-alert-bg: var(--tblr-cyan-bg-subtle); + --tblr-alert-border-color: var(--tblr-cyan-border-subtle); + --tblr-alert-link-color: var(--tblr-cyan-text-emphasis); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook-text-emphasis); + --tblr-alert-bg: var(--tblr-facebook-bg-subtle); + --tblr-alert-border-color: var(--tblr-facebook-border-subtle); + --tblr-alert-link-color: var(--tblr-facebook-text-emphasis); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter-text-emphasis); + --tblr-alert-bg: var(--tblr-twitter-bg-subtle); + --tblr-alert-border-color: var(--tblr-twitter-border-subtle); + --tblr-alert-link-color: var(--tblr-twitter-text-emphasis); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin-text-emphasis); + --tblr-alert-bg: var(--tblr-linkedin-bg-subtle); + --tblr-alert-border-color: var(--tblr-linkedin-border-subtle); + --tblr-alert-link-color: var(--tblr-linkedin-text-emphasis); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google-text-emphasis); + --tblr-alert-bg: var(--tblr-google-bg-subtle); + --tblr-alert-border-color: var(--tblr-google-border-subtle); + --tblr-alert-link-color: var(--tblr-google-text-emphasis); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube-text-emphasis); + --tblr-alert-bg: var(--tblr-youtube-bg-subtle); + --tblr-alert-border-color: var(--tblr-youtube-border-subtle); + --tblr-alert-link-color: var(--tblr-youtube-text-emphasis); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo-text-emphasis); + --tblr-alert-bg: var(--tblr-vimeo-bg-subtle); + --tblr-alert-border-color: var(--tblr-vimeo-border-subtle); + --tblr-alert-link-color: var(--tblr-vimeo-text-emphasis); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble-text-emphasis); + --tblr-alert-bg: var(--tblr-dribbble-bg-subtle); + --tblr-alert-border-color: var(--tblr-dribbble-border-subtle); + --tblr-alert-link-color: var(--tblr-dribbble-text-emphasis); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github-text-emphasis); + --tblr-alert-bg: var(--tblr-github-bg-subtle); + --tblr-alert-border-color: var(--tblr-github-border-subtle); + --tblr-alert-link-color: var(--tblr-github-text-emphasis); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram-text-emphasis); + --tblr-alert-bg: var(--tblr-instagram-bg-subtle); + --tblr-alert-border-color: var(--tblr-instagram-border-subtle); + --tblr-alert-link-color: var(--tblr-instagram-text-emphasis); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest-text-emphasis); + --tblr-alert-bg: var(--tblr-pinterest-bg-subtle); + --tblr-alert-border-color: var(--tblr-pinterest-border-subtle); + --tblr-alert-link-color: var(--tblr-pinterest-text-emphasis); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk-text-emphasis); + --tblr-alert-bg: var(--tblr-vk-bg-subtle); + --tblr-alert-border-color: var(--tblr-vk-border-subtle); + --tblr-alert-link-color: var(--tblr-vk-text-emphasis); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss-text-emphasis); + --tblr-alert-bg: var(--tblr-rss-bg-subtle); + --tblr-alert-border-color: var(--tblr-rss-border-subtle); + --tblr-alert-link-color: var(--tblr-rss-text-emphasis); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr-text-emphasis); + --tblr-alert-bg: var(--tblr-flickr-bg-subtle); + --tblr-alert-border-color: var(--tblr-flickr-border-subtle); + --tblr-alert-link-color: var(--tblr-flickr-text-emphasis); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket-text-emphasis); + --tblr-alert-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-alert-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-alert-link-color: var(--tblr-bitbucket-text-emphasis); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler-text-emphasis); + --tblr-alert-bg: var(--tblr-tabler-bg-subtle); + --tblr-alert-border-color: var(--tblr-tabler-border-subtle); + --tblr-alert-link-color: var(--tblr-tabler-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 0.5rem; + } +} +.progress, +.progress-stacked { + --tblr-progress-height: 0.5rem; + --tblr-progress-font-size: 0.65625rem; + --tblr-progress-bg: var(--tblr-border-color); + --tblr-progress-border-radius: var(--tblr-border-radius); + --tblr-progress-box-shadow: var(--tblr-box-shadow-inset); + --tblr-progress-bar-color: #ffffff; + --tblr-progress-bar-bg: var(--tblr-primary); + --tblr-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--tblr-progress-height); + overflow: hidden; + font-size: var(--tblr-progress-font-size); + background-color: var(--tblr-progress-bg); + border-radius: var(--tblr-progress-border-radius); + box-shadow: var(--tblr-progress-box-shadow); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--tblr-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--tblr-progress-bar-bg); + transition: var(--tblr-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--tblr-progress-height) var(--tblr-progress-height); +} + +.progress-stacked > .progress { + overflow: visible; +} + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --tblr-list-group-color: var(--tblr-body-color); + --tblr-list-group-bg: inherit; + --tblr-list-group-border-color: var(--tblr-border-color); + --tblr-list-group-border-width: var(--tblr-border-width); + --tblr-list-group-border-radius: var(--tblr-border-radius); + --tblr-list-group-item-padding-x: 1.25rem; + --tblr-list-group-item-padding-y: 1.25rem; + --tblr-list-group-action-color: inherit; + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: rgba(var(--tblr-text-secondary-rgb), 0.04); + --tblr-list-group-action-active-color: var(--tblr-body-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-bg); + --tblr-list-group-disabled-color: var(--tblr-secondary-color); + --tblr-list-group-disabled-bg: inherit; + --tblr-list-group-active-color: inherit; + --tblr-list-group-active-bg: var(--tblr-active-bg); + --tblr-list-group-active-border-color: var(--tblr-border-color); + display: flex; + flex-direction: column; + padding-right: 0; + margin-bottom: 0; + border-radius: var(--tblr-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--tblr-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--tblr-list-group-action-hover-color); + text-decoration: none; + background-color: var(--tblr-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--tblr-list-group-action-active-color); + background-color: var(--tblr-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x); + color: var(--tblr-list-group-color); + background-color: var(--tblr-list-group-bg); + border: var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color); +} +.list-group-item:first-child { + border-top-right-radius: inherit; + border-top-left-radius: inherit; +} +.list-group-item:last-child { + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--tblr-list-group-disabled-color); + pointer-events: none; + background-color: var(--tblr-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--tblr-list-group-active-color); + background-color: var(--tblr-list-group-active-bg); + border-color: var(--tblr-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--tblr-list-group-border-width)); + border-top-width: var(--tblr-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-right-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-right-radius: var(--tblr-list-group-border-radius); + border-top-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-left-radius: var(--tblr-list-group-border-radius); + border-bottom-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--tblr-list-group-border-width); + border-right-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-right: calc(-1 * var(--tblr-list-group-border-width)); + border-right-width: var(--tblr-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--tblr-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --tblr-list-group-color: var(--tblr-primary-text-emphasis); + --tblr-list-group-bg: var(--tblr-primary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-primary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-primary-border-subtle); + --tblr-list-group-active-color: var(--tblr-primary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-primary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-primary-text-emphasis); +} + +.list-group-item-secondary { + --tblr-list-group-color: var(--tblr-secondary-text-emphasis); + --tblr-list-group-bg: var(--tblr-secondary-bg-subtle); + --tblr-list-group-border-color: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-secondary-border-subtle); + --tblr-list-group-active-color: var(--tblr-secondary-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-secondary-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-secondary-text-emphasis); +} + +.list-group-item-success { + --tblr-list-group-color: var(--tblr-success-text-emphasis); + --tblr-list-group-bg: var(--tblr-success-bg-subtle); + --tblr-list-group-border-color: var(--tblr-success-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-success-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-success-border-subtle); + --tblr-list-group-active-color: var(--tblr-success-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-success-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-success-text-emphasis); +} + +.list-group-item-info { + --tblr-list-group-color: var(--tblr-info-text-emphasis); + --tblr-list-group-bg: var(--tblr-info-bg-subtle); + --tblr-list-group-border-color: var(--tblr-info-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-info-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-info-border-subtle); + --tblr-list-group-active-color: var(--tblr-info-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-info-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-info-text-emphasis); +} + +.list-group-item-warning { + --tblr-list-group-color: var(--tblr-warning-text-emphasis); + --tblr-list-group-bg: var(--tblr-warning-bg-subtle); + --tblr-list-group-border-color: var(--tblr-warning-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-warning-border-subtle); + --tblr-list-group-active-color: var(--tblr-warning-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-warning-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-warning-text-emphasis); +} + +.list-group-item-danger { + --tblr-list-group-color: var(--tblr-danger-text-emphasis); + --tblr-list-group-bg: var(--tblr-danger-bg-subtle); + --tblr-list-group-border-color: var(--tblr-danger-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-danger-border-subtle); + --tblr-list-group-active-color: var(--tblr-danger-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-danger-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-danger-text-emphasis); +} + +.list-group-item-light { + --tblr-list-group-color: var(--tblr-light-text-emphasis); + --tblr-list-group-bg: var(--tblr-light-bg-subtle); + --tblr-list-group-border-color: var(--tblr-light-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-light-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-light-border-subtle); + --tblr-list-group-active-color: var(--tblr-light-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-light-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-light-text-emphasis); +} + +.list-group-item-dark { + --tblr-list-group-color: var(--tblr-dark-text-emphasis); + --tblr-list-group-bg: var(--tblr-dark-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dark-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dark-border-subtle); + --tblr-list-group-active-color: var(--tblr-dark-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dark-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dark-text-emphasis); +} + +.list-group-item-muted { + --tblr-list-group-color: var(--tblr-muted-text-emphasis); + --tblr-list-group-bg: var(--tblr-muted-bg-subtle); + --tblr-list-group-border-color: var(--tblr-muted-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-muted-border-subtle); + --tblr-list-group-active-color: var(--tblr-muted-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-muted-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-muted-text-emphasis); +} + +.list-group-item-blue { + --tblr-list-group-color: var(--tblr-blue-text-emphasis); + --tblr-list-group-bg: var(--tblr-blue-bg-subtle); + --tblr-list-group-border-color: var(--tblr-blue-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-blue-border-subtle); + --tblr-list-group-active-color: var(--tblr-blue-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-blue-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-blue-text-emphasis); +} + +.list-group-item-azure { + --tblr-list-group-color: var(--tblr-azure-text-emphasis); + --tblr-list-group-bg: var(--tblr-azure-bg-subtle); + --tblr-list-group-border-color: var(--tblr-azure-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-azure-border-subtle); + --tblr-list-group-active-color: var(--tblr-azure-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-azure-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-azure-text-emphasis); +} + +.list-group-item-indigo { + --tblr-list-group-color: var(--tblr-indigo-text-emphasis); + --tblr-list-group-bg: var(--tblr-indigo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-indigo-border-subtle); + --tblr-list-group-active-color: var(--tblr-indigo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-indigo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-indigo-text-emphasis); +} + +.list-group-item-purple { + --tblr-list-group-color: var(--tblr-purple-text-emphasis); + --tblr-list-group-bg: var(--tblr-purple-bg-subtle); + --tblr-list-group-border-color: var(--tblr-purple-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-purple-border-subtle); + --tblr-list-group-active-color: var(--tblr-purple-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-purple-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-purple-text-emphasis); +} + +.list-group-item-pink { + --tblr-list-group-color: var(--tblr-pink-text-emphasis); + --tblr-list-group-bg: var(--tblr-pink-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pink-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pink-border-subtle); + --tblr-list-group-active-color: var(--tblr-pink-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pink-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pink-text-emphasis); +} + +.list-group-item-red { + --tblr-list-group-color: var(--tblr-red-text-emphasis); + --tblr-list-group-bg: var(--tblr-red-bg-subtle); + --tblr-list-group-border-color: var(--tblr-red-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-red-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-red-border-subtle); + --tblr-list-group-active-color: var(--tblr-red-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-red-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-red-text-emphasis); +} + +.list-group-item-orange { + --tblr-list-group-color: var(--tblr-orange-text-emphasis); + --tblr-list-group-bg: var(--tblr-orange-bg-subtle); + --tblr-list-group-border-color: var(--tblr-orange-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-orange-border-subtle); + --tblr-list-group-active-color: var(--tblr-orange-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-orange-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-orange-text-emphasis); +} + +.list-group-item-yellow { + --tblr-list-group-color: var(--tblr-yellow-text-emphasis); + --tblr-list-group-bg: var(--tblr-yellow-bg-subtle); + --tblr-list-group-border-color: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-yellow-border-subtle); + --tblr-list-group-active-color: var(--tblr-yellow-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-yellow-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-yellow-text-emphasis); +} + +.list-group-item-lime { + --tblr-list-group-color: var(--tblr-lime-text-emphasis); + --tblr-list-group-bg: var(--tblr-lime-bg-subtle); + --tblr-list-group-border-color: var(--tblr-lime-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-lime-border-subtle); + --tblr-list-group-active-color: var(--tblr-lime-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-lime-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-lime-text-emphasis); +} + +.list-group-item-green { + --tblr-list-group-color: var(--tblr-green-text-emphasis); + --tblr-list-group-bg: var(--tblr-green-bg-subtle); + --tblr-list-group-border-color: var(--tblr-green-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-green-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-green-border-subtle); + --tblr-list-group-active-color: var(--tblr-green-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-green-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-green-text-emphasis); +} + +.list-group-item-teal { + --tblr-list-group-color: var(--tblr-teal-text-emphasis); + --tblr-list-group-bg: var(--tblr-teal-bg-subtle); + --tblr-list-group-border-color: var(--tblr-teal-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-teal-border-subtle); + --tblr-list-group-active-color: var(--tblr-teal-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-teal-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-teal-text-emphasis); +} + +.list-group-item-cyan { + --tblr-list-group-color: var(--tblr-cyan-text-emphasis); + --tblr-list-group-bg: var(--tblr-cyan-bg-subtle); + --tblr-list-group-border-color: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-cyan-border-subtle); + --tblr-list-group-active-color: var(--tblr-cyan-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-cyan-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-cyan-text-emphasis); +} + +.list-group-item-facebook { + --tblr-list-group-color: var(--tblr-facebook-text-emphasis); + --tblr-list-group-bg: var(--tblr-facebook-bg-subtle); + --tblr-list-group-border-color: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-facebook-border-subtle); + --tblr-list-group-active-color: var(--tblr-facebook-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-facebook-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-facebook-text-emphasis); +} + +.list-group-item-twitter { + --tblr-list-group-color: var(--tblr-twitter-text-emphasis); + --tblr-list-group-bg: var(--tblr-twitter-bg-subtle); + --tblr-list-group-border-color: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-twitter-border-subtle); + --tblr-list-group-active-color: var(--tblr-twitter-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-twitter-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-twitter-text-emphasis); +} + +.list-group-item-linkedin { + --tblr-list-group-color: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-bg: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-border-color: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-linkedin-border-subtle); + --tblr-list-group-active-color: var(--tblr-linkedin-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-linkedin-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-linkedin-text-emphasis); +} + +.list-group-item-google { + --tblr-list-group-color: var(--tblr-google-text-emphasis); + --tblr-list-group-bg: var(--tblr-google-bg-subtle); + --tblr-list-group-border-color: var(--tblr-google-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-google-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-google-border-subtle); + --tblr-list-group-active-color: var(--tblr-google-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-google-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-google-text-emphasis); +} + +.list-group-item-youtube { + --tblr-list-group-color: var(--tblr-youtube-text-emphasis); + --tblr-list-group-bg: var(--tblr-youtube-bg-subtle); + --tblr-list-group-border-color: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-youtube-border-subtle); + --tblr-list-group-active-color: var(--tblr-youtube-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-youtube-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-youtube-text-emphasis); +} + +.list-group-item-vimeo { + --tblr-list-group-color: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-bg: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vimeo-border-subtle); + --tblr-list-group-active-color: var(--tblr-vimeo-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vimeo-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vimeo-text-emphasis); +} + +.list-group-item-dribbble { + --tblr-list-group-color: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-bg: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-border-color: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-dribbble-border-subtle); + --tblr-list-group-active-color: var(--tblr-dribbble-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-dribbble-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-dribbble-text-emphasis); +} + +.list-group-item-github { + --tblr-list-group-color: var(--tblr-github-text-emphasis); + --tblr-list-group-bg: var(--tblr-github-bg-subtle); + --tblr-list-group-border-color: var(--tblr-github-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-github-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-github-border-subtle); + --tblr-list-group-active-color: var(--tblr-github-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-github-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-github-text-emphasis); +} + +.list-group-item-instagram { + --tblr-list-group-color: var(--tblr-instagram-text-emphasis); + --tblr-list-group-bg: var(--tblr-instagram-bg-subtle); + --tblr-list-group-border-color: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-instagram-border-subtle); + --tblr-list-group-active-color: var(--tblr-instagram-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-instagram-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-instagram-text-emphasis); +} + +.list-group-item-pinterest { + --tblr-list-group-color: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-bg: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-border-color: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-pinterest-border-subtle); + --tblr-list-group-active-color: var(--tblr-pinterest-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-pinterest-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-pinterest-text-emphasis); +} + +.list-group-item-vk { + --tblr-list-group-color: var(--tblr-vk-text-emphasis); + --tblr-list-group-bg: var(--tblr-vk-bg-subtle); + --tblr-list-group-border-color: var(--tblr-vk-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-vk-border-subtle); + --tblr-list-group-active-color: var(--tblr-vk-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-vk-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-vk-text-emphasis); +} + +.list-group-item-rss { + --tblr-list-group-color: var(--tblr-rss-text-emphasis); + --tblr-list-group-bg: var(--tblr-rss-bg-subtle); + --tblr-list-group-border-color: var(--tblr-rss-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-rss-border-subtle); + --tblr-list-group-active-color: var(--tblr-rss-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-rss-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-rss-text-emphasis); +} + +.list-group-item-flickr { + --tblr-list-group-color: var(--tblr-flickr-text-emphasis); + --tblr-list-group-bg: var(--tblr-flickr-bg-subtle); + --tblr-list-group-border-color: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-flickr-border-subtle); + --tblr-list-group-active-color: var(--tblr-flickr-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-flickr-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-flickr-text-emphasis); +} + +.list-group-item-bitbucket { + --tblr-list-group-color: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-bg: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-border-color: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-bitbucket-border-subtle); + --tblr-list-group-active-color: var(--tblr-bitbucket-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-bitbucket-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-bitbucket-text-emphasis); +} + +.list-group-item-tabler { + --tblr-list-group-color: var(--tblr-tabler-text-emphasis); + --tblr-list-group-bg: var(--tblr-tabler-bg-subtle); + --tblr-list-group-border-color: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-hover-color: var(--tblr-emphasis-color); + --tblr-list-group-action-hover-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-action-active-color: var(--tblr-emphasis-color); + --tblr-list-group-action-active-bg: var(--tblr-tabler-border-subtle); + --tblr-list-group-active-color: var(--tblr-tabler-bg-subtle); + --tblr-list-group-active-bg: var(--tblr-tabler-text-emphasis); + --tblr-list-group-active-border-color: var(--tblr-tabler-text-emphasis); +} + +.btn-close { + --tblr-btn-close-color: #182433; + --tblr-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --tblr-btn-close-opacity: 0.4; + --tblr-btn-close-hover-opacity: 0.75; + --tblr-btn-close-focus-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + --tblr-btn-close-focus-opacity: 1; + --tblr-btn-close-disabled-opacity: 0.25; + --tblr-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--tblr-btn-close-color); + background: transparent var(--tblr-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 4px; + opacity: var(--tblr-btn-close-opacity); +} +.btn-close:hover { + color: var(--tblr-btn-close-color); + text-decoration: none; + opacity: var(--tblr-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--tblr-btn-close-focus-shadow); + opacity: var(--tblr-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: var(--tblr-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--tblr-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close, body[data-bs-theme=dark] [data-bs-theme=light] .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.toast { + --tblr-toast-zindex: 1090; + --tblr-toast-padding-x: 0.75rem; + --tblr-toast-padding-y: 0.5rem; + --tblr-toast-spacing: calc(var(--tblr-page-padding) * 2); + --tblr-toast-max-width: 350px; + --tblr-toast-font-size: 0.875rem; + --tblr-toast-color: ; + --tblr-toast-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-border-width: var(--tblr-border-width); + --tblr-toast-border-color: var(--tblr-border-color); + --tblr-toast-border-radius: var(--tblr-border-radius); + --tblr-toast-box-shadow: var(--tblr-box-shadow); + --tblr-toast-header-color: var(--tblr-secondary); + --tblr-toast-header-bg: rgba(var(--tblr-body-bg-rgb), 0.85); + --tblr-toast-header-border-color: var(--tblr-border-color); + width: var(--tblr-toast-max-width); + max-width: 100%; + font-size: var(--tblr-toast-font-size); + color: var(--tblr-toast-color); + pointer-events: auto; + background-color: var(--tblr-toast-bg); + background-clip: padding-box; + border: var(--tblr-toast-border-width) solid var(--tblr-toast-border-color); + box-shadow: var(--tblr-toast-box-shadow); + border-radius: var(--tblr-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --tblr-toast-zindex: 1090; + position: absolute; + z-index: var(--tblr-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--tblr-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--tblr-toast-padding-y) var(--tblr-toast-padding-x); + color: var(--tblr-toast-header-color); + background-color: var(--tblr-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color); + border-top-right-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); + border-top-left-radius: calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width)); +} +.toast-header .btn-close { + margin-left: calc(-0.5 * var(--tblr-toast-padding-x)); + margin-right: var(--tblr-toast-padding-x); +} + +.toast-body { + padding: var(--tblr-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --tblr-modal-zindex: 1055; + --tblr-modal-width: 540px; + --tblr-modal-padding: 1.5rem; + --tblr-modal-margin: 0.5rem; + --tblr-modal-color: ; + --tblr-modal-bg: var(--tblr-bg-surface); + --tblr-modal-border-color: transparent; + --tblr-modal-border-width: var(--tblr-border-width); + --tblr-modal-border-radius: var(--tblr-border-radius-lg); + --tblr-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-modal-inner-border-radius: calc(var(--tblr-modal-border-radius) - 1px); + --tblr-modal-header-padding-x: 1.5rem; + --tblr-modal-header-padding-y: 1.5rem; + --tblr-modal-header-padding: 1.5rem; + --tblr-modal-header-border-color: var(--tblr-border-color); + --tblr-modal-header-border-width: var(--tblr-border-width); + --tblr-modal-title-line-height: 1.4285714286; + --tblr-modal-footer-gap: 0.75rem; + --tblr-modal-footer-bg: var(--tblr-bg-surface-tertiary); + --tblr-modal-footer-border-color: var(--tblr-border-color); + --tblr-modal-footer-border-width: var(--tblr-border-width); + position: fixed; + top: 0; + right: 0; + z-index: var(--tblr-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--tblr-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -1rem); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--tblr-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--tblr-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--tblr-modal-color); + pointer-events: auto; + background-color: var(--tblr-modal-bg); + background-clip: padding-box; + border: var(--tblr-modal-border-width) solid var(--tblr-modal-border-color); + border-radius: var(--tblr-modal-border-radius); + box-shadow: var(--tblr-modal-box-shadow); + outline: 0; +} + +.modal-backdrop { + --tblr-backdrop-zindex: 1050; + --tblr-backdrop-bg: #182433; + --tblr-backdrop-opacity: 0.24; + position: fixed; + top: 0; + right: 0; + z-index: var(--tblr-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--tblr-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--tblr-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--tblr-modal-header-padding); + border-bottom: var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color); + border-top-right-radius: var(--tblr-modal-inner-border-radius); + border-top-left-radius: var(--tblr-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--tblr-modal-header-padding-y) * 0.5) calc(var(--tblr-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--tblr-modal-header-padding-y)) auto calc(-0.5 * var(--tblr-modal-header-padding-y)) calc(-0.5 * var(--tblr-modal-header-padding-x)); +} + +.modal-title { + margin-bottom: 0; + line-height: var(--tblr-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--tblr-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * 0.5); + background-color: var(--tblr-modal-footer-bg); + border-top: var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color); + border-bottom-left-radius: var(--tblr-modal-inner-border-radius); + border-bottom-right-radius: var(--tblr-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--tblr-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --tblr-modal-margin: 1.75rem; + --tblr-modal-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + } + .modal-dialog { + max-width: var(--tblr-modal-width); + margin-left: auto; + margin-right: auto; + } + .modal-sm { + --tblr-modal-width: 380px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --tblr-modal-width: 720px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --tblr-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --tblr-tooltip-zindex: 1080; + --tblr-tooltip-max-width: 200px; + --tblr-tooltip-padding-x: var(--tblr-spacer-2); + --tblr-tooltip-padding-y: var(--tblr-spacer-2); + --tblr-tooltip-margin: ; + --tblr-tooltip-font-size: 0.765625rem; + --tblr-tooltip-color: var(--tblr-light); + --tblr-tooltip-bg: var(--tblr-bg-surface-dark); + --tblr-tooltip-border-radius: var(--tblr-border-radius); + --tblr-tooltip-opacity: 0.9; + --tblr-tooltip-arrow-width: 0.8rem; + --tblr-tooltip-arrow-height: 0.4rem; + z-index: var(--tblr-tooltip-zindex); + display: block; + margin: var(--tblr-tooltip-margin); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + text-align: right; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--tblr-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--tblr-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--tblr-tooltip-arrow-width); + height: var(--tblr-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--tblr-tooltip-bg); +} +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--tblr-tooltip-bg); +} +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--tblr-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-bottom-color: var(--tblr-tooltip-bg); +} +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--tblr-tooltip-arrow-height)); + width: var(--tblr-tooltip-arrow-height); + height: var(--tblr-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--tblr-tooltip-arrow-width) * 0.5) 0 calc(var(--tblr-tooltip-arrow-width) * 0.5) var(--tblr-tooltip-arrow-height); + border-left-color: var(--tblr-tooltip-bg); +} +.tooltip-inner { + max-width: var(--tblr-tooltip-max-width); + padding: var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x); + color: var(--tblr-tooltip-color); + text-align: center; + background-color: var(--tblr-tooltip-bg); + border-radius: var(--tblr-tooltip-border-radius); +} + +.popover { + --tblr-popover-zindex: 1070; + --tblr-popover-max-width: 276px; + --tblr-popover-font-size: 0.765625rem; + --tblr-popover-bg: var(--tblr-bg-surface); + --tblr-popover-border-width: var(--tblr-border-width); + --tblr-popover-border-color: var(--tblr-border-color); + --tblr-popover-border-radius: var(--tblr-border-radius-lg); + --tblr-popover-inner-border-radius: calc(var(--tblr-border-radius-lg) - var(--tblr-border-width)); + --tblr-popover-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-popover-header-padding-x: 1rem; + --tblr-popover-header-padding-y: 0.5rem; + --tblr-popover-header-font-size: 0.875rem; + --tblr-popover-header-color: inherit; + --tblr-popover-header-bg: transparent; + --tblr-popover-body-padding-x: 1rem; + --tblr-popover-body-padding-y: 1rem; + --tblr-popover-body-color: inherit; + --tblr-popover-arrow-width: 1rem; + --tblr-popover-arrow-height: 0.5rem; + --tblr-popover-arrow-border: var(--tblr-popover-border-color); + z-index: var(--tblr-popover-zindex); + display: block; + max-width: var(--tblr-popover-max-width); + font-family: var(--tblr-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.4285714286; + text-align: right; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--tblr-popover-font-size); + word-wrap: break-word; + background-color: var(--tblr-popover-bg); + background-clip: padding-box; + border: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-radius: var(--tblr-popover-border-radius); + box-shadow: var(--tblr-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--tblr-popover-arrow-width); + height: var(--tblr-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--tblr-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--tblr-popover-border-width); + border-top-color: var(--tblr-popover-bg); +} +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--tblr-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--tblr-popover-border-width); + border-right-color: var(--tblr-popover-bg); +} +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--tblr-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--tblr-popover-border-width); + border-bottom-color: var(--tblr-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + right: 50%; + display: block; + width: var(--tblr-popover-arrow-width); + margin-right: calc(-0.5 * var(--tblr-popover-arrow-width)); + content: ""; + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg); +} +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width)); + width: var(--tblr-popover-arrow-height); + height: var(--tblr-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--tblr-popover-arrow-width) * 0.5) 0 calc(var(--tblr-popover-arrow-width) * 0.5) var(--tblr-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--tblr-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--tblr-popover-border-width); + border-left-color: var(--tblr-popover-bg); +} +.popover-header { + padding: var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--tblr-popover-header-font-size); + color: var(--tblr-popover-header-color); + background-color: var(--tblr-popover-header-bg); + border-bottom: var(--tblr-popover-border-width) solid var(--tblr-popover-border-color); + border-top-right-radius: var(--tblr-popover-inner-border-radius); + border-top-left-radius: var(--tblr-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x); + color: var(--tblr-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: right; + width: 100%; + margin-left: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(-100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #ffffff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + right: 0; +} + +.carousel-control-next { + left: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 1.5rem; + height: 1.5rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + left: 0; + bottom: 0; + right: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-left: 15%; + margin-bottom: 1rem; + margin-right: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-left: 3px; + margin-right: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #ffffff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + left: 15%; + bottom: 1.25rem; + right: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #ffffff; + text-align: center; +} + +.carousel-dark .carousel-control-next-icon, +.carousel-dark .carousel-control-prev-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000000; +} +.carousel-dark .carousel-caption { + color: #000000; +} + +[data-bs-theme=dark] .carousel .carousel-control-next-icon, +[data-bs-theme=dark] .carousel .carousel-control-prev-icon, [data-bs-theme=dark].carousel .carousel-control-next-icon, +[data-bs-theme=dark].carousel .carousel-control-prev-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { + background-color: #000000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--tblr-spinner-width); + height: var(--tblr-spinner-height); + vertical-align: var(--tblr-spinner-vertical-align); + border-radius: 50%; + animation: var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) ; + } +} +.spinner-border { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-border-width: 2px; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-border; + border: var(--tblr-spinner-border-width) solid currentcolor; + border-left-color: transparent; +} + +.spinner-border-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; + --tblr-spinner-border-width: 1px; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --tblr-spinner-width: 1.5rem; + --tblr-spinner-height: 1.5rem; + --tblr-spinner-vertical-align: -0.125em; + --tblr-spinner-animation-speed: 0.75s; + --tblr-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --tblr-spinner-width: 1rem; + --tblr-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --tblr-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --tblr-offcanvas-zindex: 1045; + --tblr-offcanvas-width: 400px; + --tblr-offcanvas-height: 30vh; + --tblr-offcanvas-padding-x: 1.5rem; + --tblr-offcanvas-padding-y: 1.5rem; + --tblr-offcanvas-color: var(--tblr-body-color); + --tblr-offcanvas-bg: var(--tblr-bg-surface); + --tblr-offcanvas-border-width: var(--tblr-border-width); + --tblr-offcanvas-border-color: var(--tblr-border-color); + --tblr-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --tblr-offcanvas-transition: transform 0.3s ease-in-out; + --tblr-offcanvas-title-line-height: 1.4285714286; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --tblr-offcanvas-height: auto; + --tblr-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--tblr-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--tblr-offcanvas-color); + visibility: hidden; + background-color: var(--tblr-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--tblr-offcanvas-box-shadow); + transition: var(--tblr-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + right: 0; + width: var(--tblr-offcanvas-width); + border-left: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-end { + top: 0; + left: 0; + width: var(--tblr-offcanvas-width); + border-right: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-top { + top: 0; + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-bottom: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + left: 0; + right: 0; + height: var(--tblr-offcanvas-height); + max-height: 100%; + border-top: var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + right: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #182433; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.24; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--tblr-offcanvas-padding-y) * 0.5) calc(var(--tblr-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--tblr-offcanvas-padding-y)); + margin-left: calc(-0.5 * var(--tblr-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--tblr-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--tblr-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.2; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.1; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 95%); + mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.9) 75%, #000000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-primary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-success-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-info-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-warning-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-danger-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #182433 !important; + background-color: RGBA(var(--tblr-light-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dark-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-muted { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-muted-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-blue { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-blue-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-azure { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-azure-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-indigo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-purple { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-purple-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pink { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pink-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-red { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-red-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-orange { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-orange-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-yellow { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-lime { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-lime-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-green { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-green-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-teal { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-teal-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-cyan { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-facebook { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-twitter { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-linkedin { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-google { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-google-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-youtube { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vimeo { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-dribbble { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-github { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-github-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-instagram { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-pinterest { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-vk { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-vk-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-rss { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-rss-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-flickr { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-bitbucket { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.text-bg-tabler { + color: #fcfdfe !important; + background-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--tblr-success-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-success-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--tblr-info-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-info-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--tblr-light-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-light-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(253, 253, 254, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(253, 253, 254, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(19, 29, 41, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 29, 41, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-muted { + color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-muted:hover, .link-muted:focus { + color: RGBA(82, 92, 104, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(82, 92, 104, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-blue { + color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-blue:hover, .link-blue:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-azure { + color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-azure:hover, .link-azure:focus { + color: RGBA(53, 122, 180, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 122, 180, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-indigo { + color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-indigo:hover, .link-indigo:focus { + color: RGBA(53, 79, 188, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(53, 79, 188, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-purple { + color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-purple:hover, .link-purple:focus { + color: RGBA(139, 50, 161, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(139, 50, 161, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pink { + color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pink:hover, .link-pink:focus { + color: RGBA(171, 41, 86, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 41, 86, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-red { + color: RGBA(var(--tblr-red-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-red-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-red:hover, .link-red:focus { + color: RGBA(171, 46, 46, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(171, 46, 46, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-orange { + color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-orange:hover, .link-orange:focus { + color: RGBA(198, 82, 6, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(198, 82, 6, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-yellow { + color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-yellow:hover, .link-yellow:focus { + color: RGBA(196, 127, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(196, 127, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-lime { + color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-lime:hover, .link-lime:focus { + color: RGBA(93, 147, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(93, 147, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-green { + color: RGBA(var(--tblr-green-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-green-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-green:hover, .link-green:focus { + color: RGBA(38, 143, 54, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(38, 143, 54, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-teal { + color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-teal:hover, .link-teal:focus { + color: RGBA(10, 133, 96, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 133, 96, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-cyan { + color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-cyan:hover, .link-cyan:focus { + color: RGBA(18, 130, 147, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(18, 130, 147, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-facebook { + color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-facebook:hover, .link-facebook:focus { + color: RGBA(19, 95, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 95, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-twitter { + color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-twitter:hover, .link-twitter:focus { + color: RGBA(23, 129, 194, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(23, 129, 194, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-linkedin { + color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-linkedin:hover, .link-linkedin:focus { + color: RGBA(8, 82, 155, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(8, 82, 155, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-google { + color: RGBA(var(--tblr-google-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-google-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-google:hover, .link-google:focus { + color: RGBA(176, 62, 52, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 62, 52, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-youtube { + color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-youtube:hover, .link-youtube:focus { + color: RGBA(204, 0, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 0, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vimeo { + color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vimeo:hover, .link-vimeo:focus { + color: RGBA(21, 146, 187, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(21, 146, 187, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-dribbble { + color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-dribbble:hover, .link-dribbble:focus { + color: RGBA(187, 61, 110, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(187, 61, 110, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-github { + color: RGBA(var(--tblr-github-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-github-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-github:hover, .link-github:focus { + color: RGBA(19, 18, 18, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(19, 18, 18, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-instagram { + color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-instagram:hover, .link-instagram:focus { + color: RGBA(182, 51, 76, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(182, 51, 76, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-pinterest { + color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-pinterest:hover, .link-pinterest:focus { + color: RGBA(151, 6, 22, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(151, 6, 22, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-vk { + color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-vk:hover, .link-vk:focus { + color: RGBA(79, 105, 134, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(79, 105, 134, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-rss { + color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-rss:hover, .link-rss:focus { + color: RGBA(204, 132, 0, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(204, 132, 0, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-flickr { + color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-flickr:hover, .link-flickr:focus { + color: RGBA(0, 79, 176, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 79, 176, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-bitbucket { + color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-bitbucket:hover, .link-bitbucket:focus { + color: RGBA(0, 66, 163, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 66, 163, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-tabler { + color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-tabler:hover, .link-tabler:focus { + color: RGBA(0, 67, 133, var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(0, 67, 133, var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--tblr-emphasis-color-rgb), var(--tblr-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--tblr-focus-ring-x, 0) var(--tblr-focus-ring-y, 0) var(--tblr-focus-ring-blur, 0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 0.5)); + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-opacity, 0.5)); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--tblr-icon-link-transform, translate3d(-0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--tblr-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --tblr-aspect-ratio: 100%; +} + +.ratio-2x1 { + --tblr-aspect-ratio: 50%; +} + +.ratio-1x2 { + --tblr-aspect-ratio: 200%; +} + +.ratio-3x1 { + --tblr-aspect-ratio: 33.3333333333%; +} + +.ratio-1x3 { + --tblr-aspect-ratio: 300%; +} + +.ratio-4x3 { + --tblr-aspect-ratio: 75%; +} + +.ratio-3x4 { + --tblr-aspect-ratio: 133.3333333333%; +} + +.ratio-16x9 { + --tblr-aspect-ratio: 56.25%; +} + +.ratio-9x16 { + --tblr-aspect-ratio: 177.7777777778%; +} + +.ratio-21x9 { + --tblr-aspect-ratio: 42.8571428571%; +} + +.ratio-9x21 { + --tblr-aspect-ratio: 233.3333333333%; +} + +.fixed-top { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + left: 0; + bottom: 0; + right: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: var(--tblr-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.16; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: right !important; +} + +.float-end { + float: left !important; +} + +.float-none { + float: none !important; +} + +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.overflow-x-auto { + overflow-x: auto !important; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-x-visible { + overflow-x: visible !important; +} + +.overflow-x-scroll { + overflow-x: scroll !important; +} + +.overflow-y-auto { + overflow-y: auto !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.overflow-y-visible { + overflow-y: visible !important; +} + +.overflow-y-scroll { + overflow-y: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --tblr-focus-ring-color: rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-secondary { + --tblr-focus-ring-color: rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-success { + --tblr-focus-ring-color: rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-info { + --tblr-focus-ring-color: rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-warning { + --tblr-focus-ring-color: rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-danger { + --tblr-focus-ring-color: rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-light { + --tblr-focus-ring-color: rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dark { + --tblr-focus-ring-color: rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-muted { + --tblr-focus-ring-color: rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-blue { + --tblr-focus-ring-color: rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-azure { + --tblr-focus-ring-color: rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-indigo { + --tblr-focus-ring-color: rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-purple { + --tblr-focus-ring-color: rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pink { + --tblr-focus-ring-color: rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-red { + --tblr-focus-ring-color: rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-orange { + --tblr-focus-ring-color: rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-yellow { + --tblr-focus-ring-color: rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-lime { + --tblr-focus-ring-color: rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-green { + --tblr-focus-ring-color: rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-teal { + --tblr-focus-ring-color: rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-cyan { + --tblr-focus-ring-color: rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-facebook { + --tblr-focus-ring-color: rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-twitter { + --tblr-focus-ring-color: rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-linkedin { + --tblr-focus-ring-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-google { + --tblr-focus-ring-color: rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-youtube { + --tblr-focus-ring-color: rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vimeo { + --tblr-focus-ring-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-dribbble { + --tblr-focus-ring-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-github { + --tblr-focus-ring-color: rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-instagram { + --tblr-focus-ring-color: rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-pinterest { + --tblr-focus-ring-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-vk { + --tblr-focus-ring-color: rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-rss { + --tblr-focus-ring-color: rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-flickr { + --tblr-focus-ring-color: rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-bitbucket { + --tblr-focus-ring-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity)); +} + +.focus-ring-tabler { + --tblr-focus-ring-color: rgba(var(--tblr-tabler-rgb), var(--tblr-focus-ring-opacity)); +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + right: 0 !important; +} + +.start-50 { + right: 50% !important; +} + +.start-100 { + right: 100% !important; +} + +.end-0 { + left: 0 !important; +} + +.end-50 { + left: 50% !important; +} + +.end-100 { + left: 100% !important; +} + +.translate-middle { + transform: translate(50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-wide { + border: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-wide { + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-end-0 { + border-left: 0 !important; +} + +.border-bottom { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-wide { + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-wide { + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-start-0 { + border-right: 0 !important; +} + +.border-primary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-primary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-secondary { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-secondary-rgb), var(--tblr-border-opacity)) !important; +} + +.border-success { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-success-rgb), var(--tblr-border-opacity)) !important; +} + +.border-info { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-info-rgb), var(--tblr-border-opacity)) !important; +} + +.border-warning { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-warning-rgb), var(--tblr-border-opacity)) !important; +} + +.border-danger { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-danger-rgb), var(--tblr-border-opacity)) !important; +} + +.border-light { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-light-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dark { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dark-rgb), var(--tblr-border-opacity)) !important; +} + +.border-muted { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-muted-rgb), var(--tblr-border-opacity)) !important; +} + +.border-blue { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-blue-rgb), var(--tblr-border-opacity)) !important; +} + +.border-azure { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-azure-rgb), var(--tblr-border-opacity)) !important; +} + +.border-indigo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-indigo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-purple { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-purple-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pink { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pink-rgb), var(--tblr-border-opacity)) !important; +} + +.border-red { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-red-rgb), var(--tblr-border-opacity)) !important; +} + +.border-orange { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-orange-rgb), var(--tblr-border-opacity)) !important; +} + +.border-yellow { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-yellow-rgb), var(--tblr-border-opacity)) !important; +} + +.border-lime { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-lime-rgb), var(--tblr-border-opacity)) !important; +} + +.border-green { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-green-rgb), var(--tblr-border-opacity)) !important; +} + +.border-teal { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-teal-rgb), var(--tblr-border-opacity)) !important; +} + +.border-cyan { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-cyan-rgb), var(--tblr-border-opacity)) !important; +} + +.border-facebook { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-facebook-rgb), var(--tblr-border-opacity)) !important; +} + +.border-twitter { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-twitter-rgb), var(--tblr-border-opacity)) !important; +} + +.border-linkedin { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-border-opacity)) !important; +} + +.border-google { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-google-rgb), var(--tblr-border-opacity)) !important; +} + +.border-youtube { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-youtube-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vimeo { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-border-opacity)) !important; +} + +.border-dribbble { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-border-opacity)) !important; +} + +.border-github { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-github-rgb), var(--tblr-border-opacity)) !important; +} + +.border-instagram { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-instagram-rgb), var(--tblr-border-opacity)) !important; +} + +.border-pinterest { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-border-opacity)) !important; +} + +.border-vk { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-vk-rgb), var(--tblr-border-opacity)) !important; +} + +.border-rss { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-rss-rgb), var(--tblr-border-opacity)) !important; +} + +.border-flickr { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-flickr-rgb), var(--tblr-border-opacity)) !important; +} + +.border-bitbucket { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-border-opacity)) !important; +} + +.border-tabler { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-tabler-rgb), var(--tblr-border-opacity)) !important; +} + +.border-black { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-black-rgb), var(--tblr-border-opacity)) !important; +} + +.border-white { + --tblr-border-opacity: 1; + border-color: rgba(var(--tblr-white-rgb), var(--tblr-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--tblr-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--tblr-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--tblr-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--tblr-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--tblr-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--tblr-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--tblr-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--tblr-dark-border-subtle) !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.border-opacity-10 { + --tblr-border-opacity: 0.1; +} + +.border-opacity-25 { + --tblr-border-opacity: 0.25; +} + +.border-opacity-50 { + --tblr-border-opacity: 0.5; +} + +.border-opacity-75 { + --tblr-border-opacity: 0.75; +} + +.border-opacity-100 { + --tblr-border-opacity: 1; +} + +.w-0 { + width: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.w-25 { + width: 25% !important; +} + +.w-33 { + width: 33.33333% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-66 { + width: 66.66666% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-0 { + height: 0 !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.h-25 { + height: 25% !important; +} + +.h-33 { + height: 33.33333% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-66 { + height: 66.66666% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 2rem !important; +} + +.m-6 { + margin: 3rem !important; +} + +.m-7 { + margin: 5rem !important; +} + +.m-8 { + margin: 8rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.mx-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.mx-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.mx-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; +} + +.mx-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.mx-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; +} + +.mx-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; +} + +.mx-auto { + margin-left: auto !important; + margin-right: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; +} + +.my-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; +} + +.my-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 2rem !important; +} + +.mt-6 { + margin-top: 3rem !important; +} + +.mt-7 { + margin-top: 5rem !important; +} + +.mt-8 { + margin-top: 8rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-left: 0 !important; +} + +.me-1 { + margin-left: 0.25rem !important; +} + +.me-2 { + margin-left: 0.5rem !important; +} + +.me-3 { + margin-left: 1rem !important; +} + +.me-4 { + margin-left: 1.5rem !important; +} + +.me-5 { + margin-left: 2rem !important; +} + +.me-6 { + margin-left: 3rem !important; +} + +.me-7 { + margin-left: 5rem !important; +} + +.me-8 { + margin-left: 8rem !important; +} + +.me-auto { + margin-left: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 2rem !important; +} + +.mb-6 { + margin-bottom: 3rem !important; +} + +.mb-7 { + margin-bottom: 5rem !important; +} + +.mb-8 { + margin-bottom: 8rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-right: 0 !important; +} + +.ms-1 { + margin-right: 0.25rem !important; +} + +.ms-2 { + margin-right: 0.5rem !important; +} + +.ms-3 { + margin-right: 1rem !important; +} + +.ms-4 { + margin-right: 1.5rem !important; +} + +.ms-5 { + margin-right: 2rem !important; +} + +.ms-6 { + margin-right: 3rem !important; +} + +.ms-7 { + margin-right: 5rem !important; +} + +.ms-8 { + margin-right: 8rem !important; +} + +.ms-auto { + margin-right: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 2rem !important; +} + +.p-6 { + padding: 3rem !important; +} + +.p-7 { + padding: 5rem !important; +} + +.p-8 { + padding: 8rem !important; +} + +.px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.px-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.px-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.px-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; +} + +.px-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.px-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; +} + +.px-8 { + padding-left: 8rem !important; + padding-right: 8rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; +} + +.py-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +.py-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 2rem !important; +} + +.pt-6 { + padding-top: 3rem !important; +} + +.pt-7 { + padding-top: 5rem !important; +} + +.pt-8 { + padding-top: 8rem !important; +} + +.pe-0 { + padding-left: 0 !important; +} + +.pe-1 { + padding-left: 0.25rem !important; +} + +.pe-2 { + padding-left: 0.5rem !important; +} + +.pe-3 { + padding-left: 1rem !important; +} + +.pe-4 { + padding-left: 1.5rem !important; +} + +.pe-5 { + padding-left: 2rem !important; +} + +.pe-6 { + padding-left: 3rem !important; +} + +.pe-7 { + padding-left: 5rem !important; +} + +.pe-8 { + padding-left: 8rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 2rem !important; +} + +.pb-6 { + padding-bottom: 3rem !important; +} + +.pb-7 { + padding-bottom: 5rem !important; +} + +.pb-8 { + padding-bottom: 8rem !important; +} + +.ps-0 { + padding-right: 0 !important; +} + +.ps-1 { + padding-right: 0.25rem !important; +} + +.ps-2 { + padding-right: 0.5rem !important; +} + +.ps-3 { + padding-right: 1rem !important; +} + +.ps-4 { + padding-right: 1.5rem !important; +} + +.ps-5 { + padding-right: 2rem !important; +} + +.ps-6 { + padding-right: 3rem !important; +} + +.ps-7 { + padding-right: 5rem !important; +} + +.ps-8 { + padding-right: 8rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 2rem !important; +} + +.gap-6 { + gap: 3rem !important; +} + +.gap-7 { + gap: 5rem !important; +} + +.gap-8 { + gap: 8rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 1rem !important; +} + +.row-gap-4 { + row-gap: 1.5rem !important; +} + +.row-gap-5 { + row-gap: 2rem !important; +} + +.row-gap-6 { + row-gap: 3rem !important; +} + +.row-gap-7 { + row-gap: 5rem !important; +} + +.row-gap-8 { + row-gap: 8rem !important; +} + +.column-gap-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} + +.column-gap-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} + +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} + +.column-gap-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} + +.column-gap-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} + +.column-gap-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; +} + +.column-gap-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.column-gap-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; +} + +.column-gap-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; +} + +.font-monospace { + font-family: var(--tblr-font-monospace) !important; +} + +.fs-1 { + font-size: 1.5rem !important; +} + +.fs-2 { + font-size: 1.25rem !important; +} + +.fs-3 { + font-size: 1rem !important; +} + +.fs-4 { + font-size: 0.875rem !important; +} + +.fs-5 { + font-size: 0.75rem !important; +} + +.fs-6 { + font-size: 0.625rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.1428571429 !important; +} + +.lh-base { + line-height: 1.4285714286 !important; +} + +.lh-lg { + line-height: 1.7142857143 !important; +} + +.text-start { + text-align: right !important; +} + +.text-end { + text-align: left !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-black-rgb), var(--tblr-text-opacity)) !important; +} + +.text-white { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; +} + +.text-body { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-body-color-rgb), var(--tblr-text-opacity)) !important; +} + +.text-black-50 { + --tblr-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --tblr-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --tblr-text-opacity: 1; + color: var(--tblr-secondary-color) !important; +} + +.text-body-tertiary { + --tblr-text-opacity: 1; + color: var(--tblr-tertiary-color) !important; +} + +.text-body-emphasis { + --tblr-text-opacity: 1; + color: var(--tblr-emphasis-color) !important; +} + +.text-reset { + --tblr-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --tblr-text-opacity: 0.25; +} + +.text-opacity-50 { + --tblr-text-opacity: 0.5; +} + +.text-opacity-75 { + --tblr-text-opacity: 0.75; +} + +.text-opacity-100 { + --tblr-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--tblr-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--tblr-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--tblr-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--tblr-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--tblr-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--tblr-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--tblr-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--tblr-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --tblr-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --tblr-link-opacity: 0.1; +} + +.link-opacity-25 { + --tblr-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --tblr-link-opacity: 0.25; +} + +.link-opacity-50 { + --tblr-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --tblr-link-opacity: 0.5; +} + +.link-opacity-75 { + --tblr-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --tblr-link-opacity: 0.75; +} + +.link-opacity-100 { + --tblr-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --tblr-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-primary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-secondary-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-success { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-success-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-info { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-info-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-warning { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-warning-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-danger { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-danger-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-light { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-light-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dark { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dark-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-muted { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-muted-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-blue { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-blue-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-azure { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-azure-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-indigo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-indigo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-purple { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-purple-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pink { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pink-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-red { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-red-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-orange { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-orange-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-yellow { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-yellow-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-lime { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-lime-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-green { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-green-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-teal { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-teal-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-cyan { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-cyan-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-facebook { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-facebook-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-twitter { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-twitter-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-linkedin { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-google { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-google-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-youtube { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-youtube-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vimeo { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-dribbble { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-github { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-github-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-instagram { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-instagram-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-pinterest { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-vk { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-vk-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-rss { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-rss-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-flickr { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-flickr-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-bitbucket { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline-tabler { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--tblr-tabler-rgb), var(--tblr-link-underline-opacity)) !important; +} + +.link-underline { + --tblr-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--tblr-link-color-rgb), var(--tblr-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --tblr-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --tblr-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --tblr-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --tblr-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --tblr-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --tblr-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --tblr-link-underline-opacity: 1; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-black { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-black-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-body-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-transparent { + --tblr-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-body-tertiary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tertiary-bg-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-opacity-10 { + --tblr-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --tblr-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --tblr-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --tblr-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --tblr-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--tblr-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--tblr-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--tblr-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--tblr-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--tblr-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--tblr-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--tblr-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--tblr-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--tblr-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--tblr-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-top { + border-top-right-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-0 { + border-top-right-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-top-1 { + border-top-right-radius: var(--tblr-border-radius-sm) !important; + border-top-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-right-radius: var(--tblr-border-radius) !important; + border-top-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-top-3 { + border-top-right-radius: var(--tblr-border-radius-lg) !important; + border-top-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-right-radius: var(--tblr-border-radius-xl) !important; + border-top-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-right-radius: var(--tblr-border-radius-xxl) !important; + border-top-left-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-top-circle { + border-top-right-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-top-pill { + border-top-right-radius: var(--tblr-border-radius-pill) !important; + border-top-left-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-end { + border-top-left-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-0 { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-end-1 { + border-top-left-radius: var(--tblr-border-radius-sm) !important; + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-left-radius: var(--tblr-border-radius) !important; + border-bottom-left-radius: var(--tblr-border-radius) !important; +} + +.rounded-end-3 { + border-top-left-radius: var(--tblr-border-radius-lg) !important; + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-left-radius: var(--tblr-border-radius-xl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-left-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-end-circle { + border-top-left-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-end-pill { + border-top-left-radius: var(--tblr-border-radius-pill) !important; + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-left-radius: var(--tblr-border-radius-sm) !important; + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-left-radius: var(--tblr-border-radius) !important; + border-bottom-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-left-radius: var(--tblr-border-radius-lg) !important; + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-left-radius: var(--tblr-border-radius-xl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-left-radius: var(--tblr-border-radius-xxl) !important; + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-bottom-circle { + border-bottom-left-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-left-radius: var(--tblr-border-radius-pill) !important; + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-right-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-right-radius: var(--tblr-border-radius-sm) !important; + border-top-right-radius: var(--tblr-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-right-radius: var(--tblr-border-radius) !important; + border-top-right-radius: var(--tblr-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-right-radius: var(--tblr-border-radius-lg) !important; + border-top-right-radius: var(--tblr-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-right-radius: var(--tblr-border-radius-xl) !important; + border-top-right-radius: var(--tblr-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-right-radius: var(--tblr-border-radius-xxl) !important; + border-top-right-radius: var(--tblr-border-radius-xxl) !important; +} + +.rounded-start-circle { + border-bottom-right-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-right-radius: var(--tblr-border-radius-pill) !important; + border-top-right-radius: var(--tblr-border-radius-pill) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +.z-n1 { + z-index: -1 !important; +} + +.z-0 { + z-index: 0 !important; +} + +.z-1 { + z-index: 1 !important; +} + +.z-2 { + z-index: 2 !important; +} + +.z-3 { + z-index: 3 !important; +} + +.object-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-scale-down { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.tracking-tight { + letter-spacing: -0.05em !important; +} + +.tracking-normal { + letter-spacing: 0 !important; +} + +.tracking-wide { + letter-spacing: 0.05em !important; +} + +.cursor-auto { + cursor: auto !important; +} + +.cursor-pointer { + cursor: pointer !important; +} + +.cursor-move { + cursor: move !important; +} + +.cursor-not-allowed { + cursor: not-allowed !important; +} + +.cursor-zoom-in { + cursor: zoom-in !important; +} + +.cursor-zoom-out { + cursor: zoom-out !important; +} + +.cursor-default { + cursor: default !important; +} + +.cursor-none { + cursor: none !important; +} + +.cursor-help { + cursor: help !important; +} + +.cursor-progress { + cursor: progress !important; +} + +.cursor-wait { + cursor: wait !important; +} + +.cursor-text { + cursor: text !important; +} + +.cursor-v-text { + cursor: vertical-text !important; +} + +.cursor-grab { + cursor: -webkit-grab !important; + cursor: grab !important; +} + +.cursor-grabbing { + cursor: -webkit-grabbing !important; + cursor: grabbing !important; +} + +.border-x { + border-right: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-left: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-wide { + border-right: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-left: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-x-0 { + border-right: 0 !important; + border-left: 0 !important; +} + +.border-y { + border-top: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-wide { + border-top: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; + border-bottom: 2px var(--tblr-border-style) rgba(4, 32, 69, 0.14) !important; +} + +.border-y-0 { + border-top: 0 !important; + border-bottom: 0 !important; +} + +.columns-2 { + -moz-columns: 2 !important; + columns: 2 !important; +} + +.columns-3 { + -moz-columns: 3 !important; + columns: 3 !important; +} + +.columns-4 { + -moz-columns: 4 !important; + columns: 4 !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: right !important; + } + .float-sm-end { + float: left !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 2rem !important; + } + .m-sm-6 { + margin: 3rem !important; + } + .m-sm-7 { + margin: 5rem !important; + } + .m-sm-8 { + margin: 8rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-sm-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-sm-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-sm-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-sm-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-sm-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-sm-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-sm-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-sm-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-sm-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-sm-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-sm-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 2rem !important; + } + .mt-sm-6 { + margin-top: 3rem !important; + } + .mt-sm-7 { + margin-top: 5rem !important; + } + .mt-sm-8 { + margin-top: 8rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-left: 0 !important; + } + .me-sm-1 { + margin-left: 0.25rem !important; + } + .me-sm-2 { + margin-left: 0.5rem !important; + } + .me-sm-3 { + margin-left: 1rem !important; + } + .me-sm-4 { + margin-left: 1.5rem !important; + } + .me-sm-5 { + margin-left: 2rem !important; + } + .me-sm-6 { + margin-left: 3rem !important; + } + .me-sm-7 { + margin-left: 5rem !important; + } + .me-sm-8 { + margin-left: 8rem !important; + } + .me-sm-auto { + margin-left: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 2rem !important; + } + .mb-sm-6 { + margin-bottom: 3rem !important; + } + .mb-sm-7 { + margin-bottom: 5rem !important; + } + .mb-sm-8 { + margin-bottom: 8rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-right: 0 !important; + } + .ms-sm-1 { + margin-right: 0.25rem !important; + } + .ms-sm-2 { + margin-right: 0.5rem !important; + } + .ms-sm-3 { + margin-right: 1rem !important; + } + .ms-sm-4 { + margin-right: 1.5rem !important; + } + .ms-sm-5 { + margin-right: 2rem !important; + } + .ms-sm-6 { + margin-right: 3rem !important; + } + .ms-sm-7 { + margin-right: 5rem !important; + } + .ms-sm-8 { + margin-right: 8rem !important; + } + .ms-sm-auto { + margin-right: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 2rem !important; + } + .p-sm-6 { + padding: 3rem !important; + } + .p-sm-7 { + padding: 5rem !important; + } + .p-sm-8 { + padding: 8rem !important; + } + .px-sm-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-sm-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-sm-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-sm-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-sm-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-sm-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-sm-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-sm-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-sm-8 { + padding-left: 8rem !important; + padding-right: 8rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-sm-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-sm-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 2rem !important; + } + .pt-sm-6 { + padding-top: 3rem !important; + } + .pt-sm-7 { + padding-top: 5rem !important; + } + .pt-sm-8 { + padding-top: 8rem !important; + } + .pe-sm-0 { + padding-left: 0 !important; + } + .pe-sm-1 { + padding-left: 0.25rem !important; + } + .pe-sm-2 { + padding-left: 0.5rem !important; + } + .pe-sm-3 { + padding-left: 1rem !important; + } + .pe-sm-4 { + padding-left: 1.5rem !important; + } + .pe-sm-5 { + padding-left: 2rem !important; + } + .pe-sm-6 { + padding-left: 3rem !important; + } + .pe-sm-7 { + padding-left: 5rem !important; + } + .pe-sm-8 { + padding-left: 8rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 2rem !important; + } + .pb-sm-6 { + padding-bottom: 3rem !important; + } + .pb-sm-7 { + padding-bottom: 5rem !important; + } + .pb-sm-8 { + padding-bottom: 8rem !important; + } + .ps-sm-0 { + padding-right: 0 !important; + } + .ps-sm-1 { + padding-right: 0.25rem !important; + } + .ps-sm-2 { + padding-right: 0.5rem !important; + } + .ps-sm-3 { + padding-right: 1rem !important; + } + .ps-sm-4 { + padding-right: 1.5rem !important; + } + .ps-sm-5 { + padding-right: 2rem !important; + } + .ps-sm-6 { + padding-right: 3rem !important; + } + .ps-sm-7 { + padding-right: 5rem !important; + } + .ps-sm-8 { + padding-right: 8rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 2rem !important; + } + .gap-sm-6 { + gap: 3rem !important; + } + .gap-sm-7 { + gap: 5rem !important; + } + .gap-sm-8 { + gap: 8rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 2rem !important; + } + .row-gap-sm-6 { + row-gap: 3rem !important; + } + .row-gap-sm-7 { + row-gap: 5rem !important; + } + .row-gap-sm-8 { + row-gap: 8rem !important; + } + .column-gap-sm-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-sm-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-sm-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-sm-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-sm-start { + text-align: right !important; + } + .text-sm-end { + text-align: left !important; + } + .text-sm-center { + text-align: center !important; + } + .columns-sm-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-sm-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-sm-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: right !important; + } + .float-md-end { + float: left !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 2rem !important; + } + .m-md-6 { + margin: 3rem !important; + } + .m-md-7 { + margin: 5rem !important; + } + .m-md-8 { + margin: 8rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-md-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-md-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-md-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-md-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-md-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-md-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-md-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-md-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-md-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-md-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-md-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 2rem !important; + } + .mt-md-6 { + margin-top: 3rem !important; + } + .mt-md-7 { + margin-top: 5rem !important; + } + .mt-md-8 { + margin-top: 8rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-left: 0 !important; + } + .me-md-1 { + margin-left: 0.25rem !important; + } + .me-md-2 { + margin-left: 0.5rem !important; + } + .me-md-3 { + margin-left: 1rem !important; + } + .me-md-4 { + margin-left: 1.5rem !important; + } + .me-md-5 { + margin-left: 2rem !important; + } + .me-md-6 { + margin-left: 3rem !important; + } + .me-md-7 { + margin-left: 5rem !important; + } + .me-md-8 { + margin-left: 8rem !important; + } + .me-md-auto { + margin-left: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 2rem !important; + } + .mb-md-6 { + margin-bottom: 3rem !important; + } + .mb-md-7 { + margin-bottom: 5rem !important; + } + .mb-md-8 { + margin-bottom: 8rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-right: 0 !important; + } + .ms-md-1 { + margin-right: 0.25rem !important; + } + .ms-md-2 { + margin-right: 0.5rem !important; + } + .ms-md-3 { + margin-right: 1rem !important; + } + .ms-md-4 { + margin-right: 1.5rem !important; + } + .ms-md-5 { + margin-right: 2rem !important; + } + .ms-md-6 { + margin-right: 3rem !important; + } + .ms-md-7 { + margin-right: 5rem !important; + } + .ms-md-8 { + margin-right: 8rem !important; + } + .ms-md-auto { + margin-right: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 2rem !important; + } + .p-md-6 { + padding: 3rem !important; + } + .p-md-7 { + padding: 5rem !important; + } + .p-md-8 { + padding: 8rem !important; + } + .px-md-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-md-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-md-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-md-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-md-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-md-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-md-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-md-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-md-8 { + padding-left: 8rem !important; + padding-right: 8rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-md-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-md-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 2rem !important; + } + .pt-md-6 { + padding-top: 3rem !important; + } + .pt-md-7 { + padding-top: 5rem !important; + } + .pt-md-8 { + padding-top: 8rem !important; + } + .pe-md-0 { + padding-left: 0 !important; + } + .pe-md-1 { + padding-left: 0.25rem !important; + } + .pe-md-2 { + padding-left: 0.5rem !important; + } + .pe-md-3 { + padding-left: 1rem !important; + } + .pe-md-4 { + padding-left: 1.5rem !important; + } + .pe-md-5 { + padding-left: 2rem !important; + } + .pe-md-6 { + padding-left: 3rem !important; + } + .pe-md-7 { + padding-left: 5rem !important; + } + .pe-md-8 { + padding-left: 8rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 2rem !important; + } + .pb-md-6 { + padding-bottom: 3rem !important; + } + .pb-md-7 { + padding-bottom: 5rem !important; + } + .pb-md-8 { + padding-bottom: 8rem !important; + } + .ps-md-0 { + padding-right: 0 !important; + } + .ps-md-1 { + padding-right: 0.25rem !important; + } + .ps-md-2 { + padding-right: 0.5rem !important; + } + .ps-md-3 { + padding-right: 1rem !important; + } + .ps-md-4 { + padding-right: 1.5rem !important; + } + .ps-md-5 { + padding-right: 2rem !important; + } + .ps-md-6 { + padding-right: 3rem !important; + } + .ps-md-7 { + padding-right: 5rem !important; + } + .ps-md-8 { + padding-right: 8rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 2rem !important; + } + .gap-md-6 { + gap: 3rem !important; + } + .gap-md-7 { + gap: 5rem !important; + } + .gap-md-8 { + gap: 8rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 2rem !important; + } + .row-gap-md-6 { + row-gap: 3rem !important; + } + .row-gap-md-7 { + row-gap: 5rem !important; + } + .row-gap-md-8 { + row-gap: 8rem !important; + } + .column-gap-md-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-md-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-md-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-md-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-md-start { + text-align: right !important; + } + .text-md-end { + text-align: left !important; + } + .text-md-center { + text-align: center !important; + } + .columns-md-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-md-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-md-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: right !important; + } + .float-lg-end { + float: left !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 2rem !important; + } + .m-lg-6 { + margin: 3rem !important; + } + .m-lg-7 { + margin: 5rem !important; + } + .m-lg-8 { + margin: 8rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-lg-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-lg-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-lg-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-lg-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-lg-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-lg-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-lg-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-lg-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-lg-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-lg-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-lg-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 2rem !important; + } + .mt-lg-6 { + margin-top: 3rem !important; + } + .mt-lg-7 { + margin-top: 5rem !important; + } + .mt-lg-8 { + margin-top: 8rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-left: 0 !important; + } + .me-lg-1 { + margin-left: 0.25rem !important; + } + .me-lg-2 { + margin-left: 0.5rem !important; + } + .me-lg-3 { + margin-left: 1rem !important; + } + .me-lg-4 { + margin-left: 1.5rem !important; + } + .me-lg-5 { + margin-left: 2rem !important; + } + .me-lg-6 { + margin-left: 3rem !important; + } + .me-lg-7 { + margin-left: 5rem !important; + } + .me-lg-8 { + margin-left: 8rem !important; + } + .me-lg-auto { + margin-left: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 2rem !important; + } + .mb-lg-6 { + margin-bottom: 3rem !important; + } + .mb-lg-7 { + margin-bottom: 5rem !important; + } + .mb-lg-8 { + margin-bottom: 8rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-right: 0 !important; + } + .ms-lg-1 { + margin-right: 0.25rem !important; + } + .ms-lg-2 { + margin-right: 0.5rem !important; + } + .ms-lg-3 { + margin-right: 1rem !important; + } + .ms-lg-4 { + margin-right: 1.5rem !important; + } + .ms-lg-5 { + margin-right: 2rem !important; + } + .ms-lg-6 { + margin-right: 3rem !important; + } + .ms-lg-7 { + margin-right: 5rem !important; + } + .ms-lg-8 { + margin-right: 8rem !important; + } + .ms-lg-auto { + margin-right: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 2rem !important; + } + .p-lg-6 { + padding: 3rem !important; + } + .p-lg-7 { + padding: 5rem !important; + } + .p-lg-8 { + padding: 8rem !important; + } + .px-lg-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-lg-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-lg-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-lg-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-lg-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-lg-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-lg-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-lg-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-lg-8 { + padding-left: 8rem !important; + padding-right: 8rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-lg-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-lg-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 2rem !important; + } + .pt-lg-6 { + padding-top: 3rem !important; + } + .pt-lg-7 { + padding-top: 5rem !important; + } + .pt-lg-8 { + padding-top: 8rem !important; + } + .pe-lg-0 { + padding-left: 0 !important; + } + .pe-lg-1 { + padding-left: 0.25rem !important; + } + .pe-lg-2 { + padding-left: 0.5rem !important; + } + .pe-lg-3 { + padding-left: 1rem !important; + } + .pe-lg-4 { + padding-left: 1.5rem !important; + } + .pe-lg-5 { + padding-left: 2rem !important; + } + .pe-lg-6 { + padding-left: 3rem !important; + } + .pe-lg-7 { + padding-left: 5rem !important; + } + .pe-lg-8 { + padding-left: 8rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 2rem !important; + } + .pb-lg-6 { + padding-bottom: 3rem !important; + } + .pb-lg-7 { + padding-bottom: 5rem !important; + } + .pb-lg-8 { + padding-bottom: 8rem !important; + } + .ps-lg-0 { + padding-right: 0 !important; + } + .ps-lg-1 { + padding-right: 0.25rem !important; + } + .ps-lg-2 { + padding-right: 0.5rem !important; + } + .ps-lg-3 { + padding-right: 1rem !important; + } + .ps-lg-4 { + padding-right: 1.5rem !important; + } + .ps-lg-5 { + padding-right: 2rem !important; + } + .ps-lg-6 { + padding-right: 3rem !important; + } + .ps-lg-7 { + padding-right: 5rem !important; + } + .ps-lg-8 { + padding-right: 8rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 2rem !important; + } + .gap-lg-6 { + gap: 3rem !important; + } + .gap-lg-7 { + gap: 5rem !important; + } + .gap-lg-8 { + gap: 8rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 2rem !important; + } + .row-gap-lg-6 { + row-gap: 3rem !important; + } + .row-gap-lg-7 { + row-gap: 5rem !important; + } + .row-gap-lg-8 { + row-gap: 8rem !important; + } + .column-gap-lg-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-lg-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-lg-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-lg-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-lg-start { + text-align: right !important; + } + .text-lg-end { + text-align: left !important; + } + .text-lg-center { + text-align: center !important; + } + .columns-lg-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-lg-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-lg-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: right !important; + } + .float-xl-end { + float: left !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 2rem !important; + } + .m-xl-6 { + margin: 3rem !important; + } + .m-xl-7 { + margin: 5rem !important; + } + .m-xl-8 { + margin: 8rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xl-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-xl-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xl-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-xl-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-xl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 2rem !important; + } + .mt-xl-6 { + margin-top: 3rem !important; + } + .mt-xl-7 { + margin-top: 5rem !important; + } + .mt-xl-8 { + margin-top: 8rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-left: 0 !important; + } + .me-xl-1 { + margin-left: 0.25rem !important; + } + .me-xl-2 { + margin-left: 0.5rem !important; + } + .me-xl-3 { + margin-left: 1rem !important; + } + .me-xl-4 { + margin-left: 1.5rem !important; + } + .me-xl-5 { + margin-left: 2rem !important; + } + .me-xl-6 { + margin-left: 3rem !important; + } + .me-xl-7 { + margin-left: 5rem !important; + } + .me-xl-8 { + margin-left: 8rem !important; + } + .me-xl-auto { + margin-left: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 2rem !important; + } + .mb-xl-6 { + margin-bottom: 3rem !important; + } + .mb-xl-7 { + margin-bottom: 5rem !important; + } + .mb-xl-8 { + margin-bottom: 8rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-right: 0 !important; + } + .ms-xl-1 { + margin-right: 0.25rem !important; + } + .ms-xl-2 { + margin-right: 0.5rem !important; + } + .ms-xl-3 { + margin-right: 1rem !important; + } + .ms-xl-4 { + margin-right: 1.5rem !important; + } + .ms-xl-5 { + margin-right: 2rem !important; + } + .ms-xl-6 { + margin-right: 3rem !important; + } + .ms-xl-7 { + margin-right: 5rem !important; + } + .ms-xl-8 { + margin-right: 8rem !important; + } + .ms-xl-auto { + margin-right: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 2rem !important; + } + .p-xl-6 { + padding: 3rem !important; + } + .p-xl-7 { + padding: 5rem !important; + } + .p-xl-8 { + padding: 8rem !important; + } + .px-xl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xl-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-xl-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-xl-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-xl-8 { + padding-left: 8rem !important; + padding-right: 8rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 2rem !important; + } + .pt-xl-6 { + padding-top: 3rem !important; + } + .pt-xl-7 { + padding-top: 5rem !important; + } + .pt-xl-8 { + padding-top: 8rem !important; + } + .pe-xl-0 { + padding-left: 0 !important; + } + .pe-xl-1 { + padding-left: 0.25rem !important; + } + .pe-xl-2 { + padding-left: 0.5rem !important; + } + .pe-xl-3 { + padding-left: 1rem !important; + } + .pe-xl-4 { + padding-left: 1.5rem !important; + } + .pe-xl-5 { + padding-left: 2rem !important; + } + .pe-xl-6 { + padding-left: 3rem !important; + } + .pe-xl-7 { + padding-left: 5rem !important; + } + .pe-xl-8 { + padding-left: 8rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 2rem !important; + } + .pb-xl-6 { + padding-bottom: 3rem !important; + } + .pb-xl-7 { + padding-bottom: 5rem !important; + } + .pb-xl-8 { + padding-bottom: 8rem !important; + } + .ps-xl-0 { + padding-right: 0 !important; + } + .ps-xl-1 { + padding-right: 0.25rem !important; + } + .ps-xl-2 { + padding-right: 0.5rem !important; + } + .ps-xl-3 { + padding-right: 1rem !important; + } + .ps-xl-4 { + padding-right: 1.5rem !important; + } + .ps-xl-5 { + padding-right: 2rem !important; + } + .ps-xl-6 { + padding-right: 3rem !important; + } + .ps-xl-7 { + padding-right: 5rem !important; + } + .ps-xl-8 { + padding-right: 8rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 2rem !important; + } + .gap-xl-6 { + gap: 3rem !important; + } + .gap-xl-7 { + gap: 5rem !important; + } + .gap-xl-8 { + gap: 8rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 2rem !important; + } + .row-gap-xl-6 { + row-gap: 3rem !important; + } + .row-gap-xl-7 { + row-gap: 5rem !important; + } + .row-gap-xl-8 { + row-gap: 8rem !important; + } + .column-gap-xl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xl-start { + text-align: right !important; + } + .text-xl-end { + text-align: left !important; + } + .text-xl-center { + text-align: center !important; + } + .columns-xl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: right !important; + } + .float-xxl-end { + float: left !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 2rem !important; + } + .m-xxl-6 { + margin: 3rem !important; + } + .m-xxl-7 { + margin: 5rem !important; + } + .m-xxl-8 { + margin: 8rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xxl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xxl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xxl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xxl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xxl-5 { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + .mx-xxl-6 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xxl-7 { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + .mx-xxl-8 { + margin-left: 8rem !important; + margin-right: 8rem !important; + } + .mx-xxl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xxl-6 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-7 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xxl-8 { + margin-top: 8rem !important; + margin-bottom: 8rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 2rem !important; + } + .mt-xxl-6 { + margin-top: 3rem !important; + } + .mt-xxl-7 { + margin-top: 5rem !important; + } + .mt-xxl-8 { + margin-top: 8rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-left: 0 !important; + } + .me-xxl-1 { + margin-left: 0.25rem !important; + } + .me-xxl-2 { + margin-left: 0.5rem !important; + } + .me-xxl-3 { + margin-left: 1rem !important; + } + .me-xxl-4 { + margin-left: 1.5rem !important; + } + .me-xxl-5 { + margin-left: 2rem !important; + } + .me-xxl-6 { + margin-left: 3rem !important; + } + .me-xxl-7 { + margin-left: 5rem !important; + } + .me-xxl-8 { + margin-left: 8rem !important; + } + .me-xxl-auto { + margin-left: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 2rem !important; + } + .mb-xxl-6 { + margin-bottom: 3rem !important; + } + .mb-xxl-7 { + margin-bottom: 5rem !important; + } + .mb-xxl-8 { + margin-bottom: 8rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-right: 0 !important; + } + .ms-xxl-1 { + margin-right: 0.25rem !important; + } + .ms-xxl-2 { + margin-right: 0.5rem !important; + } + .ms-xxl-3 { + margin-right: 1rem !important; + } + .ms-xxl-4 { + margin-right: 1.5rem !important; + } + .ms-xxl-5 { + margin-right: 2rem !important; + } + .ms-xxl-6 { + margin-right: 3rem !important; + } + .ms-xxl-7 { + margin-right: 5rem !important; + } + .ms-xxl-8 { + margin-right: 8rem !important; + } + .ms-xxl-auto { + margin-right: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 2rem !important; + } + .p-xxl-6 { + padding: 3rem !important; + } + .p-xxl-7 { + padding: 5rem !important; + } + .p-xxl-8 { + padding: 8rem !important; + } + .px-xxl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xxl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xxl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xxl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xxl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xxl-5 { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + .px-xxl-6 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .px-xxl-7 { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + .px-xxl-8 { + padding-left: 8rem !important; + padding-right: 8rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xxl-6 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-7 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .py-xxl-8 { + padding-top: 8rem !important; + padding-bottom: 8rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 2rem !important; + } + .pt-xxl-6 { + padding-top: 3rem !important; + } + .pt-xxl-7 { + padding-top: 5rem !important; + } + .pt-xxl-8 { + padding-top: 8rem !important; + } + .pe-xxl-0 { + padding-left: 0 !important; + } + .pe-xxl-1 { + padding-left: 0.25rem !important; + } + .pe-xxl-2 { + padding-left: 0.5rem !important; + } + .pe-xxl-3 { + padding-left: 1rem !important; + } + .pe-xxl-4 { + padding-left: 1.5rem !important; + } + .pe-xxl-5 { + padding-left: 2rem !important; + } + .pe-xxl-6 { + padding-left: 3rem !important; + } + .pe-xxl-7 { + padding-left: 5rem !important; + } + .pe-xxl-8 { + padding-left: 8rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 2rem !important; + } + .pb-xxl-6 { + padding-bottom: 3rem !important; + } + .pb-xxl-7 { + padding-bottom: 5rem !important; + } + .pb-xxl-8 { + padding-bottom: 8rem !important; + } + .ps-xxl-0 { + padding-right: 0 !important; + } + .ps-xxl-1 { + padding-right: 0.25rem !important; + } + .ps-xxl-2 { + padding-right: 0.5rem !important; + } + .ps-xxl-3 { + padding-right: 1rem !important; + } + .ps-xxl-4 { + padding-right: 1.5rem !important; + } + .ps-xxl-5 { + padding-right: 2rem !important; + } + .ps-xxl-6 { + padding-right: 3rem !important; + } + .ps-xxl-7 { + padding-right: 5rem !important; + } + .ps-xxl-8 { + padding-right: 8rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 2rem !important; + } + .gap-xxl-6 { + gap: 3rem !important; + } + .gap-xxl-7 { + gap: 5rem !important; + } + .gap-xxl-8 { + gap: 8rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 2rem !important; + } + .row-gap-xxl-6 { + row-gap: 3rem !important; + } + .row-gap-xxl-7 { + row-gap: 5rem !important; + } + .row-gap-xxl-8 { + row-gap: 8rem !important; + } + .column-gap-xxl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -moz-column-gap: 2rem !important; + column-gap: 2rem !important; + } + .column-gap-xxl-6 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xxl-7 { + -moz-column-gap: 5rem !important; + column-gap: 5rem !important; + } + .column-gap-xxl-8 { + -moz-column-gap: 8rem !important; + column-gap: 8rem !important; + } + .text-xxl-start { + text-align: right !important; + } + .text-xxl-end { + text-align: left !important; + } + .text-xxl-center { + text-align: center !important; + } + .columns-xxl-2 { + -moz-columns: 2 !important; + columns: 2 !important; + } + .columns-xxl-3 { + -moz-columns: 3 !important; + columns: 3 !important; + } + .columns-xxl-4 { + -moz-columns: 4 !important; + columns: 4 !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +:root, +:host { + font-size: 16px; + height: 100%; +} + +:root, +:host, +[data-bs-theme=light] { + --tblr-primary: #0054a6; + --tblr-primary-rgb: 0, 84, 166; + --tblr-primary-fg: var(--tblr-light); + --tblr-primary-darken: #004c95; + --tblr-primary-lt: #e6eef6; + --tblr-primary-lt-rgb: 230, 238, 246; + --tblr-secondary: #667382; + --tblr-secondary-rgb: 102, 115, 130; + --tblr-secondary-fg: var(--tblr-light); + --tblr-secondary-darken: #5c6875; + --tblr-secondary-lt: #f0f1f3; + --tblr-secondary-lt-rgb: 240, 241, 243; + --tblr-success: #2fb344; + --tblr-success-rgb: 47, 179, 68; + --tblr-success-fg: var(--tblr-light); + --tblr-success-darken: #2aa13d; + --tblr-success-lt: #eaf7ec; + --tblr-success-lt-rgb: 234, 247, 236; + --tblr-info: #4299e1; + --tblr-info-rgb: 66, 153, 225; + --tblr-info-fg: var(--tblr-light); + --tblr-info-darken: #3b8acb; + --tblr-info-lt: #ecf5fc; + --tblr-info-lt-rgb: 236, 245, 252; + --tblr-warning: #f76707; + --tblr-warning-rgb: 247, 103, 7; + --tblr-warning-fg: var(--tblr-light); + --tblr-warning-darken: #de5d06; + --tblr-warning-lt: #fef0e6; + --tblr-warning-lt-rgb: 254, 240, 230; + --tblr-danger: #d63939; + --tblr-danger-rgb: 214, 57, 57; + --tblr-danger-fg: var(--tblr-light); + --tblr-danger-darken: #c13333; + --tblr-danger-lt: #fbebeb; + --tblr-danger-lt-rgb: 251, 235, 235; + --tblr-light: #fcfdfe; + --tblr-light-rgb: 252, 253, 254; + --tblr-light-fg: var(--tblr-dark); + --tblr-light-darken: #e3e4e5; + --tblr-light-lt: white; + --tblr-light-lt-rgb: 255, 255, 255; + --tblr-dark: #182433; + --tblr-dark-rgb: 24, 36, 51; + --tblr-dark-fg: var(--tblr-light); + --tblr-dark-darken: #16202e; + --tblr-dark-lt: #e8e9eb; + --tblr-dark-lt-rgb: 232, 233, 235; + --tblr-muted: #667382; + --tblr-muted-rgb: 102, 115, 130; + --tblr-muted-fg: var(--tblr-light); + --tblr-muted-darken: #5c6875; + --tblr-muted-lt: #f0f1f3; + --tblr-muted-lt-rgb: 240, 241, 243; + --tblr-blue: #0054a6; + --tblr-blue-rgb: 0, 84, 166; + --tblr-blue-fg: var(--tblr-light); + --tblr-blue-darken: #004c95; + --tblr-blue-lt: #e6eef6; + --tblr-blue-lt-rgb: 230, 238, 246; + --tblr-azure: #4299e1; + --tblr-azure-rgb: 66, 153, 225; + --tblr-azure-fg: var(--tblr-light); + --tblr-azure-darken: #3b8acb; + --tblr-azure-lt: #ecf5fc; + --tblr-azure-lt-rgb: 236, 245, 252; + --tblr-indigo: #4263eb; + --tblr-indigo-rgb: 66, 99, 235; + --tblr-indigo-fg: var(--tblr-light); + --tblr-indigo-darken: #3b59d4; + --tblr-indigo-lt: #eceffd; + --tblr-indigo-lt-rgb: 236, 239, 253; + --tblr-purple: #ae3ec9; + --tblr-purple-rgb: 174, 62, 201; + --tblr-purple-fg: var(--tblr-light); + --tblr-purple-darken: #9d38b5; + --tblr-purple-lt: #f7ecfa; + --tblr-purple-lt-rgb: 247, 236, 250; + --tblr-pink: #d6336c; + --tblr-pink-rgb: 214, 51, 108; + --tblr-pink-fg: var(--tblr-light); + --tblr-pink-darken: #c12e61; + --tblr-pink-lt: #fbebf0; + --tblr-pink-lt-rgb: 251, 235, 240; + --tblr-red: #d63939; + --tblr-red-rgb: 214, 57, 57; + --tblr-red-fg: var(--tblr-light); + --tblr-red-darken: #c13333; + --tblr-red-lt: #fbebeb; + --tblr-red-lt-rgb: 251, 235, 235; + --tblr-orange: #f76707; + --tblr-orange-rgb: 247, 103, 7; + --tblr-orange-fg: var(--tblr-light); + --tblr-orange-darken: #de5d06; + --tblr-orange-lt: #fef0e6; + --tblr-orange-lt-rgb: 254, 240, 230; + --tblr-yellow: #f59f00; + --tblr-yellow-rgb: 245, 159, 0; + --tblr-yellow-fg: var(--tblr-light); + --tblr-yellow-darken: #dd8f00; + --tblr-yellow-lt: #fef5e6; + --tblr-yellow-lt-rgb: 254, 245, 230; + --tblr-lime: #74b816; + --tblr-lime-rgb: 116, 184, 22; + --tblr-lime-fg: var(--tblr-light); + --tblr-lime-darken: #68a614; + --tblr-lime-lt: #f1f8e8; + --tblr-lime-lt-rgb: 241, 248, 232; + --tblr-green: #2fb344; + --tblr-green-rgb: 47, 179, 68; + --tblr-green-fg: var(--tblr-light); + --tblr-green-darken: #2aa13d; + --tblr-green-lt: #eaf7ec; + --tblr-green-lt-rgb: 234, 247, 236; + --tblr-teal: #0ca678; + --tblr-teal-rgb: 12, 166, 120; + --tblr-teal-fg: var(--tblr-light); + --tblr-teal-darken: #0b956c; + --tblr-teal-lt: #e7f6f2; + --tblr-teal-lt-rgb: 231, 246, 242; + --tblr-cyan: #17a2b8; + --tblr-cyan-rgb: 23, 162, 184; + --tblr-cyan-fg: var(--tblr-light); + --tblr-cyan-darken: #1592a6; + --tblr-cyan-lt: #e8f6f8; + --tblr-cyan-lt-rgb: 232, 246, 248; + --tblr-facebook: #1877f2; + --tblr-facebook-rgb: 24, 119, 242; + --tblr-facebook-fg: var(--tblr-light); + --tblr-facebook-darken: #166bda; + --tblr-facebook-lt: #e8f1fe; + --tblr-facebook-lt-rgb: 232, 241, 254; + --tblr-twitter: #1da1f2; + --tblr-twitter-rgb: 29, 161, 242; + --tblr-twitter-fg: var(--tblr-light); + --tblr-twitter-darken: #1a91da; + --tblr-twitter-lt: #e8f6fe; + --tblr-twitter-lt-rgb: 232, 246, 254; + --tblr-linkedin: #0a66c2; + --tblr-linkedin-rgb: 10, 102, 194; + --tblr-linkedin-fg: var(--tblr-light); + --tblr-linkedin-darken: #095caf; + --tblr-linkedin-lt: #e7f0f9; + --tblr-linkedin-lt-rgb: 231, 240, 249; + --tblr-google: #dc4e41; + --tblr-google-rgb: 220, 78, 65; + --tblr-google-fg: var(--tblr-light); + --tblr-google-darken: #c6463b; + --tblr-google-lt: #fcedec; + --tblr-google-lt-rgb: 252, 237, 236; + --tblr-youtube: #ff0000; + --tblr-youtube-rgb: 255, 0, 0; + --tblr-youtube-fg: var(--tblr-light); + --tblr-youtube-darken: #e60000; + --tblr-youtube-lt: #ffe6e6; + --tblr-youtube-lt-rgb: 255, 230, 230; + --tblr-vimeo: #1ab7ea; + --tblr-vimeo-rgb: 26, 183, 234; + --tblr-vimeo-fg: var(--tblr-light); + --tblr-vimeo-darken: #17a5d3; + --tblr-vimeo-lt: #e8f8fd; + --tblr-vimeo-lt-rgb: 232, 248, 253; + --tblr-dribbble: #ea4c89; + --tblr-dribbble-rgb: 234, 76, 137; + --tblr-dribbble-fg: var(--tblr-light); + --tblr-dribbble-darken: #d3447b; + --tblr-dribbble-lt: #fdedf3; + --tblr-dribbble-lt-rgb: 253, 237, 243; + --tblr-github: #181717; + --tblr-github-rgb: 24, 23, 23; + --tblr-github-fg: var(--tblr-light); + --tblr-github-darken: #161515; + --tblr-github-lt: #e8e8e8; + --tblr-github-lt-rgb: 232, 232, 232; + --tblr-instagram: #e4405f; + --tblr-instagram-rgb: 228, 64, 95; + --tblr-instagram-fg: var(--tblr-light); + --tblr-instagram-darken: #cd3a56; + --tblr-instagram-lt: #fcecef; + --tblr-instagram-lt-rgb: 252, 236, 239; + --tblr-pinterest: #bd081c; + --tblr-pinterest-rgb: 189, 8, 28; + --tblr-pinterest-fg: var(--tblr-light); + --tblr-pinterest-darken: #aa0719; + --tblr-pinterest-lt: #f8e6e8; + --tblr-pinterest-lt-rgb: 248, 230, 232; + --tblr-vk: #6383a8; + --tblr-vk-rgb: 99, 131, 168; + --tblr-vk-fg: var(--tblr-light); + --tblr-vk-darken: #597697; + --tblr-vk-lt: #eff3f6; + --tblr-vk-lt-rgb: 239, 243, 246; + --tblr-rss: #ffa500; + --tblr-rss-rgb: 255, 165, 0; + --tblr-rss-fg: var(--tblr-light); + --tblr-rss-darken: #e69500; + --tblr-rss-lt: #fff6e6; + --tblr-rss-lt-rgb: 255, 246, 230; + --tblr-flickr: #0063dc; + --tblr-flickr-rgb: 0, 99, 220; + --tblr-flickr-fg: var(--tblr-light); + --tblr-flickr-darken: #0059c6; + --tblr-flickr-lt: #e6effc; + --tblr-flickr-lt-rgb: 230, 239, 252; + --tblr-bitbucket: #0052cc; + --tblr-bitbucket-rgb: 0, 82, 204; + --tblr-bitbucket-fg: var(--tblr-light); + --tblr-bitbucket-darken: #004ab8; + --tblr-bitbucket-lt: #e6eefa; + --tblr-bitbucket-lt-rgb: 230, 238, 250; + --tblr-tabler: #0054a6; + --tblr-tabler-rgb: 0, 84, 166; + --tblr-tabler-fg: var(--tblr-light); + --tblr-tabler-darken: #004c95; + --tblr-tabler-lt: #e6eef6; + --tblr-tabler-lt-rgb: 230, 238, 246; + --tblr-gray-50: #fcfdfe; + --tblr-gray-50-rgb: 252, 253, 254; + --tblr-gray-50-fg: var(--tblr-dark); + --tblr-gray-50-darken: #e3e4e5; + --tblr-gray-50-lt: white; + --tblr-gray-50-lt-rgb: 255, 255, 255; + --tblr-gray-100: #f6f8fb; + --tblr-gray-100-rgb: 246, 248, 251; + --tblr-gray-100-fg: var(--tblr-dark); + --tblr-gray-100-darken: #dddfe2; + --tblr-gray-100-lt: #fefeff; + --tblr-gray-100-lt-rgb: 254, 254, 255; + --tblr-gray-200: #eef1f4; + --tblr-gray-200-rgb: 238, 241, 244; + --tblr-gray-200-fg: var(--tblr-dark); + --tblr-gray-200-darken: #d6d9dc; + --tblr-gray-200-lt: #fdfefe; + --tblr-gray-200-lt-rgb: 253, 254, 254; + --tblr-gray-300: #dadfe5; + --tblr-gray-300-rgb: 218, 223, 229; + --tblr-gray-300-fg: var(--tblr-dark); + --tblr-gray-300-darken: #c4c9ce; + --tblr-gray-300-lt: #fbfcfc; + --tblr-gray-300-lt-rgb: 251, 252, 252; + --tblr-gray-400: #bbc3cd; + --tblr-gray-400-rgb: 187, 195, 205; + --tblr-gray-400-fg: var(--tblr-light); + --tblr-gray-400-darken: #a8b0b9; + --tblr-gray-400-lt: #f8f9fa; + --tblr-gray-400-lt-rgb: 248, 249, 250; + --tblr-gray-500: #929dab; + --tblr-gray-500-rgb: 146, 157, 171; + --tblr-gray-500-fg: var(--tblr-light); + --tblr-gray-500-darken: #838d9a; + --tblr-gray-500-lt: #f4f5f7; + --tblr-gray-500-lt-rgb: 244, 245, 247; + --tblr-gray-600: #667382; + --tblr-gray-600-rgb: 102, 115, 130; + --tblr-gray-600-fg: var(--tblr-light); + --tblr-gray-600-darken: #5c6875; + --tblr-gray-600-lt: #f0f1f3; + --tblr-gray-600-lt-rgb: 240, 241, 243; + --tblr-gray-700: #3a4859; + --tblr-gray-700-rgb: 58, 72, 89; + --tblr-gray-700-fg: var(--tblr-light); + --tblr-gray-700-darken: #344150; + --tblr-gray-700-lt: #ebedee; + --tblr-gray-700-lt-rgb: 235, 237, 238; + --tblr-gray-800: #182433; + --tblr-gray-800-rgb: 24, 36, 51; + --tblr-gray-800-fg: var(--tblr-light); + --tblr-gray-800-darken: #16202e; + --tblr-gray-800-lt: #e8e9eb; + --tblr-gray-800-lt-rgb: 232, 233, 235; + --tblr-gray-900: #040a11; + --tblr-gray-900-rgb: 4, 10, 17; + --tblr-gray-900-fg: var(--tblr-light); + --tblr-gray-900-darken: #04090f; + --tblr-gray-900-lt: #e6e7e7; + --tblr-gray-900-lt-rgb: 230, 231, 231; + --tblr-spacer-0: 0; + --tblr-spacer-1: 0.25rem; + --tblr-spacer-2: 0.5rem; + --tblr-spacer-3: 1rem; + --tblr-spacer-4: 1.5rem; + --tblr-spacer-5: 2rem; + --tblr-spacer-6: 3rem; + --tblr-spacer-7: 5rem; + --tblr-spacer-8: 8rem; + --tblr-spacer: 1rem; + --tblr-bg-surface: var(--tblr-white); + --tblr-bg-surface-secondary: var(--tblr-gray-100); + --tblr-bg-surface-tertiary: var(--tblr-gray-50); + --tblr-bg-surface-dark: var(--tblr-dark); + --tblr-bg-forms: var(--tblr-bg-surface); + --tblr-border-color: #dadfe5; + --tblr-border-color-translucent: rgba(4, 32, 69, 0.14); + --tblr-border-dark-color: #bbc3cd; + --tblr-border-dark-color-translucent: rgba(4, 32, 69, 0.27); + --tblr-border-active-color: #b6bcc3; + --tblr-icon-color: var(--tblr-gray-500); + --tblr-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-disabled-bg: var(--tblr-bg-surface-secondary); + --tblr-disabled-color: var(--tblr-gray-300); + --tblr-code-color: var(--tblr-gray-600); + --tblr-code-bg: var(--tblr-bg-surface-secondary); + --tblr-dark-mode-border-color: #1f2e41; + --tblr-dark-mode-border-color-translucent: rgba(72, 110, 149, 0.14); + --tblr-dark-mode-border-color-active: #2c415d; + --tblr-dark-mode-border-dark-color: #1f2e41; + --tblr-page-padding: var(--tblr-spacer-3); + --tblr-page-padding-y: var(--tblr-spacer-4); + --tblr-font-weight-light: 300; + --tblr-font-weight-normal: 400; + --tblr-font-weight-medium: 500; + --tblr-font-weight-bold: 600; + --tblr-font-weight-headings: var(--tblr-font-weight-bold); + --tblr-font-size-h1: 1.5rem; + --tblr-font-size-h2: 1.25rem; + --tblr-font-size-h3: 1rem; + --tblr-font-size-h4: 0.875rem; + --tblr-font-size-h5: 0.75rem; + --tblr-font-size-h6: 0.625rem; + --tblr-line-height-h1: 2rem; + --tblr-line-height-h2: 1.75rem; + --tblr-line-height-h3: 1.5rem; + --tblr-line-height-h4: 1.25rem; + --tblr-line-height-h5: 1rem; + --tblr-line-height-h6: 1rem; + --tblr-box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + --tblr-box-shadow-border: inset 0 0 0 1px var(--tblr-border-color-translucent); + --tblr-box-shadow-transparent: 0 0 0 0 transparent; + --tblr-box-shadow-input: 0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06); + --tblr-box-shadow-card: 0 0 4px rgba(var(--tblr-body-color-rgb), 0.04); + --tblr-box-shadow-card-hover: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; + --tblr-box-shadow-dropdown: 0 16px 24px 2px rgba(0, 0, 0, 0.07), 0 6px 30px 5px rgba(0, 0, 0, 0.06), 0 8px 10px -5px rgba(0, 0, 0, 0.1); +} +@media (max-width: 991.98px) { + :root, + :host, + [data-bs-theme=light] { + --tblr-page-padding: var(--tblr-spacer-2); + } +} + +@keyframes pulse { + from { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } + 50% { + transform: scale3d(1, 1, 1); + opacity: 1; + } + to { + opacity: 1; + transform: scale3d(0.8, 0.8, 0.8); + } +} +@keyframes tada { + 0% { + transform: scale3d(1, 1, 1); + } + 10%, 5% { + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, 5deg); + } + 15%, 25%, 35%, 45% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -5deg); + } + 20%, 30%, 40% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 5deg); + } + 50% { + transform: scale3d(1, 1, 1); + } +} +@keyframes rotate-360 { + from { + transform: rotate(0deg); + } + to { + transform: rotate(-360deg); + } +} +@keyframes blink { + from { + opacity: 0; + } + 50% { + opacity: 1; + } + to { + opacity: 0; + } +} +body { + letter-spacing: 0; + touch-action: manipulation; + text-rendering: optimizeLegibility; + font-feature-settings: "liga" 0; + position: relative; + min-height: 100%; + height: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +@media print { + body { + background: transparent; + } +} + +* { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} + +*::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + *::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} + +*::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} + +*::-webkit-scrollbar-track { + background: transparent; +} + +*:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} + +*::-webkit-scrollbar-corner { + background: transparent; +} + +.layout-fluid .container, +.layout-fluid [class^=container-], +.layout-fluid [class*=" container-"] { + max-width: 100%; +} + +.layout-boxed { + --tblr-theme-boxed-border-radius: 0; + --tblr-theme-boxed-width: 1320px; +} +@media (min-width: 768px) { + .layout-boxed { + background: #182433 linear-gradient(to left, rgba(255, 255, 255, 0.1), transparent) fixed; + padding: 1rem; + --tblr-theme-boxed-border-radius: 4px; + } +} +.layout-boxed .page { + margin: 0 auto; + max-width: var(--tblr-theme-boxed-width); + border-radius: var(--tblr-theme-boxed-border-radius); + color: var(--tblr-body-color); +} +@media (min-width: 768px) { + .layout-boxed .page { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background: var(--tblr-body-bg); + } +} +.layout-boxed .page > .navbar:first-child { + border-top-right-radius: var(--tblr-theme-boxed-border-radius); + border-top-left-radius: var(--tblr-theme-boxed-border-radius); +} + +/** +Navbar + */ +.navbar { + --tblr-navbar-bg: var(--tblr-bg-surface); + --tblr-navbar-border-width: var(--tblr-border-width); + --tblr-navbar-active-border-color: var(--tblr-primary); + --tblr-navbar-active-bg: rgba(0, 0, 0, 0.06); + --tblr-navbar-color: var(--tblr-body-color); + --tblr-navbar-border-color: var(--tblr-border-color); + align-items: stretch; + min-height: 3.5rem; + box-shadow: inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color); + background: var(--tblr-navbar-bg); + color: var(--tblr-navbar-color); +} +.navbar-collapse .navbar { + flex-grow: 1; +} +.navbar.collapsing { + min-height: 0; +} +.navbar .dropdown-menu { + position: absolute; + z-index: 1030; +} +.navbar .navbar-nav { + min-height: 3rem; +} +.navbar .navbar-nav .nav-link { + position: relative; + min-width: 2rem; + min-height: 2rem; + justify-content: center; + border-radius: var(--tblr-border-radius); +} +.navbar .navbar-nav .nav-link .badge { + position: absolute; + top: 0.375rem; + left: 0.375rem; + transform: translate(-50%, -50%); +} + +.navbar-nav { + margin: 0; + padding: 0; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 576px) { + .navbar-expand-sm .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-sm .nav-item.active { + position: relative; + } + .navbar-expand-sm .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-sm.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-sm.navbar-vertical ~ .navbar, + .navbar-expand-sm.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-sm.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-sm.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 767.98px) { + .navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-expand-md .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-md .nav-item.active { + position: relative; + } + .navbar-expand-md .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-md.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-md.navbar-vertical ~ .navbar, + .navbar-expand-md.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-md.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-md.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 991.98px) { + .navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-expand-lg .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-lg .nav-item.active { + position: relative; + } + .navbar-expand-lg .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-lg.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-lg.navbar-vertical ~ .navbar, + .navbar-expand-lg.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-lg.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-lg.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 1199.98px) { + .navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xl .nav-item.active { + position: relative; + } + .navbar-expand-xl .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xl.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xl.navbar-vertical ~ .navbar, + .navbar-expand-xl.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-xl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +@media (max-width: 1399.98px) { + .navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl .navbar-collapse { + width: auto; + flex: 1 1 auto; + } + .navbar-expand-xxl .nav-item.active { + position: relative; + } + .navbar-expand-xxl .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; + } + .navbar-expand-xxl.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); + } + .navbar-expand-xxl.navbar-vertical ~ .navbar, + .navbar-expand-xxl.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; + } + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .navbar, + .navbar-expand-xxl.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; + } +} +.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-expand .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; +} +.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-right: auto; +} +.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; +} +.navbar-expand .navbar-collapse { + width: auto; + flex: 1 1 auto; +} +.navbar-expand .nav-item.active { + position: relative; +} +.navbar-expand .nav-item.active:after { + content: ""; + position: absolute; + right: 0; + left: 0; + bottom: -0.25rem; + border: 0 var(--tblr-border-style) var(--tblr-navbar-active-border-color); + border-bottom-width: 2px; +} +.navbar-expand.navbar-vertical { + box-shadow: inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical.navbar-right { + box-shadow: inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color); +} +.navbar-expand.navbar-vertical ~ .navbar, +.navbar-expand.navbar-vertical ~ .page-wrapper { + margin-right: 15rem; +} +.navbar-expand.navbar-vertical.navbar-right ~ .navbar, +.navbar-expand.navbar-vertical.navbar-right ~ .page-wrapper { + margin-right: 0; + margin-left: 15rem; +} + +/** +Navbar brand + */ +.navbar-brand { + display: inline-flex; + align-items: center; + font-weight: var(--tblr-font-weight-bold); + margin: 0; + line-height: 1; + gap: 0.5rem; +} + +.navbar-brand-image { + height: 2rem; + width: auto; +} + +/** +Navbar toggler + */ +.navbar-toggler { + border: 0; + width: 2rem; + height: 2rem; + position: relative; + display: flex; + align-items: center; + justify-content: center; +} + +.navbar-toggler-icon { + height: 2px; + width: 1.25em; + background: currentColor; + border-radius: 10px; + transition: top 0.2s 0.2s, bottom 0.2s 0.2s, transform 0.2s, opacity 0s 0.2s; + position: relative; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler-icon:before, .navbar-toggler-icon:after { + content: ""; + display: block; + height: inherit; + width: inherit; + border-radius: inherit; + background: inherit; + position: absolute; + right: 0; + transition: inherit; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler-icon:before, .navbar-toggler-icon:after { + transition: none; + } +} +.navbar-toggler-icon:before { + top: -0.45em; +} +.navbar-toggler-icon:after { + bottom: -0.45em; +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transform: rotate(-45deg); + transition: top 0.3s, bottom 0.3s, transform 0.3s 0.3s, opacity 0s 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler[aria-expanded=true] .navbar-toggler-icon { + transition: none; + } +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before { + top: 0; + transform: rotate(90deg); +} +.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after { + bottom: 0; + opacity: 0; +} + +/** +Navbar transparent + */ +.navbar-transparent { + --tblr-navbar-border-color: transparent !important; + background: transparent !important; +} + +/** +Navbar nav + */ +.navbar-nav { + align-items: stretch; +} +.navbar-nav .nav-item { + display: flex; + flex-direction: column; + justify-content: center; +} + +/** +Navbar side + */ +.navbar-side { + margin: 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-around; +} + +/** +Navbar vertical + */ +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 576px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-sm { + transition: none; + } +} +@media (min-width: 576px) { + .navbar-vertical.navbar-expand-sm.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-sm .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-sm > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-sm ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-sm ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-sm.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 768px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-md { + transition: none; + } +} +@media (min-width: 768px) { + .navbar-vertical.navbar-expand-md.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-md .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-md .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-md .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-md > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-md ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-md ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-md.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-md .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 992px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-lg { + transition: none; + } +} +@media (min-width: 992px) { + .navbar-vertical.navbar-expand-lg.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-lg .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-lg > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-lg ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-lg ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-lg.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1200px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xl { + transition: none; + } +} +@media (min-width: 1200px) { + .navbar-vertical.navbar-expand-xl.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xl ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xl ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-xl.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; + } +} +@media (min-width: 1400px) and (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand-xxl { + transition: none; + } +} +@media (min-width: 1400px) { + .navbar-vertical.navbar-expand-xxl.navbar-right { + right: auto; + left: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-brand { + padding: 0.75rem 0; + justify-content: center; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + align-items: stretch; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .navbar-vertical.navbar-expand-xxl > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl ~ .page { + padding-right: 15rem; + } + .navbar-vertical.navbar-expand-xxl ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; + } + .navbar-vertical.navbar-expand-xxl.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns { + flex-direction: column; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after { + margin-right: auto; + } + .navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; + } +} +.navbar-vertical.navbar-expand { + width: 15rem; + position: fixed; + top: 0; + right: 0; + bottom: 0; + z-index: 1030; + align-items: flex-start; + transition: transform 0.3s; + overflow-y: scroll; + padding: 0; +} +@media (prefers-reduced-motion: reduce) { + .navbar-vertical.navbar-expand { + transition: none; + } +} +.navbar-vertical.navbar-expand.navbar-right { + right: auto; + left: 0; +} +.navbar-vertical.navbar-expand .navbar-brand { + padding: 0.75rem 0; + justify-content: center; +} +.navbar-vertical.navbar-expand .navbar-collapse { + align-items: stretch; +} +.navbar-vertical.navbar-expand .navbar-nav { + flex-direction: column; + flex-grow: 1; + min-height: auto; +} +.navbar-vertical.navbar-expand .navbar-nav .nav-link { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.navbar-vertical.navbar-expand > [class^=container] { + flex-direction: column; + align-items: stretch; + min-height: 100%; + justify-content: flex-start; + padding: 0; +} +.navbar-vertical.navbar-expand ~ .page { + padding-right: 15rem; +} +.navbar-vertical.navbar-expand ~ .page [class^=container] { + padding-right: 1.5rem; + padding-left: 1.5rem; +} +.navbar-vertical.navbar-expand.navbar-right ~ .page { + padding-right: 0; + padding-left: 15rem; +} +.navbar-vertical.navbar-expand .navbar-collapse { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse [class^=container] { + flex-direction: column; + align-items: stretch; + padding: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav { + margin-right: 0; + margin-left: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link { + padding: 0.5rem calc(calc(var(--tblr-page-padding) * 2) / 2); + justify-content: flex-start; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns { + flex-direction: column; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu { + padding: 0; + background: transparent; + position: static; + color: inherit; + box-shadow: none; + border: none; + min-width: 0; + margin: 0; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item { + min-width: 0; + display: flex; + width: auto; + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 1.75rem); + color: inherit; +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active, .navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active { + background: var(--tblr-navbar-active-bg); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 3.25rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item { + padding-right: calc(calc(calc(var(--tblr-page-padding) * 2) / 2) + 4.75rem); +} +.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after { + margin-right: auto; +} +.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after { + border-bottom-width: 0; + border-right-width: 3px; + left: auto; + top: 0; + bottom: 0; +} + +.navbar-overlap:after { + content: ""; + height: 9rem; + position: absolute; + top: 100%; + right: 0; + left: 0; + background: inherit; + z-index: -1; + box-shadow: inherit; +} + +.page { + display: flex; + flex-direction: column; + position: relative; + min-height: 100%; +} + +.page-center .container { + margin-top: auto; + margin-bottom: auto; +} + +.page-wrapper { + flex: 1; + display: flex; + flex-direction: column; +} +@media print { + .page-wrapper { + margin: 0 !important; + } +} + +.page-wrapper-full .page-body:first-child { + margin: 0; + border-top: 0; +} + +.page-body { + margin-top: var(--tblr-page-padding-y); + margin-bottom: var(--tblr-page-padding-y); +} + +.page-body-card { + background: var(--tblr-bg-surface); + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + padding: var(--tblr-page-padding) 0; + margin-bottom: 0; + flex: 1; +} +.page-body ~ .page-body-card { + margin-top: 0; +} + +.page-cover { + background: no-repeat center/cover; + min-height: 9rem; +} +@media (min-width: 768px) { + .page-cover { + min-height: 12rem; + } +} +@media (min-width: 992px) { + .page-cover { + min-height: 15rem; + } +} + +.page-cover-overlay { + position: relative; +} +.page-cover-overlay:after { + content: ""; + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + background-image: linear-gradient(-180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.page-header { + display: flex; + flex-wrap: wrap; + min-height: 2.25rem; + flex-direction: column; + justify-content: center; +} +.page-wrapper .page-header { + margin: var(--tblr-page-padding-y) 0 0; +} + +.page-header-border { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding: var(--tblr-page-padding-y) 0; + margin: 0 !important; + background-color: var(--tblr-bg-surface); +} + +.page-pretitle { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.page-title { + margin: 0; + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h4); + font-weight: var(--tblr-font-weight-headings); + color: inherit; + display: flex; + align-items: center; +} +.page-title svg { + width: 1.5rem; + height: 1.5rem; + margin-left: 0.25rem; +} + +.page-title-lg { + font-size: 1.5rem; + line-height: 2rem; +} + +.page-subtitle { + margin-top: 0.25rem; + color: var(--tblr-secondary); +} + +.page-cover { + --tblr-page-cover-blur: 20px; + --tblr-page-cover-padding: 1rem; + min-height: 6rem; + padding: var(--tblr-page-cover-padding) 0; + position: relative; + overflow: hidden; +} + +.page-cover-img { + position: absolute; + top: calc(-2 * var(--tblr-page-cover-blur, 0)); + right: calc(-2 * var(--tblr-page-cover-blur, 0)); + left: calc(-2 * var(--tblr-page-cover-blur, 0)); + bottom: calc(-2 * var(--tblr-page-cover-blur, 0)); + pointer-events: none; + filter: blur(var(--tblr-page-cover-blur)); + -o-object-fit: cover; + object-fit: cover; + background-size: cover; + background-position: center; + z-index: -1; +} + +.page-tabs { + margin-top: 0.5rem; + position: relative; +} + +.page-header-tabs .nav-bordered { + border: 0; +} +.page-header-tabs + .page-body-card { + margin-top: 0; +} + +.footer { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + background-color: #ffffff; + padding: 2rem 0; + color: var(--tblr-secondary); + margin-top: auto; +} + +.footer-transparent { + background-color: transparent; + border-top: 0; +} + +body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light { + display: none !important; +} +body.theme-dark .hide-theme-dark, body[data-bs-theme=dark] .hide-theme-dark { + display: none !important; +} + +[data-bs-theme=dark], body[data-bs-theme=dark] [data-bs-theme=light] { + --tblr-body-color: #fcfdfe; + --tblr-body-color-rgb: 252, 253, 254; + --tblr-muted: #3a4859; + --tblr-body-bg: #151f2c; + --tblr-body-bg-rgb: 21, 31, 44; + --tblr-emphasis-color: #ffffff; + --tblr-emphasis-color-rgb: 255, 255, 255; + --tblr-bg-forms: #151f2c; + --tblr-bg-surface: #182433; + --tblr-bg-surface-dark: #151f2c; + --tblr-bg-surface-secondary: #1b293a; + --tblr-bg-surface-tertiary: #151f2c; + --tblr-link-color: #0069cf; + --tblr-link-hover-color: #0054a6; + --tblr-active-bg: #1b293a; + --tblr-disabled-color: var(--tblr-gray-700); + --tblr-border-color: var(--tblr-dark-mode-border-color); + --tblr-border-color-translucent: var( + --tblr-dark-mode-border-color-translucent + ); + --tblr-border-dark-color: var(--tblr-dark-mode-border-dark-color); + --tblr-border-color-active: var( + --tblr-dark-mode-border-color-active + ); + --tblr-btn-color: #151f2c; + --tblr-code-color: var(--tblr-body-color); + --tblr-code-bg: #1f2e41; + --tblr-primary-lt: #16293f; + --tblr-primary-lt-rgb: 22, 41, 63; + --tblr-secondary-lt: #202c3b; + --tblr-secondary-lt-rgb: 32, 44, 59; + --tblr-success-lt: #1a3235; + --tblr-success-lt-rgb: 26, 50, 53; + --tblr-info-lt: #1c3044; + --tblr-info-lt-rgb: 28, 48, 68; + --tblr-warning-lt: #2e2b2f; + --tblr-warning-lt-rgb: 46, 43, 47; + --tblr-danger-lt: #2b2634; + --tblr-danger-lt-rgb: 43, 38, 52; + --tblr-light-lt: #2f3a47; + --tblr-light-lt-rgb: 47, 58, 71; + --tblr-dark-lt: #182433; + --tblr-dark-lt-rgb: 24, 36, 51; + --tblr-muted-lt: #202c3b; + --tblr-muted-lt-rgb: 32, 44, 59; + --tblr-blue-lt: #16293f; + --tblr-blue-lt-rgb: 22, 41, 63; + --tblr-azure-lt: #1c3044; + --tblr-azure-lt-rgb: 28, 48, 68; + --tblr-indigo-lt: #1c2a45; + --tblr-indigo-lt-rgb: 28, 42, 69; + --tblr-purple-lt: #272742; + --tblr-purple-lt-rgb: 39, 39, 66; + --tblr-pink-lt: #2b2639; + --tblr-pink-lt-rgb: 43, 38, 57; + --tblr-red-lt: #2b2634; + --tblr-red-lt-rgb: 43, 38, 52; + --tblr-orange-lt: #2e2b2f; + --tblr-orange-lt-rgb: 46, 43, 47; + --tblr-yellow-lt: #2e302e; + --tblr-yellow-lt-rgb: 46, 48, 46; + --tblr-lime-lt: #213330; + --tblr-lime-lt-rgb: 33, 51, 48; + --tblr-green-lt: #1a3235; + --tblr-green-lt-rgb: 26, 50, 53; + --tblr-teal-lt: #17313a; + --tblr-teal-lt-rgb: 23, 49, 58; + --tblr-cyan-lt: #183140; + --tblr-cyan-lt-rgb: 24, 49, 64; + --tblr-facebook-lt: #182c46; + --tblr-facebook-lt-rgb: 24, 44, 70; + --tblr-twitter-lt: #193146; + --tblr-twitter-lt-rgb: 25, 49, 70; + --tblr-linkedin-lt: #172b41; + --tblr-linkedin-lt-rgb: 23, 43, 65; + --tblr-google-lt: #2c2834; + --tblr-google-lt-rgb: 44, 40, 52; + --tblr-youtube-lt: #2f202e; + --tblr-youtube-lt-rgb: 47, 32, 46; + --tblr-vimeo-lt: #183345; + --tblr-vimeo-lt-rgb: 24, 51, 69; + --tblr-dribbble-lt: #2d283c; + --tblr-dribbble-lt-rgb: 45, 40, 60; + --tblr-github-lt: #182330; + --tblr-github-lt-rgb: 24, 35, 48; + --tblr-instagram-lt: #2c2737; + --tblr-instagram-lt-rgb: 44, 39, 55; + --tblr-pinterest-lt: #292131; + --tblr-pinterest-lt-rgb: 41, 33, 49; + --tblr-vk-lt: #202e3f; + --tblr-vk-lt-rgb: 32, 46, 63; + --tblr-rss-lt: #2f312e; + --tblr-rss-lt-rgb: 47, 49, 46; + --tblr-flickr-lt: #162a44; + --tblr-flickr-lt-rgb: 22, 42, 68; + --tblr-bitbucket-lt: #162942; + --tblr-bitbucket-lt-rgb: 22, 41, 66; + --tblr-tabler-lt: #16293f; + --tblr-tabler-lt-rgb: 22, 41, 63; +} +[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image { + filter: brightness(0) invert(1); +} + +.accordion { + --tblr-accordion-color: var(--tblr-body-color); +} + +.accordion-button:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} +.accordion-button:after { + opacity: 0.7; +} +.accordion-button:not(.collapsed) { + font-weight: var(--tblr-font-weight-bold); + border-bottom-color: transparent; + box-shadow: none; +} +.accordion-button:not(.collapsed):after { + opacity: 1; +} + +.alert { + --tblr-alert-color: var(--tblr-secondary); + --tblr-alert-bg: var(--tblr-surface); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-right: 0.25rem var(--tblr-border-style) var(--tblr-alert-color); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.alert > :last-child { + margin-bottom: 0; +} + +.alert-important { + border-color: transparent; + background: var(--tblr-alert-color); + color: #fff; +} +.alert-important .alert-icon, +.alert-important .alert-link, +.alert-important .alert-title { + color: inherit; +} +.alert-important .alert-link:hover { + color: inherit; +} +.alert-important .btn-close { + filter: var(--tblr-btn-close-white-filter); +} + +.alert-link, .alert-link:hover { + color: var(--tblr-alert-color); +} + +.alert-primary { + --tblr-alert-color: var(--tblr-primary); +} + +.alert-secondary { + --tblr-alert-color: var(--tblr-secondary); +} + +.alert-success { + --tblr-alert-color: var(--tblr-success); +} + +.alert-info { + --tblr-alert-color: var(--tblr-info); +} + +.alert-warning { + --tblr-alert-color: var(--tblr-warning); +} + +.alert-danger { + --tblr-alert-color: var(--tblr-danger); +} + +.alert-light { + --tblr-alert-color: var(--tblr-light); +} + +.alert-dark { + --tblr-alert-color: var(--tblr-dark); +} + +.alert-muted { + --tblr-alert-color: var(--tblr-muted); +} + +.alert-blue { + --tblr-alert-color: var(--tblr-blue); +} + +.alert-azure { + --tblr-alert-color: var(--tblr-azure); +} + +.alert-indigo { + --tblr-alert-color: var(--tblr-indigo); +} + +.alert-purple { + --tblr-alert-color: var(--tblr-purple); +} + +.alert-pink { + --tblr-alert-color: var(--tblr-pink); +} + +.alert-red { + --tblr-alert-color: var(--tblr-red); +} + +.alert-orange { + --tblr-alert-color: var(--tblr-orange); +} + +.alert-yellow { + --tblr-alert-color: var(--tblr-yellow); +} + +.alert-lime { + --tblr-alert-color: var(--tblr-lime); +} + +.alert-green { + --tblr-alert-color: var(--tblr-green); +} + +.alert-teal { + --tblr-alert-color: var(--tblr-teal); +} + +.alert-cyan { + --tblr-alert-color: var(--tblr-cyan); +} + +.alert-facebook { + --tblr-alert-color: var(--tblr-facebook); +} + +.alert-twitter { + --tblr-alert-color: var(--tblr-twitter); +} + +.alert-linkedin { + --tblr-alert-color: var(--tblr-linkedin); +} + +.alert-google { + --tblr-alert-color: var(--tblr-google); +} + +.alert-youtube { + --tblr-alert-color: var(--tblr-youtube); +} + +.alert-vimeo { + --tblr-alert-color: var(--tblr-vimeo); +} + +.alert-dribbble { + --tblr-alert-color: var(--tblr-dribbble); +} + +.alert-github { + --tblr-alert-color: var(--tblr-github); +} + +.alert-instagram { + --tblr-alert-color: var(--tblr-instagram); +} + +.alert-pinterest { + --tblr-alert-color: var(--tblr-pinterest); +} + +.alert-vk { + --tblr-alert-color: var(--tblr-vk); +} + +.alert-rss { + --tblr-alert-color: var(--tblr-rss); +} + +.alert-flickr { + --tblr-alert-color: var(--tblr-flickr); +} + +.alert-bitbucket { + --tblr-alert-color: var(--tblr-bitbucket); +} + +.alert-tabler { + --tblr-alert-color: var(--tblr-tabler); +} + +.alert-icon { + color: var(--tblr-alert-color); + width: 1.5rem !important; + height: 1.5rem !important; + margin: -0.125rem 0 -0.125rem 1rem; +} + +.alert-title { + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: var(--tblr-font-weight-bold); + margin-bottom: 0.25rem; + color: var(--tblr-alert-color); +} + +.avatar { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-bg: var(--tblr-bg-surface-secondary); + --tblr-avatar-box-shadow: var(--tblr-box-shadow-border); + --tblr-avatar-font-size: 1rem; + --tblr-avatar-icon-size: 1.5rem; + position: relative; + width: var(--tblr-avatar-size); + height: var(--tblr-avatar-size); + font-size: var(--tblr-avatar-font-size); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--tblr-secondary); + text-align: center; + text-transform: uppercase; + vertical-align: bottom; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-avatar-bg) no-repeat center/cover; + border-radius: var(--tblr-border-radius); + box-shadow: var(--tblr-avatar-box-shadow); +} +.avatar .icon { + width: var(--tblr-avatar-icon-size); + height: var(--tblr-avatar-icon-size); +} +.avatar .badge { + position: absolute; + left: 0; + bottom: 0; + border-radius: 100rem; + box-shadow: 0 0 0 calc(var(--tblr-avatar-status-size) / 4) var(--tblr-bg-surface); +} +a.avatar { + cursor: pointer; +} + +.avatar-rounded { + border-radius: 100rem; +} + +.avatar-xxs { + --tblr-avatar-size: 1rem; + --tblr-avatar-status-size: 0.25rem; + --tblr-avatar-font-size: 0.5rem; + --tblr-avatar-icon-size: 0.75rem; +} + +.avatar-xxs .badge:empty { + width: 0.25rem; + height: 0.25rem; +} + +.avatar-xs { + --tblr-avatar-size: 1.25rem; + --tblr-avatar-status-size: 0.375rem; + --tblr-avatar-font-size: 0.625rem; + --tblr-avatar-icon-size: 1rem; +} + +.avatar-xs .badge:empty { + width: 0.375rem; + height: 0.375rem; +} + +.avatar-sm { + --tblr-avatar-size: 2rem; + --tblr-avatar-status-size: 0.5rem; + --tblr-avatar-font-size: 0.75rem; + --tblr-avatar-icon-size: 1.25rem; +} + +.avatar-sm .badge:empty { + width: 0.5rem; + height: 0.5rem; +} + +.avatar-md { + --tblr-avatar-size: 2.5rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 0.875rem; + --tblr-avatar-icon-size: 1.5rem; +} + +.avatar-md .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-lg { + --tblr-avatar-size: 3rem; + --tblr-avatar-status-size: 0.75rem; + --tblr-avatar-font-size: 1.25rem; + --tblr-avatar-icon-size: 2rem; +} + +.avatar-lg .badge:empty { + width: 0.75rem; + height: 0.75rem; +} + +.avatar-xl { + --tblr-avatar-size: 5rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 2rem; + --tblr-avatar-icon-size: 3rem; +} + +.avatar-xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-2xl { + --tblr-avatar-size: 7rem; + --tblr-avatar-status-size: 1rem; + --tblr-avatar-font-size: 3rem; + --tblr-avatar-icon-size: 5rem; +} + +.avatar-2xl .badge:empty { + width: 1rem; + height: 1rem; +} + +.avatar-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} +.avatar-list a.avatar:hover { + z-index: 1; +} + +.avatar-list-stacked { + display: block; + --tblr-list-gap: 0; +} +.avatar-list-stacked .avatar { + margin-left: calc(-0.5 * var(--tblr-avatar-size)) !important; + box-shadow: var(--tblr-avatar-box-shadow), 0 0 0 2px var(--tblr-card-cap-bg, var(--tblr-card-bg, var(--tblr-bg-surface))); +} + +.avatar-upload { + width: 4rem; + height: 4rem; + border: var(--tblr-border-width) dashed var(--tblr-border-color); + background: var(--tblr-bg-forms); + flex-direction: column; + transition: color 0.3s, background-color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .avatar-upload { + transition: none; + } +} +.avatar-upload svg { + width: 1.5rem; + height: 1.5rem; + stroke-width: 1; +} +.avatar-upload:hover { + border-color: var(--tblr-primary); + color: var(--tblr-primary); + text-decoration: none; +} + +.avatar-upload-text { + font-size: 0.625rem; + line-height: 1; + margin-top: 0.25rem; +} + +.avatar-cover { + margin-top: calc(-0.5 * var(--tblr-avatar-size)); + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-body-bg)); +} + +.badge { + justify-content: center; + align-items: center; + background: var(--tblr-bg-surface-secondary); + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + min-width: 1.35714285em; + font-weight: var(--tblr-font-weight-bold); + letter-spacing: 0.04em; + vertical-align: bottom; +} +a.badge { + color: var(--tblr-bg-surface); +} + +.badge .avatar { + box-sizing: content-box; + width: 1.25rem; + height: 1.25rem; + margin: 0 -0.5rem 0 0.5rem; +} +.badge .icon { + width: 1em; + height: 1em; + font-size: 1rem; + stroke-width: 2; +} + +.badge:empty, +.badge-empty { + display: inline-block; + width: 0.5rem; + height: 0.5rem; + min-width: 0; + min-height: auto; + padding: 0; + border-radius: 100rem; + vertical-align: baseline; +} + +.badge-outline { + background-color: transparent; + border: var(--tblr-border-width) var(--tblr-border-style) currentColor; +} + +.badge-pill { + border-radius: 100rem; +} + +.badges-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.badge-notification { + position: absolute !important; + top: 0 !important; + left: 0 !important; + transform: translate(-50%, -50%); + z-index: 1; +} + +.badge-blink { + animation: blink 2s infinite; +} + +.breadcrumb { + --tblr-breadcrumb-item-active-font-weight: var(--tblr-font-weight-bold); + --tblr-breadcrumb-item-disabled-color: var(--tblr-disabled-color); + --tblr-breadcrumb-link-color: var(--tblr-link-color); + padding: 0; + margin: 0; + background: transparent; +} +.breadcrumb a { + color: var(--tblr-breadcrumb-link-color); +} +.breadcrumb a:hover { + text-decoration: underline; +} + +.breadcrumb-muted { + --tblr-breadcrumb-link-color: var(--tblr-secondary); +} + +.breadcrumb-item.active { + font-weight: var(--tblr-breadcrumb-item-active-font-weight); +} +.breadcrumb-item.active a { + color: inherit; + pointer-events: none; +} +.breadcrumb-item.disabled { + color: var(--tblr-breadcrumb-item-disabled-color); +} +.breadcrumb-item.disabled:before { + color: inherit; +} +.breadcrumb-item.disabled a { + color: inherit; + pointer-events: none; +} + +.breadcrumb-dots { + --tblr-breadcrumb-divider: "·"; +} + +.breadcrumb-arrows { + --tblr-breadcrumb-divider: "›"; +} + +.breadcrumb-bullets { + --tblr-breadcrumb-divider: "•"; +} + +.btn { + --tblr-btn-icon-size: 1.25rem; + --tblr-btn-bg: var(--tblr-bg-surface); + --tblr-btn-color: var(--tblr-body-color); + --tblr-btn-border-color: var(--tblr-border-color); + --tblr-btn-hover-bg: var(--tblr-btn-bg); + --tblr-btn-hover-border-color: var(--tblr-border-color-active); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); + --tblr-btn-active-color: var(--tblr-primary); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), 0.04); + --tblr-btn-active-border-color: var(--tblr-primary); + display: inline-flex; + align-items: center; + justify-content: center; + white-space: nowrap; + box-shadow: var(--tblr-btn-box-shadow); +} +.btn .icon { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + min-width: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2); + vertical-align: bottom; + color: inherit; +} +.btn .avatar { + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + margin: 0 calc(var(--tblr-btn-padding-x) / -4) 0 calc(var(--tblr-btn-padding-x) / 2); +} +.btn .icon-right { + margin: 0 calc(var(--tblr-btn-padding-x) / 2) 0 calc(var(--tblr-btn-padding-x) / -4); +} +.btn .badge { + top: auto; +} +.btn-check + .btn:hover { + color: var(--tblr-btn-hover-color); + background-color: var(--tblr-btn-hover-bg); + border-color: var(--tblr-btn-hover-border-color); +} + +.btn-link { + color: #0054a6; + background-color: transparent; + border-color: transparent; + box-shadow: none; +} +.btn-link .icon { + color: inherit; +} +.btn-link:hover { + color: #004385; + border-color: transparent; +} + +.btn-primary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-primary-fg); + --tblr-btn-bg: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-primary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-primary); + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-border-color: var(--tblr-primary); +} + +.btn-secondary { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-secondary-fg); + --tblr-btn-bg: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: rgba(var(--tblr-secondary-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-secondary); + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-border-color: var(--tblr-secondary); +} + +.btn-success { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-success-fg); + --tblr-btn-bg: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: rgba(var(--tblr-success-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-success); + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-border-color: var(--tblr-success); +} + +.btn-info { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-info-fg); + --tblr-btn-bg: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: rgba(var(--tblr-info-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-info); + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-border-color: var(--tblr-info); +} + +.btn-warning { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-warning-fg); + --tblr-btn-bg: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: rgba(var(--tblr-warning-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-warning); + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-border-color: var(--tblr-warning); +} + +.btn-danger { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-danger-fg); + --tblr-btn-bg: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: rgba(var(--tblr-danger-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-danger); + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-border-color: var(--tblr-danger); +} + +.btn-light { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-light-fg); + --tblr-btn-bg: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: rgba(var(--tblr-light-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-light); + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-border-color: var(--tblr-light); +} + +.btn-dark { + --tblr-btn-border-color: var(--tblr-dark-mode-border-color); + --tblr-btn-hover-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-active-border-color: var(--tblr-dark-mode-border-color-active); + --tblr-btn-color: var(--tblr-dark-fg); + --tblr-btn-bg: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dark-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dark); + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-border-color: var(--tblr-dark); +} + +.btn-muted { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-muted-fg); + --tblr-btn-bg: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: rgba(var(--tblr-muted-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-muted); + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-border-color: var(--tblr-muted); +} + +.btn-blue { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-blue-fg); + --tblr-btn-bg: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: rgba(var(--tblr-blue-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-blue); + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-border-color: var(--tblr-blue); +} + +.btn-azure { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-azure-fg); + --tblr-btn-bg: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: rgba(var(--tblr-azure-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-azure); + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-border-color: var(--tblr-azure); +} + +.btn-indigo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-indigo-fg); + --tblr-btn-bg: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-indigo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-indigo); + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-border-color: var(--tblr-indigo); +} + +.btn-purple { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-purple-fg); + --tblr-btn-bg: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: rgba(var(--tblr-purple-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-purple); + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-border-color: var(--tblr-purple); +} + +.btn-pink { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pink-fg); + --tblr-btn-bg: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pink-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pink); + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-border-color: var(--tblr-pink); +} + +.btn-red { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-red-fg); + --tblr-btn-bg: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: rgba(var(--tblr-red-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-red); + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-border-color: var(--tblr-red); +} + +.btn-orange { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-orange-fg); + --tblr-btn-bg: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: rgba(var(--tblr-orange-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-orange); + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-border-color: var(--tblr-orange); +} + +.btn-yellow { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-yellow-fg); + --tblr-btn-bg: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: rgba(var(--tblr-yellow-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-yellow); + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-border-color: var(--tblr-yellow); +} + +.btn-lime { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-lime-fg); + --tblr-btn-bg: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: rgba(var(--tblr-lime-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-lime); + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-border-color: var(--tblr-lime); +} + +.btn-green { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-green-fg); + --tblr-btn-bg: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: rgba(var(--tblr-green-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-green); + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-border-color: var(--tblr-green); +} + +.btn-teal { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-teal-fg); + --tblr-btn-bg: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: rgba(var(--tblr-teal-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-teal); + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-border-color: var(--tblr-teal); +} + +.btn-cyan { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-cyan-fg); + --tblr-btn-bg: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: rgba(var(--tblr-cyan-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-cyan); + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-border-color: var(--tblr-cyan); +} + +.btn-facebook { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-facebook-fg); + --tblr-btn-bg: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: rgba(var(--tblr-facebook-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-facebook); + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-border-color: var(--tblr-facebook); +} + +.btn-twitter { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-twitter-fg); + --tblr-btn-bg: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: rgba(var(--tblr-twitter-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-twitter); + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-border-color: var(--tblr-twitter); +} + +.btn-linkedin { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-linkedin-fg); + --tblr-btn-bg: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: rgba(var(--tblr-linkedin-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-linkedin); + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-border-color: var(--tblr-linkedin); +} + +.btn-google { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-google-fg); + --tblr-btn-bg: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: rgba(var(--tblr-google-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-google); + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-border-color: var(--tblr-google); +} + +.btn-youtube { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-youtube-fg); + --tblr-btn-bg: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: rgba(var(--tblr-youtube-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-youtube); + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-border-color: var(--tblr-youtube); +} + +.btn-vimeo { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vimeo-fg); + --tblr-btn-bg: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vimeo-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vimeo); + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-border-color: var(--tblr-vimeo); +} + +.btn-dribbble { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-dribbble-fg); + --tblr-btn-bg: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: rgba(var(--tblr-dribbble-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-dribbble); + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-border-color: var(--tblr-dribbble); +} + +.btn-github { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-github-fg); + --tblr-btn-bg: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: rgba(var(--tblr-github-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-github); + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-border-color: var(--tblr-github); +} + +.btn-instagram { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-instagram-fg); + --tblr-btn-bg: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: rgba(var(--tblr-instagram-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-instagram); + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-border-color: var(--tblr-instagram); +} + +.btn-pinterest { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-pinterest-fg); + --tblr-btn-bg: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: rgba(var(--tblr-pinterest-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-pinterest); + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-border-color: var(--tblr-pinterest); +} + +.btn-vk { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-vk-fg); + --tblr-btn-bg: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: rgba(var(--tblr-vk-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-vk); + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-border-color: var(--tblr-vk); +} + +.btn-rss { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-rss-fg); + --tblr-btn-bg: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: rgba(var(--tblr-rss-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-rss); + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-border-color: var(--tblr-rss); +} + +.btn-flickr { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-flickr-fg); + --tblr-btn-bg: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: rgba(var(--tblr-flickr-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-flickr); + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-border-color: var(--tblr-flickr); +} + +.btn-bitbucket { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-bitbucket-fg); + --tblr-btn-bg: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: rgba(var(--tblr-bitbucket-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-bitbucket); + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-border-color: var(--tblr-bitbucket); +} + +.btn-tabler { + --tblr-btn-border-color: transparent; + --tblr-btn-hover-border-color: transparent; + --tblr-btn-active-border-color: transparent; + --tblr-btn-color: var(--tblr-tabler-fg); + --tblr-btn-bg: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: rgba(var(--tblr-tabler-rgb), .8); + --tblr-btn-disabled-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler-fg); + --tblr-btn-box-shadow: var(--tblr-box-shadow-input); +} + +.btn-outline-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: var(--tblr-tabler); + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-border-color: transparent; + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-border-color: var(--tblr-tabler); +} + +.btn-ghost-primary { + --tblr-btn-color: var(--tblr-primary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-primary-fg); + --tblr-btn-hover-bg: var(--tblr-primary); + --tblr-btn-hover-border-color: var(--tblr-primary); + --tblr-btn-active-color: var(--tblr-primary-fg); + --tblr-btn-active-bg: var(--tblr-primary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-primary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-secondary { + --tblr-btn-color: var(--tblr-secondary); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-secondary-fg); + --tblr-btn-hover-bg: var(--tblr-secondary); + --tblr-btn-hover-border-color: var(--tblr-secondary); + --tblr-btn-active-color: var(--tblr-secondary-fg); + --tblr-btn-active-bg: var(--tblr-secondary); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-secondary); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-success { + --tblr-btn-color: var(--tblr-success); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-success-fg); + --tblr-btn-hover-bg: var(--tblr-success); + --tblr-btn-hover-border-color: var(--tblr-success); + --tblr-btn-active-color: var(--tblr-success-fg); + --tblr-btn-active-bg: var(--tblr-success); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-success); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-info { + --tblr-btn-color: var(--tblr-info); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-info-fg); + --tblr-btn-hover-bg: var(--tblr-info); + --tblr-btn-hover-border-color: var(--tblr-info); + --tblr-btn-active-color: var(--tblr-info-fg); + --tblr-btn-active-bg: var(--tblr-info); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-info); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-warning { + --tblr-btn-color: var(--tblr-warning); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-warning-fg); + --tblr-btn-hover-bg: var(--tblr-warning); + --tblr-btn-hover-border-color: var(--tblr-warning); + --tblr-btn-active-color: var(--tblr-warning-fg); + --tblr-btn-active-bg: var(--tblr-warning); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-warning); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-danger { + --tblr-btn-color: var(--tblr-danger); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-danger-fg); + --tblr-btn-hover-bg: var(--tblr-danger); + --tblr-btn-hover-border-color: var(--tblr-danger); + --tblr-btn-active-color: var(--tblr-danger-fg); + --tblr-btn-active-bg: var(--tblr-danger); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-danger); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-light { + --tblr-btn-color: var(--tblr-light); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-light-fg); + --tblr-btn-hover-bg: var(--tblr-light); + --tblr-btn-hover-border-color: var(--tblr-light); + --tblr-btn-active-color: var(--tblr-light-fg); + --tblr-btn-active-bg: var(--tblr-light); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-light); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dark { + --tblr-btn-color: var(--tblr-dark); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dark-fg); + --tblr-btn-hover-bg: var(--tblr-dark); + --tblr-btn-hover-border-color: var(--tblr-dark); + --tblr-btn-active-color: var(--tblr-dark-fg); + --tblr-btn-active-bg: var(--tblr-dark); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dark); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-muted { + --tblr-btn-color: var(--tblr-muted); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-muted-fg); + --tblr-btn-hover-bg: var(--tblr-muted); + --tblr-btn-hover-border-color: var(--tblr-muted); + --tblr-btn-active-color: var(--tblr-muted-fg); + --tblr-btn-active-bg: var(--tblr-muted); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-muted); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-blue { + --tblr-btn-color: var(--tblr-blue); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-blue-fg); + --tblr-btn-hover-bg: var(--tblr-blue); + --tblr-btn-hover-border-color: var(--tblr-blue); + --tblr-btn-active-color: var(--tblr-blue-fg); + --tblr-btn-active-bg: var(--tblr-blue); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-blue); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-azure { + --tblr-btn-color: var(--tblr-azure); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-azure-fg); + --tblr-btn-hover-bg: var(--tblr-azure); + --tblr-btn-hover-border-color: var(--tblr-azure); + --tblr-btn-active-color: var(--tblr-azure-fg); + --tblr-btn-active-bg: var(--tblr-azure); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-azure); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-indigo { + --tblr-btn-color: var(--tblr-indigo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-indigo-fg); + --tblr-btn-hover-bg: var(--tblr-indigo); + --tblr-btn-hover-border-color: var(--tblr-indigo); + --tblr-btn-active-color: var(--tblr-indigo-fg); + --tblr-btn-active-bg: var(--tblr-indigo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-indigo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-purple { + --tblr-btn-color: var(--tblr-purple); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-purple-fg); + --tblr-btn-hover-bg: var(--tblr-purple); + --tblr-btn-hover-border-color: var(--tblr-purple); + --tblr-btn-active-color: var(--tblr-purple-fg); + --tblr-btn-active-bg: var(--tblr-purple); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-purple); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pink { + --tblr-btn-color: var(--tblr-pink); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pink-fg); + --tblr-btn-hover-bg: var(--tblr-pink); + --tblr-btn-hover-border-color: var(--tblr-pink); + --tblr-btn-active-color: var(--tblr-pink-fg); + --tblr-btn-active-bg: var(--tblr-pink); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pink); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-red { + --tblr-btn-color: var(--tblr-red); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-red-fg); + --tblr-btn-hover-bg: var(--tblr-red); + --tblr-btn-hover-border-color: var(--tblr-red); + --tblr-btn-active-color: var(--tblr-red-fg); + --tblr-btn-active-bg: var(--tblr-red); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-red); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-orange { + --tblr-btn-color: var(--tblr-orange); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-orange-fg); + --tblr-btn-hover-bg: var(--tblr-orange); + --tblr-btn-hover-border-color: var(--tblr-orange); + --tblr-btn-active-color: var(--tblr-orange-fg); + --tblr-btn-active-bg: var(--tblr-orange); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-orange); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-yellow { + --tblr-btn-color: var(--tblr-yellow); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-yellow-fg); + --tblr-btn-hover-bg: var(--tblr-yellow); + --tblr-btn-hover-border-color: var(--tblr-yellow); + --tblr-btn-active-color: var(--tblr-yellow-fg); + --tblr-btn-active-bg: var(--tblr-yellow); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-yellow); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-lime { + --tblr-btn-color: var(--tblr-lime); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-lime-fg); + --tblr-btn-hover-bg: var(--tblr-lime); + --tblr-btn-hover-border-color: var(--tblr-lime); + --tblr-btn-active-color: var(--tblr-lime-fg); + --tblr-btn-active-bg: var(--tblr-lime); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-lime); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-green { + --tblr-btn-color: var(--tblr-green); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-green-fg); + --tblr-btn-hover-bg: var(--tblr-green); + --tblr-btn-hover-border-color: var(--tblr-green); + --tblr-btn-active-color: var(--tblr-green-fg); + --tblr-btn-active-bg: var(--tblr-green); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-green); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-teal { + --tblr-btn-color: var(--tblr-teal); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-teal-fg); + --tblr-btn-hover-bg: var(--tblr-teal); + --tblr-btn-hover-border-color: var(--tblr-teal); + --tblr-btn-active-color: var(--tblr-teal-fg); + --tblr-btn-active-bg: var(--tblr-teal); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-teal); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-cyan { + --tblr-btn-color: var(--tblr-cyan); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-cyan-fg); + --tblr-btn-hover-bg: var(--tblr-cyan); + --tblr-btn-hover-border-color: var(--tblr-cyan); + --tblr-btn-active-color: var(--tblr-cyan-fg); + --tblr-btn-active-bg: var(--tblr-cyan); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-cyan); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-facebook { + --tblr-btn-color: var(--tblr-facebook); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-facebook-fg); + --tblr-btn-hover-bg: var(--tblr-facebook); + --tblr-btn-hover-border-color: var(--tblr-facebook); + --tblr-btn-active-color: var(--tblr-facebook-fg); + --tblr-btn-active-bg: var(--tblr-facebook); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-facebook); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-twitter { + --tblr-btn-color: var(--tblr-twitter); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-twitter-fg); + --tblr-btn-hover-bg: var(--tblr-twitter); + --tblr-btn-hover-border-color: var(--tblr-twitter); + --tblr-btn-active-color: var(--tblr-twitter-fg); + --tblr-btn-active-bg: var(--tblr-twitter); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-twitter); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-linkedin { + --tblr-btn-color: var(--tblr-linkedin); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-linkedin-fg); + --tblr-btn-hover-bg: var(--tblr-linkedin); + --tblr-btn-hover-border-color: var(--tblr-linkedin); + --tblr-btn-active-color: var(--tblr-linkedin-fg); + --tblr-btn-active-bg: var(--tblr-linkedin); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-linkedin); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-google { + --tblr-btn-color: var(--tblr-google); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-google-fg); + --tblr-btn-hover-bg: var(--tblr-google); + --tblr-btn-hover-border-color: var(--tblr-google); + --tblr-btn-active-color: var(--tblr-google-fg); + --tblr-btn-active-bg: var(--tblr-google); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-google); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-youtube { + --tblr-btn-color: var(--tblr-youtube); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-youtube-fg); + --tblr-btn-hover-bg: var(--tblr-youtube); + --tblr-btn-hover-border-color: var(--tblr-youtube); + --tblr-btn-active-color: var(--tblr-youtube-fg); + --tblr-btn-active-bg: var(--tblr-youtube); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-youtube); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vimeo { + --tblr-btn-color: var(--tblr-vimeo); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vimeo-fg); + --tblr-btn-hover-bg: var(--tblr-vimeo); + --tblr-btn-hover-border-color: var(--tblr-vimeo); + --tblr-btn-active-color: var(--tblr-vimeo-fg); + --tblr-btn-active-bg: var(--tblr-vimeo); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vimeo); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-dribbble { + --tblr-btn-color: var(--tblr-dribbble); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-dribbble-fg); + --tblr-btn-hover-bg: var(--tblr-dribbble); + --tblr-btn-hover-border-color: var(--tblr-dribbble); + --tblr-btn-active-color: var(--tblr-dribbble-fg); + --tblr-btn-active-bg: var(--tblr-dribbble); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-dribbble); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-github { + --tblr-btn-color: var(--tblr-github); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-github-fg); + --tblr-btn-hover-bg: var(--tblr-github); + --tblr-btn-hover-border-color: var(--tblr-github); + --tblr-btn-active-color: var(--tblr-github-fg); + --tblr-btn-active-bg: var(--tblr-github); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-github); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-instagram { + --tblr-btn-color: var(--tblr-instagram); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-instagram-fg); + --tblr-btn-hover-bg: var(--tblr-instagram); + --tblr-btn-hover-border-color: var(--tblr-instagram); + --tblr-btn-active-color: var(--tblr-instagram-fg); + --tblr-btn-active-bg: var(--tblr-instagram); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-instagram); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-pinterest { + --tblr-btn-color: var(--tblr-pinterest); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-pinterest-fg); + --tblr-btn-hover-bg: var(--tblr-pinterest); + --tblr-btn-hover-border-color: var(--tblr-pinterest); + --tblr-btn-active-color: var(--tblr-pinterest-fg); + --tblr-btn-active-bg: var(--tblr-pinterest); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-pinterest); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-vk { + --tblr-btn-color: var(--tblr-vk); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-vk-fg); + --tblr-btn-hover-bg: var(--tblr-vk); + --tblr-btn-hover-border-color: var(--tblr-vk); + --tblr-btn-active-color: var(--tblr-vk-fg); + --tblr-btn-active-bg: var(--tblr-vk); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-vk); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-rss { + --tblr-btn-color: var(--tblr-rss); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-rss-fg); + --tblr-btn-hover-bg: var(--tblr-rss); + --tblr-btn-hover-border-color: var(--tblr-rss); + --tblr-btn-active-color: var(--tblr-rss-fg); + --tblr-btn-active-bg: var(--tblr-rss); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-rss); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-flickr { + --tblr-btn-color: var(--tblr-flickr); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-flickr-fg); + --tblr-btn-hover-bg: var(--tblr-flickr); + --tblr-btn-hover-border-color: var(--tblr-flickr); + --tblr-btn-active-color: var(--tblr-flickr-fg); + --tblr-btn-active-bg: var(--tblr-flickr); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-flickr); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-bitbucket { + --tblr-btn-color: var(--tblr-bitbucket); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-bitbucket-fg); + --tblr-btn-hover-bg: var(--tblr-bitbucket); + --tblr-btn-hover-border-color: var(--tblr-bitbucket); + --tblr-btn-active-color: var(--tblr-bitbucket-fg); + --tblr-btn-active-bg: var(--tblr-bitbucket); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-bitbucket); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-ghost-tabler { + --tblr-btn-color: var(--tblr-tabler); + --tblr-btn-bg: transparent; + --tblr-btn-border-color: transparent; + --tblr-btn-hover-color: var(--tblr-tabler-fg); + --tblr-btn-hover-bg: var(--tblr-tabler); + --tblr-btn-hover-border-color: var(--tblr-tabler); + --tblr-btn-active-color: var(--tblr-tabler-fg); + --tblr-btn-active-bg: var(--tblr-tabler); + --tblr-btn-active-border-color: transparent; + --tblr-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --tblr-btn-disabled-color: var(--tblr-tabler); + --tblr-btn-disabled-bg: transparent; + --tblr-btn-disabled-border-color: transparent; + --tblr-gradient: none; + --tblr-btn-box-shadow: none; +} + +.btn-sm, .btn-group-sm > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: .75rem; +} + +.btn-lg, .btn-group-lg > .btn { + --tblr-btn-line-height: 1.5; + --tblr-btn-icon-size: 2rem; +} + +.btn-pill { + padding-left: 1.5em; + padding-right: 1.5em; + border-radius: 10rem; +} +.btn-pill[class*=btn-icon] { + padding: 0.375rem 15px; +} + +.btn-square { + border-radius: 0; +} + +.btn-icon { + min-width: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + min-height: calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2); + padding-right: 0; + padding-left: 0; +} +.btn-icon .icon { + margin: calc(-1 * var(--tblr-btn-padding-x)); +} + +.btn-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.btn-floating { + position: fixed; + z-index: 1030; + bottom: 1.5rem; + left: 1.5rem; + border-radius: 100rem; +} + +.btn-loading { + position: relative; + color: transparent !important; + text-shadow: none !important; + pointer-events: none; +} +.btn-loading > * { + opacity: 0; +} +.btn-loading:after { + content: ""; + display: inline-block; + vertical-align: text-bottom; + border: 2px var(--tblr-border-style) currentColor; + border-left-color: transparent; + border-radius: 100rem; + color: var(--tblr-btn-color); + position: absolute; + width: var(--tblr-btn-icon-size); + height: var(--tblr-btn-icon-size); + right: calc(50% - var(--tblr-btn-icon-size) / 2); + top: calc(50% - var(--tblr-btn-icon-size) / 2); + animation: spinner-border 0.75s linear infinite; +} + +.btn-action { + padding: 0; + border: 0; + color: var(--tblr-secondary); + display: inline-flex; + width: 2rem; + height: 2rem; + align-items: center; + justify-content: center; + border-radius: var(--tblr-border-radius); + background: transparent; +} +.btn-action:after { + content: none; +} +.btn-action:focus { + outline: none; + box-shadow: none; +} +.btn-action:hover, .btn-action.show { + color: var(--tblr-body-color); + background: var(--tblr-active-bg); +} +.btn-action.show { + color: var(--tblr-primary); +} +.btn-action .icon { + margin: 0; + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; + stroke-width: 1; +} + +.btn-actions { + display: flex; +} + +.btn-group, +.btn-group-vertical { + box-shadow: var(--tblr-box-shadow-input); +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 5; +} +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus { + z-index: 1; +} + +.calendar { + display: block; + font-size: 0.765625rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.calendar-nav { + display: flex; + align-items: center; +} + +.calendar-title { + flex: 1; + text-align: center; +} + +.calendar-body, +.calendar-header { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + padding: 0.5rem 0; +} + +.calendar-header { + color: var(--tblr-secondary); +} + +.calendar-date { + flex: 0 0 14.2857142857%; + max-width: 14.2857142857%; + padding: 0.2rem; + text-align: center; + border: 0; +} +.calendar-date.next-month, .calendar-date.prev-month { + opacity: 0.25; +} +.calendar-date .date-item { + position: relative; + display: inline-block; + width: 1.4rem; + height: 1.4rem; + line-height: 1.4rem; + color: #66758c; + text-align: center; + text-decoration: none; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: 100% 0; + border: var(--tblr-border-width) var(--tblr-border-style) transparent; + border-radius: 100rem; + outline: 0; + transition: background 0.3s, border 0.3s, box-shadow 0.32s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .calendar-date .date-item { + transition: none; + } +} +.calendar-date .date-item:hover { + color: var(--tblr-primary); + text-decoration: none; + background: #fefeff; + border-color: var(--tblr-border-color); +} +.calendar-date .date-today { + color: var(--tblr-primary); + border-color: var(--tblr-border-color); +} + +.calendar-range { + position: relative; +} +.calendar-range:before { + position: absolute; + top: 50%; + left: 0; + right: 0; + height: 1.4rem; + content: ""; + background: rgba(var(--tblr-primary-rgb), 0.1); + transform: translateY(-50%); +} +.calendar-range.range-start .date-item, .calendar-range.range-end .date-item { + color: #ffffff; + background: var(--tblr-primary); + border-color: var(--tblr-primary); +} +.calendar-range.range-start:before { + right: 50%; +} +.calendar-range.range-end:before { + left: 50%; +} + +.carousel-indicators-vertical { + right: auto; + top: 0; + margin: 0 0 0 1rem; + flex-direction: column; +} +.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0 3px; + width: 3px; + height: 30px; + border: 0; + border-right: 10px var(--tblr-border-style) transparent; + border-left: 10px var(--tblr-border-style) transparent; +} + +.carousel-indicators-dot [data-bs-target] { + width: 0.5rem; + height: 0.5rem; + border-radius: 100rem; + border: 10px var(--tblr-border-style) transparent; + margin: 0; +} + +.carousel-indicators-thumb [data-bs-target] { + width: 2rem; + height: auto; + background: no-repeat center/cover; + border: 0; + border-radius: var(--tblr-border-radius); + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0; + margin: 0 3px; + opacity: 0.75; +} +@media (min-width: 992px) { + .carousel-indicators-thumb [data-bs-target] { + width: 4rem; + } +} +.carousel-indicators-thumb [data-bs-target]:before { + content: ""; + padding-top: var(--tblr-aspect-ratio, 100%); + display: block; +} +.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target] { + margin: 3px 0; +} + +.carousel-caption-background { + background: red; + position: absolute; + right: 0; + left: 0; + bottom: 0; + height: 90%; + background: linear-gradient(0deg, rgba(24, 36, 51, 0.9), rgba(24, 36, 51, 0)); +} + +.card { + transition: transform 0.3s ease-out, opacity 0.3s ease-out, box-shadow 0.3s ease-out; +} +@media (prefers-reduced-motion: reduce) { + .card { + transition: none; + } +} +@media print { + .card { + border: none; + box-shadow: none; + } +} +a.card { + color: inherit; +} +a.card:hover { + text-decoration: none; + box-shadow: rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0; +} + +.card .card { + box-shadow: none; +} + +.card-borderless, +.card-borderless .card-header, +.card-borderless .card-footer { + border-color: transparent; +} + +.card-stamp { + --tblr-stamp-size: 7rem; + position: absolute; + top: 0; + left: 0; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + max-height: 100%; + border-top-left-radius: 4px; + opacity: 0.2; + overflow: hidden; + pointer-events: none; +} + +.card-stamp-lg { + --tblr-stamp-size: 13rem; +} + +.card-stamp-icon { + background: var(--tblr-secondary); + color: var(--tblr-card-bg, var(--tblr-bg-surface)); + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + width: calc(var(--tblr-stamp-size) * 1); + height: calc(var(--tblr-stamp-size) * 1); + position: relative; + top: calc(var(--tblr-stamp-size) * -0.25); + left: calc(var(--tblr-stamp-size) * -0.25); + font-size: calc(var(--tblr-stamp-size) * 0.75); + transform: rotate(-10deg); +} +.card-stamp-icon .icon { + stroke-width: 2; + width: calc(var(--tblr-stamp-size) * 0.75); + height: calc(var(--tblr-stamp-size) * 0.75); +} + +.card-img, +.card-img-start { + border-top-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-right-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img, +.card-img-end { + border-top-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); + border-bottom-left-radius: calc(var(--tblr-border-radius) - (var(--tblr-border-width))); +} + +.card-img-overlay { + display: flex; + flex-direction: column; + justify-content: flex-end; +} + +.card-img-overlay-dark { + background-image: linear-gradient(-180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.6) 100%); +} + +.card-inactive { + pointer-events: none; + box-shadow: none; +} +.card-inactive .card-body { + opacity: 0.64; +} + +.card-active { + --tblr-card-border-color: var(--tblr-primary); + --tblr-card-bg: var(--tblr-active-bg); +} + +.card-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 1.25rem 1.25rem; + text-align: center; + transition: background 0.3s; + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + flex: 1; + color: inherit; + font-weight: var(--tblr-font-weight-medium); +} +@media (prefers-reduced-motion: reduce) { + .card-btn { + transition: none; + } +} +.card-btn:hover { + text-decoration: none; + background: rgba(var(--tblr-primary-rgb), 0.04); +} +.card-btn + .card-btn { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Stacked card + */ +.card-stacked { + --tblr-card-stacked-offset: .25rem; + position: relative; +} +.card-stacked:after { + position: absolute; + top: calc(-1 * var(--tblr-card-stacked-offset)); + left: var(--tblr-card-stacked-offset); + right: var(--tblr-card-stacked-offset); + height: var(--tblr-card-stacked-offset); + content: ""; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color); + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-cover { + position: relative; + padding: 1.25rem 1.25rem; + background: #666666 no-repeat center/cover; +} +.card-cover:before { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + content: ""; + background: rgba(24, 36, 51, 0.48); +} +.card-cover:first-child, .card-cover:first-child:before { + border-radius: 4px 4px 0 0; +} + +.card-cover-blurred:before { + -webkit-backdrop-filter: blur(2px); + backdrop-filter: blur(2px); +} + +.card-actions { + margin: -0.5rem auto -0.5rem -0.5rem; + padding-right: 0.5rem; +} +.card-actions a { + text-decoration: none; +} + +.card-header { + color: inherit; + display: flex; + align-items: center; + background: transparent; +} +.card-header:first-child { + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-header-light { + border-bottom-color: transparent; + background: var(--tblr-bg-surface-tertiary); +} + +.card-header-tabs { + background: var(--tblr-bg-surface-tertiary); + flex: 1; + margin: calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1); + padding: calc(var(--tblr-card-cap-padding-y) * 0.5) calc(var(--tblr-card-cap-padding-x) * 0.5) 0; +} + +.card-header-pills { + flex: 1; + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} + +.card-rotate-left { + transform: rotate(1.5deg); +} + +.card-rotate-right { + transform: rotate(-1.5deg); +} + +.card-link { + color: inherit; +} +.card-link:hover { + color: inherit; + text-decoration: none; + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.08); +} + +.card-link-rotate:hover { + transform: rotate(-1.5deg); + opacity: 1; +} + +.card-link-pop:hover { + transform: translateY(-2px); + opacity: 1; +} + +.card-footer { + margin-top: auto; +} +.card-footer:last-child { + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +.card-footer-transparent { + background: transparent; + border-color: transparent; + padding-top: 0; +} + +.card-footer-borderless { + border-top: none; +} + +.card-progress { + height: 0.25rem; +} +.card-progress:last-child { + border-radius: 0 0 2px 2px; +} +.card-progress:first-child { + border-radius: 2px 2px 0 0; +} + +.card-meta { + color: var(--tblr-secondary); +} + +.card-title { + display: block; + margin: 0 0 1rem; + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + color: inherit; + line-height: 1.5rem; +} +a.card-title:hover { + color: inherit; +} + +.card-header .card-title { + margin: 0; +} + +.card-subtitle { + margin-bottom: 1.25rem; + color: var(--tblr-secondary); + font-weight: normal; +} +.card-header .card-subtitle { + margin: 0; +} +.card-title .card-subtitle { + margin: 0 0.25rem 0 0; + font-size: 0.875rem; +} + +.card-body { + position: relative; +} +.card-body > :last-child { + margin-bottom: 0; +} +.card-sm > .card-body { + padding: 1rem; +} +@media (min-width: 768px) { + .card-md > .card-body { + padding: 2.5rem; + } +} +@media (min-width: 768px) { + .card-lg > .card-body { + padding: 2rem; + } +} +@media (min-width: 992px) { + .card-lg > .card-body { + padding: 4rem; + } +} +@media print { + .card-body { + padding: 0; + } +} +.card-body + .card-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.card-body-scrollable { + overflow: auto; +} + +/** +Card optinos + */ +.card-options { + top: 1.5rem; + left: 0.75rem; + display: flex; + margin-right: auto; +} + +.card-options-link { + display: inline-block; + min-width: 1rem; + margin-right: 0.25rem; + color: var(--tblr-secondary); +} + +/** +Card status + */ +.card-status-top { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 2px; + border-radius: var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0; +} + +.card-status-start { + position: absolute; + left: auto; + bottom: 0; + width: 2px; + height: 100%; + border-radius: 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0; +} + +.card-status-bottom { + position: absolute; + top: initial; + bottom: 0; + width: 100%; + height: 2px; + border-radius: 0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius); +} + +/** +Card table + */ +.card-table { + margin-bottom: 0 !important; +} +.card-table tr td:first-child, +.card-table tr th:first-child { + padding-right: 1.25rem; + border-right: 0; +} +.card-table tr td:last-child, +.card-table tr th:last-child { + padding-left: 1.25rem; + border-left: 0; +} +.card-table thead tr:first-child, +.card-table tbody tr:first-child, +.card-table tfoot tr:first-child { + border-top: 0; +} +.card-table thead tr:first-child td, +.card-table thead tr:first-child th, +.card-table tbody tr:first-child td, +.card-table tbody tr:first-child th, +.card-table tfoot tr:first-child td, +.card-table tfoot tr:first-child th { + border-top: 0; +} +.card-body + .card-table { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color); +} + +/* +Card code + */ +.card-code { + padding: 0; +} +.card-code .highlight { + margin: 0; + border: 0; +} +.card-code pre { + margin: 0 !important; + border: 0 !important; +} + +/* +Card chart + */ +.card-chart { + position: relative; + z-index: 1; + height: 3.5rem; +} + +/** +Card avatar + */ +.card-avatar { + margin-right: auto; + margin-left: auto; + box-shadow: 0 0 0 0.25rem var(--tblr-card-bg, var(--tblr-bg-surface)); + margin-top: calc(-1 * var(--tblr-avatar-size) * 0.5); +} + +/* +Card list group + */ +.card-body + .card-list-group { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.card-list-group .list-group-item { + padding-left: 1.25rem; + padding-right: 1.25rem; + border-left: 0; + border-right: 0; + border-radius: 0; +} +.card-list-group .list-group-item:last-child { + border-bottom: 0; +} +.card-list-group .list-group-item:first-child { + border-top: 0; +} + +.card-tabs .nav-tabs { + position: relative; + z-index: 1000; + border-bottom: 0; +} +.card-tabs .nav-tabs .nav-link { + background: var(--tblr-bg-surface-tertiary); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.card-tabs .nav-tabs .nav-link.active, .card-tabs .nav-tabs .nav-link:active, .card-tabs .nav-tabs .nav-link:hover { + border-color: var(--tblr-border-color-translucent); + color: var(--tblr-body-color); +} +.card-tabs .nav-tabs .nav-link.active { + color: inherit; + background: var(--tblr-card-bg, var(--tblr-bg-surface)); + border-bottom-color: transparent; +} +.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link { + border-top-right-radius: 0; +} +.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link { + border-top-left-radius: 0; +} +.card-tabs .nav-tabs .nav-item + .nav-item { + margin-right: calc(-1 * var(--tblr-border-width)); +} +.card-tabs .nav-tabs-bottom { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link { + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-link.active { + border-top-color: transparent; +} +.card-tabs .nav-tabs-bottom .nav-item { + margin-top: calc(-1 * var(--tblr-border-width)); + margin-bottom: 0; +} +.card-tabs .nav-tabs-bottom .nav-item .nav-link { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 0 0 var(--tblr-border-radius) var(--tblr-border-radius); +} +.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link { + border-bottom-right-radius: 0; +} +.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link { + border-bottom-left-radius: 0; +} +.card-tabs .card { + border-bottom-right-radius: 0; +} +.card-tabs .nav-tabs + .tab-content .card { + border-bottom-right-radius: var(--tblr-card-border-radius); + border-top-right-radius: 0; +} + +/** +Card note +*/ +.card-note { + --tblr-card-bg: #fff7dd; + --tblr-card-border-color: #fff1c9; +} + +.btn-close { + cursor: pointer; +} +.btn-close:focus { + outline: none; +} + +.dropdown-menu { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.dropdown-menu.card { + padding: 0; + min-width: 25rem; + display: none; +} +.dropdown-menu.card.show { + display: flex; +} + +.dropdown-item { + min-width: 11rem; + display: flex; + align-items: center; + margin: 0; + line-height: 1.4285714286; +} + +.dropdown-item-icon { + width: 1.25rem !important; + height: 1.25rem !important; + margin-left: 0.5rem; + color: var(--tblr-secondary); + opacity: 0.7; + text-align: center; +} + +.dropdown-item-indicator { + margin-left: 0.5rem; + margin-right: -0.25rem; + height: 1.25rem; + display: inline-flex; + line-height: 1; + vertical-align: bottom; + align-items: center; +} + +.dropdown-header { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-bottom: 0.25rem; + pointer-events: none; +} + +.dropdown-menu-scrollable { + height: auto; + max-height: 13rem; + overflow-x: hidden; +} + +.dropdown-menu-column { + min-width: 11rem; +} +.dropdown-menu-column .dropdown-item { + min-width: 0; +} + +.dropdown-menu-columns { + display: flex; + flex: 0 0.25rem; +} + +.dropdown-menu-arrow:before { + content: ""; + position: absolute; + top: -0.25rem; + right: 0.75rem; + display: block; + background: inherit; + width: 14px; + height: 14px; + transform: rotate(45deg); + transform-origin: center; + border: 1px solid; + border-color: inherit; + z-index: -1; + clip: rect(0px, 9px, 9px, 0px); +} +.dropdown-menu-arrow.dropdown-menu-end:before { + left: 0.75rem; + right: auto; +} + +.dropend > .dropdown-menu { + margin-top: calc(-0.25rem - 1px); + margin-right: -0.25rem; +} +.dropend .dropdown-toggle:after { + margin-right: auto; +} + +.dropdown-menu-card { + padding: 0; +} +.dropdown-menu-card > .card { + margin: 0; + border: 0; + box-shadow: none; +} + +.datagrid { + --tblr-datagrid-padding: 1.5rem; + --tblr-datagrid-item-width: 15rem; + display: grid; + grid-gap: var(--tblr-datagrid-padding); + grid-template-columns: repeat(auto-fit, minmax(var(--tblr-datagrid-item-width), 1fr)); +} + +.datagrid-title { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + margin-bottom: 0.25rem; +} + +.empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + padding: 1rem; + text-align: center; +} +@media (min-width: 768px) { + .empty { + padding: 3rem; + } +} + +.empty-icon { + margin: 0 0 1rem; + width: 3rem; + height: 3rem; + line-height: 1; + color: var(--tblr-secondary); +} +.empty-icon svg { + width: 100%; + height: 100%; +} + +.empty-img { + margin: 0 0 2rem; + line-height: 1; +} +.empty-img img { + height: 8rem; + width: auto; +} + +.empty-header { + margin: 0 0 1rem; + font-size: 4rem; + font-weight: var(--tblr-font-weight-light); + line-height: 1; + color: var(--tblr-secondary); +} + +.empty-title { + font-size: 1.25rem; + line-height: 1.75rem; + font-weight: var(--tblr-font-weight-bold); +} + +.empty-title, +.empty-subtitle { + margin: 0 0 0.5rem; +} + +.empty-action { + margin-top: 1.5rem; +} + +.empty-bordered { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.row > * { + min-width: 0; +} + +.col-separator { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.container-slim { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; + max-width: 16rem; +} +.container-tight { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; + max-width: 30rem; +} +.container-narrow { + --tblr-gutter-x: calc(var(--tblr-page-padding) * 2); + --tblr-gutter-y: 0; + width: 100%; + padding-left: calc(var(--tblr-gutter-x) * 0.5); + padding-right: calc(var(--tblr-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; + max-width: 45rem; +} + +.row-0 { + margin-left: 0; + margin-right: 0; +} +.row-0 > .col, +.row-0 > [class*=col-] { + padding-left: 0; + padding-right: 0; +} +.row-0 .card { + margin-bottom: 0; +} + +.row-sm { + margin-left: -0.375rem; + margin-right: -0.375rem; +} +.row-sm > .col, +.row-sm > [class*=col-] { + padding-left: 0.375rem; + padding-right: 0.375rem; +} +.row-sm .card { + margin-bottom: 0.75rem; +} + +.row-md { + margin-left: -1.5rem; + margin-right: -1.5rem; +} +.row-md > .col, +.row-md > [class*=col-] { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.row-md .card { + margin-bottom: 3rem; +} + +.row-lg { + margin-left: -3rem; + margin-right: -3rem; +} +.row-lg > .col, +.row-lg > [class*=col-] { + padding-left: 3rem; + padding-right: 3rem; +} +.row-lg .card { + margin-bottom: 6rem; +} + +.row-deck > .col, +.row-deck > [class*=col-] { + display: flex; + align-items: stretch; +} +.row-deck > .col .card, +.row-deck > [class*=col-] .card { + flex: 1 1 auto; +} + +.row-cards { + --tblr-gutter-x: var(--tblr-page-padding); + --tblr-gutter-y: var(--tblr-page-padding); + min-width: 0; +} +.row-cards .row-cards { + flex: 1; +} + +.space-y { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x { + display: flex; + gap: 1rem; +} + +.space-y-0 { + display: flex; + flex-direction: column; + gap: 0; +} + +.space-x-0 { + display: flex; + gap: 0; +} + +.space-y-1 { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.space-x-1 { + display: flex; + gap: 0.25rem; +} + +.space-y-2 { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.space-x-2 { + display: flex; + gap: 0.5rem; +} + +.space-y-3 { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.space-x-3 { + display: flex; + gap: 1rem; +} + +.space-y-4 { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.space-x-4 { + display: flex; + gap: 1.5rem; +} + +.space-y-5 { + display: flex; + flex-direction: column; + gap: 2rem; +} + +.space-x-5 { + display: flex; + gap: 2rem; +} + +.space-y-6 { + display: flex; + flex-direction: column; + gap: 3rem; +} + +.space-x-6 { + display: flex; + gap: 3rem; +} + +.space-y-7 { + display: flex; + flex-direction: column; + gap: 5rem; +} + +.space-x-7 { + display: flex; + gap: 5rem; +} + +.space-y-8 { + display: flex; + flex-direction: column; + gap: 8rem; +} + +.space-x-8 { + display: flex; + gap: 8rem; +} + +.divide-y > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x > :not(template):not(:first-child) { + padding-right: 1rem !important; +} +.divide-x > :not(template):not(:last-child) { + padding-left: 1rem !important; +} + +.divide-y-0 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-0 > :not(template):not(:first-child) { + padding-top: 0 !important; +} +.divide-y-0 > :not(template):not(:last-child) { + padding-bottom: 0 !important; +} + +.divide-x-0 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-0 > :not(template):not(:first-child) { + padding-right: 0 !important; +} +.divide-x-0 > :not(template):not(:last-child) { + padding-left: 0 !important; +} + +.divide-y-1 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-1 > :not(template):not(:first-child) { + padding-top: 0.25rem !important; +} +.divide-y-1 > :not(template):not(:last-child) { + padding-bottom: 0.25rem !important; +} + +.divide-x-1 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-1 > :not(template):not(:first-child) { + padding-right: 0.25rem !important; +} +.divide-x-1 > :not(template):not(:last-child) { + padding-left: 0.25rem !important; +} + +.divide-y-2 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-2 > :not(template):not(:first-child) { + padding-top: 0.5rem !important; +} +.divide-y-2 > :not(template):not(:last-child) { + padding-bottom: 0.5rem !important; +} + +.divide-x-2 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-2 > :not(template):not(:first-child) { + padding-right: 0.5rem !important; +} +.divide-x-2 > :not(template):not(:last-child) { + padding-left: 0.5rem !important; +} + +.divide-y-3 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-3 > :not(template):not(:first-child) { + padding-top: 1rem !important; +} +.divide-y-3 > :not(template):not(:last-child) { + padding-bottom: 1rem !important; +} + +.divide-x-3 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-3 > :not(template):not(:first-child) { + padding-right: 1rem !important; +} +.divide-x-3 > :not(template):not(:last-child) { + padding-left: 1rem !important; +} + +.divide-y-4 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-4 > :not(template):not(:first-child) { + padding-top: 1.5rem !important; +} +.divide-y-4 > :not(template):not(:last-child) { + padding-bottom: 1.5rem !important; +} + +.divide-x-4 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-4 > :not(template):not(:first-child) { + padding-right: 1.5rem !important; +} +.divide-x-4 > :not(template):not(:last-child) { + padding-left: 1.5rem !important; +} + +.divide-y-5 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-5 > :not(template):not(:first-child) { + padding-top: 2rem !important; +} +.divide-y-5 > :not(template):not(:last-child) { + padding-bottom: 2rem !important; +} + +.divide-x-5 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-5 > :not(template):not(:first-child) { + padding-right: 2rem !important; +} +.divide-x-5 > :not(template):not(:last-child) { + padding-left: 2rem !important; +} + +.divide-y-6 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-6 > :not(template):not(:first-child) { + padding-top: 3rem !important; +} +.divide-y-6 > :not(template):not(:last-child) { + padding-bottom: 3rem !important; +} + +.divide-x-6 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-6 > :not(template):not(:first-child) { + padding-right: 3rem !important; +} +.divide-x-6 > :not(template):not(:last-child) { + padding-left: 3rem !important; +} + +.divide-y-7 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-7 > :not(template):not(:first-child) { + padding-top: 5rem !important; +} +.divide-y-7 > :not(template):not(:last-child) { + padding-bottom: 5rem !important; +} + +.divide-x-7 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-7 > :not(template):not(:first-child) { + padding-right: 5rem !important; +} +.divide-x-7 > :not(template):not(:last-child) { + padding-left: 5rem !important; +} + +.divide-y-8 > :not(template) ~ :not(template) { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-y-8 > :not(template):not(:first-child) { + padding-top: 8rem !important; +} +.divide-y-8 > :not(template):not(:last-child) { + padding-bottom: 8rem !important; +} + +.divide-x-8 > :not(template) ~ :not(template) { + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent) !important; +} +.divide-x-8 > :not(template):not(:first-child) { + padding-right: 8rem !important; +} +.divide-x-8 > :not(template):not(:last-child) { + padding-left: 8rem !important; +} + +.divide-y-fill { + display: flex; + flex-direction: column; + height: 100%; +} +.divide-y-fill > :not(template) { + flex: 1; + display: flex; + justify-content: center; + flex-direction: column; +} + +.icon { + --tblr-icon-size: 1.25rem; + width: var(--tblr-icon-size); + height: var(--tblr-icon-size); + font-size: var(--tblr-icon-size); + vertical-align: bottom; + stroke-width: 1.5; +} +.icon:hover { + text-decoration: none; +} + +.icon-inline { + --tblr-icon-size: 1rem; + vertical-align: -0.2rem; +} + +.icon-filled { + fill: currentColor; +} + +.icon-sm { + --tblr-icon-size: 1rem; + stroke-width: 1; +} + +.icon-md { + --tblr-icon-size: 2.5rem; + stroke-width: 1; +} + +.icon-lg { + --tblr-icon-size: 3.5rem; + stroke-width: 1; +} + +.icon-pulse { + transition: all 0.15s ease 0s; + animation: pulse 2s ease infinite; + animation-fill-mode: both; +} + +.icon-tada { + transition: all 0.15s ease 0s; + animation: tada 3s ease infinite; + animation-fill-mode: both; +} + +.icon-rotate { + transition: all 0.15s ease 0s; + animation: rotate-360 3s linear infinite; + animation-fill-mode: both; +} + +.img-responsive { + --tblr-img-responsive-ratio: 75%; + background: no-repeat center/cover; + padding-top: var(--tblr-img-responsive-ratio); +} + +.img-responsive-grid { + padding-top: calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y) / 2); +} + +.img-responsive-1x1 { + --tblr-img-responsive-ratio: 100%; +} + +.img-responsive-2x1 { + --tblr-img-responsive-ratio: 50%; +} + +.img-responsive-1x2 { + --tblr-img-responsive-ratio: 200%; +} + +.img-responsive-3x1 { + --tblr-img-responsive-ratio: 33.3333333333%; +} + +.img-responsive-1x3 { + --tblr-img-responsive-ratio: 300%; +} + +.img-responsive-4x3 { + --tblr-img-responsive-ratio: 75%; +} + +.img-responsive-3x4 { + --tblr-img-responsive-ratio: 133.3333333333%; +} + +.img-responsive-16x9 { + --tblr-img-responsive-ratio: 56.25%; +} + +.img-responsive-9x16 { + --tblr-img-responsive-ratio: 177.7777777778%; +} + +.img-responsive-21x9 { + --tblr-img-responsive-ratio: 42.8571428571%; +} + +.img-responsive-9x21 { + --tblr-img-responsive-ratio: 233.3333333333%; +} + +textarea[cols] { + height: auto; +} + +/** +Form label + */ +.col-form-label, +.form-label { + display: block; + font-weight: var(--tblr-font-weight-medium); +} +.col-form-label.required:after, +.form-label.required:after { + content: "*"; + margin-right: 0.25rem; + color: #d63939; +} + +.form-label-description { + float: left; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-secondary); +} + +/** +Form hint + */ +.form-hint { + display: block; + color: var(--tblr-secondary); +} +.form-hint:last-child { + margin-bottom: 0; +} +.form-hint + .form-control { + margin-top: 0.25rem; +} +.form-label + .form-hint { + margin-top: -0.25rem; +} +.input-group + .form-hint, .form-control + .form-hint, .form-select + .form-hint { + margin-top: 0.5rem; +} + +/** +Form select + */ +.form-select:-moz-focusring { + color: var(--tblr-body-color); +} + +/** +Form control + */ +.form-control:-webkit-autofill { + box-shadow: 0 0 0 1000px var(--tblr-body-bg) inset; + color: var(--tblr-body-color); + -webkit-text-fill-color: var(--tblr-body-color); +} +.form-control:disabled, .form-control.disabled { + color: var(--tblr-secondary); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-control[size] { + width: auto; +} + +.form-control-light { + background-color: var(--tblr-gray-100); + border-color: transparent; +} + +.form-control-dark { + background-color: rgba(0, 0, 0, 0.1); + color: #ffffff; + border-color: transparent; +} +.form-control-dark:focus { + background-color: rgba(0, 0, 0, 0.1); + box-shadow: none; + border-color: rgba(255, 255, 255, 0.24); +} +.form-control-dark::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::-ms-input-placeholder { + color: rgba(255, 255, 255, 0.6); +} +.form-control-dark::placeholder { + color: rgba(255, 255, 255, 0.6); +} + +.form-control-rounded { + border-radius: 10rem; +} + +.form-control-flush { + padding: 0; + background: none !important; + border-color: transparent !important; + resize: none; + box-shadow: none !important; + line-height: inherit; +} + +.form-footer { + margin-top: 2rem; +} + +.form-fieldset { + padding: 1rem; + margin-bottom: 1rem; + background: var(--tblr-body-bg); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +/** +Form help + */ +.form-help { + display: inline-flex; + font-weight: var(--tblr-font-weight-bold); + align-items: center; + justify-content: center; + width: 1.125rem; + height: 1.125rem; + font-size: 0.75rem; + color: var(--tblr-secondary); + text-align: center; + text-decoration: none; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-gray-100); + border-radius: 100rem; + transition: background-color 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-help { + transition: none; + } +} +.form-help:hover, .form-help[aria-describedby] { + color: #ffffff; + background: var(--tblr-primary); +} + +/** +Input group + */ +.input-group { + box-shadow: var(--tblr-box-shadow-input); + border-radius: var(--tblr-border-radius); +} +.input-group .form-control, +.input-group .btn { + box-shadow: none; +} + +.input-group-link { + font-size: 0.75rem; +} + +.input-group-flat:focus-within { + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); + border-radius: var(--tblr-border-radius); +} +.input-group-flat:focus-within .form-control, +.input-group-flat:focus-within .input-group-text { + border-color: #80aad3 !important; +} +.input-group-flat .form-control:focus { + border-color: var(--tblr-border-color); + box-shadow: none; +} +.input-group-flat .form-control:not(:last-child) { + border-left: 0; +} +.input-group-flat .form-control:not(:first-child) { + border-right: 0; +} +.input-group-flat .input-group-text { + background: var(--tblr-bg-forms); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .input-group-flat .input-group-text { + transition: none; + } +} +.input-group-flat .input-group-text:first-child { + padding-left: 0; +} +.input-group-flat .input-group-text:last-child { + padding-right: 0; +} + +/** +Upload files + */ +.form-file-button { + margin-right: 0; + border-right: 0; +} + +/** +Icon input + */ +.input-icon { + position: relative; +} +.input-icon .form-control:not(:last-child), +.input-icon .form-select:not(:last-child) { + padding-left: 2.5rem; +} +.input-icon .form-control:not(:first-child), +.input-icon .form-select:not(:last-child) { + padding-right: 2.5rem; +} + +.input-icon-addon { + position: absolute; + top: 0; + bottom: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + min-width: 2.5rem; + color: var(--tblr-icon-color); + pointer-events: none; + font-size: 1.2em; +} +.input-icon-addon:last-child { + left: 0; + right: auto; +} + +/* +Color Input + */ +.form-colorinput { + position: relative; + display: inline-block; + margin: 0; + line-height: 1; + cursor: pointer; +} + +.form-colorinput-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-colorinput-color { + display: block; + width: 1.5rem; + height: 1.5rem; + color: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + border-radius: 3px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} +.form-colorinput-color:before { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + content: ""; + background: no-repeat center center/1.25rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-colorinput-color:before { + transition: none; + } +} +.form-colorinput-input:checked ~ .form-colorinput-color:before { + opacity: 1; +} +.form-colorinput-input:focus ~ .form-colorinput-color { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-colorinput-light .form-colorinput-color:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} + +/** +Image check + */ +.form-imagecheck { + position: relative; + margin: 0; + cursor: pointer; +} + +.form-imagecheck-input { + position: absolute; + z-index: -1; + opacity: 0; +} + +.form-imagecheck-figure { + position: relative; + display: block; + margin: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; +} +.form-imagecheck-input:focus ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure { + border-color: var(--tblr-primary); +} +.form-imagecheck-figure:before { + position: absolute; + top: 0.25rem; + right: 0.25rem; + z-index: 1; + display: block; + width: 1.25rem; + height: 1.25rem; + color: #ffffff; + pointer-events: none; + content: ""; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background: var(--tblr-bg-forms); + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: var(--tblr-border-radius); + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-figure:before { + transition: none; + } +} +.form-imagecheck-input:checked ~ .form-imagecheck-figure:before { + background-color: var(--tblr-primary); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-imagecheck-input[type=radio] ~ .form-imagecheck-figure:before { + border-radius: 50%; +} +.form-imagecheck-input[type=radio]:checked ~ .form-imagecheck-figure:before { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-imagecheck-image { + max-width: 100%; + display: block; + opacity: 0.64; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-image { + transition: none; + } +} +.form-imagecheck-image:first-child { + border-top-right-radius: 2px; + border-top-left-radius: 2px; +} +.form-imagecheck-image:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} +.form-imagecheck:hover .form-imagecheck-image, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-image, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-image { + opacity: 1; +} + +.form-imagecheck-caption { + padding: 0.25rem; + font-size: 0.765625rem; + color: var(--tblr-secondary); + text-align: center; + transition: color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-imagecheck-caption { + transition: none; + } +} +.form-imagecheck:hover .form-imagecheck-caption, .form-imagecheck-input:focus ~ .form-imagecheck-figure .form-imagecheck-caption, .form-imagecheck-input:checked ~ .form-imagecheck-figure .form-imagecheck-caption { + color: var(--tblr-body-color); +} + +/* +Select group + */ +.form-selectgroup { + display: inline-flex; + margin: 0 0 -0.5rem -0.5rem; + flex-wrap: wrap; +} +.form-selectgroup .form-selectgroup-item { + margin: 0 0 0.5rem 0.5rem; +} + +.form-selectgroup-vertical { + flex-direction: column; +} + +.form-selectgroup-item { + display: block; + position: relative; +} + +.form-selectgroup-input { + position: absolute; + top: 0; + right: 0; + z-index: -1; + opacity: 0; +} + +.form-selectgroup-label { + position: relative; + display: block; + min-width: calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2)); + margin: 0; + padding: 0.5625rem 0.75rem; + font-size: 0.875rem; + line-height: 1.4285714286; + color: var(--tblr-secondary); + background: var(--tblr-bg-forms); + text-align: center; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + border-radius: 3px; + box-shadow: var(--tblr-box-shadow-input); + transition: border-color 0.3s, background 0.3s, color 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-selectgroup-label { + transition: none; + } +} +.form-selectgroup-label .icon:only-child { + margin: 0 -0.25rem; +} +.form-selectgroup-label:hover { + color: var(--tblr-body-color); +} + +.form-selectgroup-check { + display: inline-block; + width: 1.25rem; + height: 1.25rem; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + vertical-align: middle; + box-shadow: var(--tblr-box-shadow-input); +} +.form-selectgroup-input[type=checkbox] + .form-selectgroup-label .form-selectgroup-check { + border-radius: var(--tblr-border-radius); +} +.form-selectgroup-input[type=radio] + .form-selectgroup-label .form-selectgroup-check { + border-radius: 50%; +} +.form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-check { + background-color: var(--tblr-primary); + background-repeat: repeat; + background-position: center; + background-size: 1.25rem; + border-color: var(--tblr-border-color-translucent); +} +.form-selectgroup-input[type=checkbox]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e"); +} +.form-selectgroup-input[type=radio]:checked + .form-selectgroup-label .form-selectgroup-check { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e"); +} + +.form-selectgroup-check-floated { + position: absolute; + top: 0.5625rem; + left: 0.5625rem; +} + +.form-selectgroup-input:checked + .form-selectgroup-label { + z-index: 1; + color: var(--tblr-primary); + background: rgba(var(--tblr-primary-rgb), 0.04); + border-color: var(--tblr-primary); +} + +.form-selectgroup-input:focus + .form-selectgroup-label { + z-index: 2; + color: var(--tblr-primary); + border-color: var(--tblr-primary); + box-shadow: 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25); +} + +/** +Alternate version of form select group + */ +.form-selectgroup-boxes .form-selectgroup-label { + text-align: right; + padding: 1.25rem 1.25rem; + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label { + color: inherit; +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-title { + color: var(--tblr-primary); +} +.form-selectgroup-boxes .form-selectgroup-input:checked + .form-selectgroup-label .form-selectgroup-label-content { + opacity: 1; +} + +/** +Select group + */ +.form-selectgroup-pills { + flex-wrap: wrap; + align-items: flex-start; +} +.form-selectgroup-pills .form-selectgroup-item { + flex-grow: 0; +} +.form-selectgroup-pills .form-selectgroup-label { + border-radius: 50px; +} + +/** +Bootstrap color input + */ +.form-control-color::-webkit-color-swatch { + border: none; +} + +/** +Remove the cancel buttons in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/** +Form control dark theme fix + */ +.form-control::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-tertiary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--tblr-btn-color, var(--tblr-secondary-bg)); +} + +/* +Form check + */ +.form-check { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.form-check.form-check-highlight .form-check-input:not(:checked) ~ .form-check-label { + color: var(--tblr-secondary); +} +.form-check .form-check-label-off { + color: var(--tblr-secondary); +} +.form-check .form-check-input:checked ~ .form-check-label-off { + display: none; +} +.form-check .form-check-input:not(:checked) ~ .form-check-label-on { + display: none; +} + +.form-check-input { + background-size: 1.25rem; + margin-top: 0rem; + box-shadow: var(--tblr-box-shadow-input); +} +.form-switch .form-check-input { + transition: background-color 0.3s, background-position 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} + +.form-check-label { + display: block; +} +.form-check-label.required:after { + content: "*"; + margin-right: 0.25rem; + color: #d63939; +} + +.form-check-description { + display: block; + color: var(--tblr-secondary); + font-size: 0.75rem; + margin-top: 0.25rem; +} + +.form-check-single { + margin: 0; +} +.form-check-single .form-check-input { + margin: 0; +} + +/* +Form switch + */ +.form-switch .form-check-input { + height: 1.25rem; + margin-top: 0rem; +} + +.form-switch-lg { + padding-right: 3.5rem; + min-height: 1.5rem; +} +.form-switch-lg .form-check-input { + height: 1.5rem; + width: 2.75rem; + background-size: 1.5rem; + margin-right: -3.5rem; +} +.form-switch-lg .form-check-label { + padding-top: 0.125rem; +} + +/*Correction of Form-check position*/ +.form-check-input:checked { + border: none; +} + +.form-select.is-invalid-lite, .form-control.is-invalid-lite, .form-select.is-valid-lite, .form-control.is-valid-lite { + border-color: var(--tblr-border-color) !important; +} + +/** +Legend + */ +.legend { + --tblr-legend-size: 0.75em; + display: inline-block; + background: var(--tblr-border-color); + width: var(--tblr-legend-size); + height: var(--tblr-legend-size); + border-radius: var(--tblr-border-radius-sm); + border: 1px solid var(--tblr-border-color-translucent); +} + +.list-group { + margin-right: 0; + margin-left: 0; +} + +.list-group-header { + background: var(--tblr-bg-surface-tertiary); + padding: 0.5rem 1.25rem; + font-size: 0.75rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + text-transform: uppercase; + color: var(--tblr-secondary); + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.list-group-flush > .list-group-header:last-child { + border-bottom-width: 0; +} + +.list-group-item { + background-color: inherit; +} + +.list-group-item.active { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); + border-right-color: #0054a6; + border-right-width: 2px; +} + +.list-group-item:active, .list-group-item:focus, .list-group-item:hover { + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #929dab; + background-color: rgba(var(--tblr-text-secondary-rgb), 0.04); +} + +.list-bordered .list-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + margin-top: -1px; +} +.list-bordered .list-item:first-child { + border-top: none; +} + +.list-group-hoverable .list-group-item-actions { + opacity: 0; + transition: opacity 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .list-group-hoverable .list-group-item-actions { + transition: none; + } +} +.list-group-hoverable .list-group-item:hover .list-group-item-actions, +.list-group-hoverable .list-group-item-actions.show { + opacity: 1; +} + +.list-group-transparent { + --tblr-list-group-border-radius: 0; + margin: 0 -1.25rem; +} +.list-group-transparent .list-group-item { + background: none; + border: 0; +} +.list-group-transparent .list-group-item .icon { + color: var(--tblr-secondary); +} +.list-group-transparent .list-group-item.active { + font-weight: var(--tblr-font-weight-bold); + color: inherit; + background: var(--tblr-active-bg); +} +.list-group-transparent .list-group-item.active .icon { + color: inherit; +} + +.list-separated-item { + padding: 1rem 0; +} +.list-separated-item:first-child { + padding-top: 0; +} +.list-separated-item:last-child { + padding-bottom: 0; +} +.list-separated-item + .list-separated-item { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +/** +Inline list + */ +.list-inline-item:not(:last-child) { + margin-left: auto; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.list-inline-dots .list-inline-item + .list-inline-item:before { + content: " · "; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.loader { + position: relative; + display: block; + width: 2.5rem; + height: 2.5rem; + color: #0054a6; + vertical-align: middle; +} +.loader:after { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + content: ""; + border: 1px var(--tblr-border-style); + border-color: transparent; + border-top-color: currentColor; + border-right-color: currentColor; + border-radius: 100rem; + animation: rotate-360 0.6s linear; + animation-iteration-count: infinite; +} + +/** +Dimmer +*/ +.dimmer { + position: relative; +} +.dimmer .loader { + position: absolute; + top: 50%; + left: 0; + right: 0; + display: none; + margin: 0 auto; + transform: translateY(-50%); +} +.dimmer.active .loader { + display: block; +} +.dimmer.active .dimmer-content { + pointer-events: none; + opacity: 0.1; +} + +@keyframes animated-dots { + 0% { + transform: translateX(100%); + } +} +.animated-dots { + display: inline-block; + overflow: hidden; + vertical-align: bottom; +} +.animated-dots:after { + display: inline-block; + content: "..."; + animation: animated-dots 1.2s steps(4, jump-none) infinite; +} + +.modal-content .btn-close { + position: absolute; + top: 0; + left: 0; + width: 3.5rem; + height: 3.5rem; + margin: 0; + padding: 0; + z-index: 10; +} + +.modal-body { + scrollbar-color: rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16) transparent; +} +.modal-body::-webkit-scrollbar { + width: 1rem; + height: 1rem; + -webkit-transition: background 0.3s; + transition: background 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .modal-body::-webkit-scrollbar { + -webkit-transition: none; + transition: none; + } +} +.modal-body::-webkit-scrollbar-thumb { + border-radius: 1rem; + border: 5px solid transparent; + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.16); +} +.modal-body::-webkit-scrollbar-track { + background: transparent; +} +.modal-body:hover::-webkit-scrollbar-thumb { + box-shadow: inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color, var(--tblr-body-color-rgb)), 0.32); +} +.modal-body::-webkit-scrollbar-corner { + background: transparent; +} +.modal-body .modal-title { + margin-bottom: 1rem; +} +.modal-body + .modal-body { + border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} + +.modal-status { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2px; + background: var(--tblr-secondary); + border-radius: var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0; +} + +.modal-header { + align-items: center; + min-height: 3.5rem; + background: transparent; + padding: 0 1.5rem 0 3.5rem; +} + +.modal-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-bold); + color: inherit; + line-height: 1.4285714286; +} + +.modal-footer { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.modal-blur { + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); +} + +.modal-full-width { + max-width: none; + margin: 0 0.5rem; +} + +.nav-vertical, +.nav-vertical .nav { + flex-direction: column; + flex-wrap: nowrap; +} +.nav-vertical .nav { + margin-right: 1.25rem; + border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + padding-right: 0.5rem; +} +.nav-vertical .nav-link.active, +.nav-vertical .nav-item.show .nav-link { + font-weight: var(--tblr-font-weight-bold); +} +.nav-vertical.nav-pills { + margin: 0 -0.75rem; +} + +.nav-bordered { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); +} +.nav-bordered .nav-item + .nav-item { + margin-right: 1.25rem; +} +.nav-bordered .nav-link { + padding-right: 0; + padding-left: 0; + margin: 0 0 -var(--tblr-border-width); + border: 0; + border-bottom: 2px var(--tblr-border-style) transparent; + color: var(--tblr-secondary); +} +.nav-bordered .nav-link.active, +.nav-bordered .nav-item.show .nav-link { + color: var(--tblr-primary); + border-color: var(--tblr-primary); +} + +.nav-link { + display: flex; + transition: color 0.3s; + align-items: center; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} + +.nav-link-toggle { + margin-right: auto; + padding: 0 0.25rem; + transition: transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .nav-link-toggle { + transition: none; + } +} +.nav-link-toggle:after { + content: ""; + display: inline-block; + vertical-align: 0.306em; + width: 0.36em; + height: 0.36em; + border-bottom: 1px var(--tblr-border-style); + border-right: 1px var(--tblr-border-style); + margin-left: 0.1em; + margin-right: 0.4em; + transform: rotate(45deg); +} +.nav-link-toggle:after { + margin: 0; +} +.nav-link[aria-expanded=true] .nav-link-toggle { + transform: rotate(-180deg); +} + +.nav-link-icon { + width: 1.25rem; + height: 1.25rem; + margin-left: 0.5rem; + color: var(--tblr-icon-color); +} +.nav-link-icon svg { + display: block; + height: 100%; +} + +.nav-fill .nav-item .nav-link { + justify-content: center; +} + +.stars { + display: inline-flex; + color: #bbc3cd; + font-size: 0.75rem; +} +.stars .star:not(:first-child) { + margin-right: 0.25rem; +} + +.pagination { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.page-link { + min-width: 1.75rem; + border-radius: var(--tblr-border-radius); +} + +.page-item { + text-align: center; +} +.page-item:not(.active) .page-link:hover { + background: transparent; +} +.page-item.page-prev, .page-item.page-next { + flex: 0 0 50%; + text-align: right; +} +.page-item.page-next { + margin-right: auto; + text-align: left; +} + +.page-item-subtitle { + margin-bottom: 2px; + font-size: 12px; + color: var(--tblr-secondary); + text-transform: uppercase; +} +.page-item.disabled .page-item-subtitle { + color: var(--tblr-disabled-color); +} + +.page-item-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-normal); + color: var(--tblr-body-color); +} +.page-link:hover .page-item-title { + color: #0054a6; +} +.page-item.disabled .page-item-title { + color: var(--tblr-disabled-color); +} + +@keyframes progress-indeterminate { + 0% { + left: 100%; + right: -35%; + } + 100%, 60% { + left: -90%; + right: 100%; + } +} +/** +Progress + */ +.progress { + position: relative; + width: 100%; + line-height: 0.5rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.progress::-webkit-progress-bar { + background: var(--tblr-progress-bg); +} +.progress::-webkit-progress-value { + background-color: var(--tblr-primary); +} +.progress::-moz-progress-bar { + background-color: var(--tblr-primary); +} +.progress::-ms-fill { + background-color: var(--tblr-primary); + border: none; +} + +.progress-sm { + height: 0.25rem; +} + +/** +Progress bar + */ +.progress-bar { + height: 100%; +} + +.progress-bar-indeterminate:after, .progress-bar-indeterminate:before { + position: absolute; + top: 0; + bottom: 0; + right: 0; + content: ""; + background-color: inherit; + will-change: left, right; +} +.progress-bar-indeterminate:before { + animation: progress-indeterminate 1.5s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; +} + +.progress-separated .progress-bar { + box-shadow: 0 0 0 2px var(--tblr-card-bg, var(--tblr-bg-surface)); +} + +/** +Progressbg + */ +.progressbg { + position: relative; + padding: 0.25rem 0.5rem; + display: flex; +} + +.progressbg-text { + position: relative; + z-index: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.progressbg-progress { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + z-index: 0; + height: 100%; + background: transparent; + pointer-events: none; +} + +.progressbg-value { + font-weight: var(--tblr-font-weight-medium); + margin-right: auto; + padding-right: 2rem; +} + +.ribbon { + --tblr-ribbon-margin: 0.25rem; + --tblr-ribbon-border-radius: var(--tblr-border-radius); + position: absolute; + top: 0.75rem; + left: calc(-1 * var(--tblr-ribbon-margin)); + z-index: 1; + padding: 0.25rem 0.75rem; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + line-height: 1; + color: #ffffff; + text-align: center; + text-transform: uppercase; + background: var(--tblr-primary); + border-color: var(--tblr-primary); + border-radius: 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 2rem; + min-width: 2rem; +} +.ribbon:before { + position: absolute; + left: 0; + bottom: 100%; + width: 0; + height: 0; + content: ""; + filter: brightness(70%); + border: calc(var(--tblr-ribbon-margin) * 0.5) var(--tblr-border-style); + border-color: inherit; + border-top-color: transparent; + border-left-color: transparent; +} +.ribbon.bg-blue { + border-color: var(--tblr-blue); +} +.ribbon.bg-blue-lt { + border-color: rgba(var(--tblr-blue-rgb), 0.1) !important; +} +.ribbon.bg-azure { + border-color: var(--tblr-azure); +} +.ribbon.bg-azure-lt { + border-color: rgba(var(--tblr-azure-rgb), 0.1) !important; +} +.ribbon.bg-indigo { + border-color: var(--tblr-indigo); +} +.ribbon.bg-indigo-lt { + border-color: rgba(var(--tblr-indigo-rgb), 0.1) !important; +} +.ribbon.bg-purple { + border-color: var(--tblr-purple); +} +.ribbon.bg-purple-lt { + border-color: rgba(var(--tblr-purple-rgb), 0.1) !important; +} +.ribbon.bg-pink { + border-color: var(--tblr-pink); +} +.ribbon.bg-pink-lt { + border-color: rgba(var(--tblr-pink-rgb), 0.1) !important; +} +.ribbon.bg-red { + border-color: var(--tblr-red); +} +.ribbon.bg-red-lt { + border-color: rgba(var(--tblr-red-rgb), 0.1) !important; +} +.ribbon.bg-orange { + border-color: var(--tblr-orange); +} +.ribbon.bg-orange-lt { + border-color: rgba(var(--tblr-orange-rgb), 0.1) !important; +} +.ribbon.bg-yellow { + border-color: var(--tblr-yellow); +} +.ribbon.bg-yellow-lt { + border-color: rgba(var(--tblr-yellow-rgb), 0.1) !important; +} +.ribbon.bg-lime { + border-color: var(--tblr-lime); +} +.ribbon.bg-lime-lt { + border-color: rgba(var(--tblr-lime-rgb), 0.1) !important; +} +.ribbon.bg-green { + border-color: var(--tblr-green); +} +.ribbon.bg-green-lt { + border-color: rgba(var(--tblr-green-rgb), 0.1) !important; +} +.ribbon.bg-teal { + border-color: var(--tblr-teal); +} +.ribbon.bg-teal-lt { + border-color: rgba(var(--tblr-teal-rgb), 0.1) !important; +} +.ribbon.bg-cyan { + border-color: var(--tblr-cyan); +} +.ribbon.bg-cyan-lt { + border-color: rgba(var(--tblr-cyan-rgb), 0.1) !important; +} +.ribbon .icon { + width: 1.25rem; + height: 1.25rem; + font-size: 1.25rem; +} + +.ribbon-top { + top: calc(-1 * var(--tblr-ribbon-margin)); + left: 0.75rem; + width: 2rem; + padding: 0.5rem 0; + border-radius: var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius); +} +.ribbon-top:before { + top: 0; + left: 100%; + bottom: auto; + border-color: inherit; + border-top-color: transparent; + border-right-color: transparent; +} +.ribbon-top.ribbon-start { + left: auto; + right: 0.75rem; +} +.ribbon-top.ribbon-start:before { + top: 0; + left: 100%; + right: auto; +} + +.ribbon-start { + left: auto; + right: calc(-1 * var(--tblr-ribbon-margin)); +} +.ribbon-start:before { + top: auto; + bottom: 100%; + right: 0; + border-color: inherit; + border-top-color: transparent; + border-right-color: transparent; +} + +.ribbon-bottom { + top: auto; + bottom: 0.75rem; +} + +.ribbon-bookmark { + padding-right: 0.25rem; + border-radius: 0 0 0 var(--tblr-ribbon-border-radius); +} +.ribbon-bookmark:after { + position: absolute; + top: 0; + left: 100%; + display: block; + width: 0; + height: 0; + content: ""; + border: 1rem var(--tblr-border-style); + border-color: inherit; + border-left-width: 0; + border-right-color: transparent; + border-right-width: 0.5rem; +} +.ribbon-bookmark.ribbon-left { + padding-left: 0.5rem; +} +.ribbon-bookmark.ribbon-left:after { + left: auto; + right: 100%; + border-left-color: transparent; + border-left-width: 0.5rem; + border-right-width: 0; +} +.ribbon-bookmark.ribbon-top { + padding-left: 0; + padding-bottom: 0.25rem; + padding-right: 0; + border-radius: var(--tblr-ribbon-border-radius) 0 0 0; +} +.ribbon-bookmark.ribbon-top:after { + top: 100%; + left: 0; + right: 0; + border-color: inherit; + border-width: 1rem; + border-top-width: 0; + border-bottom-color: transparent; + border-bottom-width: 0.5rem; +} + +/** +Markdown + */ +.markdown { + line-height: 1.7142857143; +} +.markdown > :first-child { + margin-top: 0; +} +.markdown > :last-child, +.markdown > :last-child .highlight { + margin-bottom: 0; +} +@media (min-width: 768px) { + .markdown > hr, .markdown > .hr { + margin-top: 3em; + margin-bottom: 3em; + } +} +.markdown > h1, .markdown > .h1, .markdown > h2, .markdown > .h2, .markdown > h3, .markdown > .h3, .markdown > h4, .markdown > .h4, .markdown > h5, .markdown > .h5, .markdown > h6, .markdown > .h6 { + font-weight: var(--tblr-font-weight-bold); +} +.markdown > blockquote { + font-size: 1rem; + margin: 1.5rem 0; + padding: 0.5rem 1.5rem; +} +.markdown > img { + border-radius: var(--tblr-border-radius); +} + +.placeholder:not(.btn):not([class*=bg-]) { + background-color: currentColor !important; +} +.placeholder:not(.avatar):not([class*=card-img-]) { + border-radius: var(--tblr-border-radius); +} + +.steps { + --tblr-steps-color: var(--tblr-primary); + --tblr-steps-inactive-color: var(--tblr-border-color); + --tblr-steps-dot-size: .5rem; + --tblr-steps-border-width: 2px; + display: flex; + flex-wrap: nowrap; + width: 100%; + padding: 0; + margin: 0; + list-style: none; +} + +.steps-blue { + --tblr-steps-color: var(--tblr-blue); +} + +.steps-azure { + --tblr-steps-color: var(--tblr-azure); +} + +.steps-indigo { + --tblr-steps-color: var(--tblr-indigo); +} + +.steps-purple { + --tblr-steps-color: var(--tblr-purple); +} + +.steps-pink { + --tblr-steps-color: var(--tblr-pink); +} + +.steps-red { + --tblr-steps-color: var(--tblr-red); +} + +.steps-orange { + --tblr-steps-color: var(--tblr-orange); +} + +.steps-yellow { + --tblr-steps-color: var(--tblr-yellow); +} + +.steps-lime { + --tblr-steps-color: var(--tblr-lime); +} + +.steps-green { + --tblr-steps-color: var(--tblr-green); +} + +.steps-teal { + --tblr-steps-color: var(--tblr-teal); +} + +.steps-cyan { + --tblr-steps-color: var(--tblr-cyan); +} + +.step-item { + position: relative; + flex: 1 1 0; + min-height: 1rem; + margin-top: 0; + color: inherit; + text-align: center; + cursor: default; + padding-top: calc(var(--tblr-steps-dot-size)); +} +a.step-item { + cursor: pointer; +} +a.step-item:hover { + color: inherit; +} + +.step-item:after, .step-item:before { + background: var(--tblr-steps-color); +} +.step-item:not(:last-child):after { + position: absolute; + right: 50%; + width: 100%; + content: ""; + transform: translateY(-50%); +} +.step-item:after { + top: calc(var(--tblr-steps-dot-size) * 0.5); + height: var(--tblr-steps-border-width); +} +.step-item:before { + content: ""; + position: absolute; + top: 0; + right: 50%; + z-index: 1; + box-sizing: content-box; + display: flex; + align-items: center; + justify-content: center; + border-radius: 100rem; + transform: translateX(50%); + color: var(--tblr-white); + width: var(--tblr-steps-dot-size); + height: var(--tblr-steps-dot-size); +} +.step-item.active { + font-weight: var(--tblr-font-weight-bold); +} +.step-item.active:after { + background: var(--tblr-steps-inactive-color); +} +.step-item.active ~ .step-item { + color: var(--tblr-disabled-color); +} +.step-item.active ~ .step-item:after, .step-item.active ~ .step-item:before { + background: var(--tblr-steps-inactive-color); +} + +.steps-counter { + --tblr-steps-dot-size: 1.5rem; + counter-reset: steps; +} +.steps-counter .step-item { + counter-increment: steps; +} +.steps-counter .step-item:before { + content: counter(steps); +} + +.steps-vertical { + --tblr-steps-dot-offset: 6px; + flex-direction: column; +} +.steps-vertical.steps-counter { + --tblr-steps-dot-offset: -2px; +} +.steps-vertical .step-item { + text-align: right; + padding-top: 0; + padding-right: calc(var(--tblr-steps-dot-size) + 1rem); + min-height: auto; +} +.steps-vertical .step-item:not(:first-child) { + margin-top: 1rem; +} +.steps-vertical .step-item:before { + top: var(--tblr-steps-dot-offset); + right: 0; + transform: translate(0, 0); +} +.steps-vertical .step-item:not(:last-child):after { + position: absolute; + content: ""; + transform: translateX(50%); + top: var(--tblr-steps-dot-offset); + right: calc(var(--tblr-steps-dot-size) * 0.5); + width: var(--tblr-steps-border-width); + height: calc(100% + 1rem); +} + +@keyframes status-pulsate-main { + 40% { + transform: scale(1.25, 1.25); + } + 60% { + transform: scale(1.25, 1.25); + } +} +@keyframes status-pulsate-secondary { + 10% { + transform: scale(1, 1); + } + 30% { + transform: scale(3, 3); + } + 80% { + transform: scale(3, 3); + } + 100% { + transform: scale(1, 1); + } +} +@keyframes status-pulsate-tertiary { + 25% { + transform: scale(1, 1); + } + 80% { + transform: scale(3, 3); + opacity: 0; + } + 100% { + transform: scale(3, 3); + opacity: 0; + } +} +.status { + --tblr-status-height: 1.5rem; + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; + display: inline-flex; + align-items: center; + height: var(--tblr-status-height); + padding: 0.25rem 0.75rem; + gap: 0.5rem; + color: var(--tblr-status-color); + background: rgba(var(--tblr-status-color-rgb), 0.1); + font-size: 0.875rem; + text-transform: none; + letter-spacing: normal; + border-radius: 100rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + margin: 0; +} +.status .status-dot { + background: var(--tblr-status-color); +} +.status .icon { + font-size: 1.25rem; +} + +.status-lite { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color) !important; + background: transparent !important; + color: var(--tblr-body-color) !important; +} + +.status-primary { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-secondary { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-success { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-info { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-warning { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-danger { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-light { + --tblr-status-color: #fcfdfe; + --tblr-status-color-rgb: 252, 253, 254; +} + +.status-dark { + --tblr-status-color: #182433; + --tblr-status-color-rgb: 24, 36, 51; +} + +.status-muted { + --tblr-status-color: #667382; + --tblr-status-color-rgb: 102, 115, 130; +} + +.status-blue { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-azure { + --tblr-status-color: #4299e1; + --tblr-status-color-rgb: 66, 153, 225; +} + +.status-indigo { + --tblr-status-color: #4263eb; + --tblr-status-color-rgb: 66, 99, 235; +} + +.status-purple { + --tblr-status-color: #ae3ec9; + --tblr-status-color-rgb: 174, 62, 201; +} + +.status-pink { + --tblr-status-color: #d6336c; + --tblr-status-color-rgb: 214, 51, 108; +} + +.status-red { + --tblr-status-color: #d63939; + --tblr-status-color-rgb: 214, 57, 57; +} + +.status-orange { + --tblr-status-color: #f76707; + --tblr-status-color-rgb: 247, 103, 7; +} + +.status-yellow { + --tblr-status-color: #f59f00; + --tblr-status-color-rgb: 245, 159, 0; +} + +.status-lime { + --tblr-status-color: #74b816; + --tblr-status-color-rgb: 116, 184, 22; +} + +.status-green { + --tblr-status-color: #2fb344; + --tblr-status-color-rgb: 47, 179, 68; +} + +.status-teal { + --tblr-status-color: #0ca678; + --tblr-status-color-rgb: 12, 166, 120; +} + +.status-cyan { + --tblr-status-color: #17a2b8; + --tblr-status-color-rgb: 23, 162, 184; +} + +.status-facebook { + --tblr-status-color: #1877f2; + --tblr-status-color-rgb: 24, 119, 242; +} + +.status-twitter { + --tblr-status-color: #1da1f2; + --tblr-status-color-rgb: 29, 161, 242; +} + +.status-linkedin { + --tblr-status-color: #0a66c2; + --tblr-status-color-rgb: 10, 102, 194; +} + +.status-google { + --tblr-status-color: #dc4e41; + --tblr-status-color-rgb: 220, 78, 65; +} + +.status-youtube { + --tblr-status-color: #ff0000; + --tblr-status-color-rgb: 255, 0, 0; +} + +.status-vimeo { + --tblr-status-color: #1ab7ea; + --tblr-status-color-rgb: 26, 183, 234; +} + +.status-dribbble { + --tblr-status-color: #ea4c89; + --tblr-status-color-rgb: 234, 76, 137; +} + +.status-github { + --tblr-status-color: #181717; + --tblr-status-color-rgb: 24, 23, 23; +} + +.status-instagram { + --tblr-status-color: #e4405f; + --tblr-status-color-rgb: 228, 64, 95; +} + +.status-pinterest { + --tblr-status-color: #bd081c; + --tblr-status-color-rgb: 189, 8, 28; +} + +.status-vk { + --tblr-status-color: #6383a8; + --tblr-status-color-rgb: 99, 131, 168; +} + +.status-rss { + --tblr-status-color: #ffa500; + --tblr-status-color-rgb: 255, 165, 0; +} + +.status-flickr { + --tblr-status-color: #0063dc; + --tblr-status-color-rgb: 0, 99, 220; +} + +.status-bitbucket { + --tblr-status-color: #0052cc; + --tblr-status-color-rgb: 0, 82, 204; +} + +.status-tabler { + --tblr-status-color: #0054a6; + --tblr-status-color-rgb: 0, 84, 166; +} + +.status-dot { + --tblr-status-dot-color: var(--tblr-status-color, #667382); + --tblr-status-size: 0.5rem; + position: relative; + display: inline-block; + width: var(--tblr-status-size); + height: var(--tblr-status-size); + background: var(--tblr-status-dot-color); + border-radius: 100rem; +} + +.status-dot-animated:before { + content: ""; + position: absolute; + inset: 0; + z-index: 0; + background: inherit; + border-radius: inherit; + opacity: 0.6; + animation: 1s linear 2s backwards infinite status-pulsate-tertiary; +} + +.status-indicator { + --tblr-status-indicator-size: 2.5rem; + --tblr-status-indicator-color: var(--tblr-status-color, #667382); + display: block; + position: relative; + width: var(--tblr-status-indicator-size); + height: var(--tblr-status-indicator-size); +} + +.status-indicator-circle { + --tblr-status-circle-size: .75rem; + position: absolute; + right: 50%; + top: 50%; + margin: calc(var(--tblr-status-circle-size) / -2) calc(var(--tblr-status-circle-size) / -2) 0 0; + width: var(--tblr-status-circle-size); + height: var(--tblr-status-circle-size); + border-radius: 100rem; + background: var(--tblr-status-color); +} +.status-indicator-circle:nth-child(1) { + z-index: 3; +} +.status-indicator-circle:nth-child(2) { + z-index: 2; + opacity: 0.1; +} +.status-indicator-circle:nth-child(3) { + z-index: 1; + opacity: 0.3; +} + +.status-indicator-animated .status-indicator-circle:nth-child(1) { + animation: 2s linear 1s infinite backwards status-pulsate-main; +} +.status-indicator-animated .status-indicator-circle:nth-child(2) { + animation: 2s linear 1s infinite backwards status-pulsate-secondary; +} +.status-indicator-animated .status-indicator-circle:nth-child(3) { + animation: 2s linear 1s infinite backwards status-pulsate-tertiary; +} + +.switch-icon { + display: inline-block; + line-height: 1; + border: 0; + padding: 0; + background: transparent; + width: 1.25rem; + height: 1.25rem; + vertical-align: bottom; + position: relative; + cursor: pointer; +} +.switch-icon.disabled { + pointer-events: none; + opacity: 0.4; +} +.switch-icon:focus { + outline: none; +} +.switch-icon svg { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a, +.switch-icon .switch-icon-b { + display: block; + width: 100%; + height: 100%; +} +.switch-icon .switch-icon-a { + opacity: 1; +} +.switch-icon .switch-icon-b { + position: absolute; + top: 0; + right: 0; + opacity: 0; +} +.switch-icon.active .switch-icon-a { + opacity: 0; +} +.switch-icon.active .switch-icon-b { + opacity: 1; +} + +.switch-icon-fade .switch-icon-a, +.switch-icon-fade .switch-icon-b { + transition: opacity 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-fade .switch-icon-a, + .switch-icon-fade .switch-icon-b { + transition: none; + } +} + +.switch-icon-scale .switch-icon-a, +.switch-icon-scale .switch-icon-b { + transition: opacity 0.5s, transform 0s 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale .switch-icon-a, + .switch-icon-scale .switch-icon-b { + transition: none; + } +} +.switch-icon-scale .switch-icon-b { + transform: scale(1.5); +} +.switch-icon-scale.active .switch-icon-a, +.switch-icon-scale.active .switch-icon-b { + transition: opacity 0s, transform 0.5s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-scale.active .switch-icon-a, + .switch-icon-scale.active .switch-icon-b { + transition: none; + } +} +.switch-icon-scale.active .switch-icon-b { + transform: scale(1); +} + +.switch-icon-flip { + perspective: 10em; +} +.switch-icon-flip .switch-icon-a, +.switch-icon-flip .switch-icon-b { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transform-style: preserve-3d; + transition: opacity 0s 0.2s, transform 0.4s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-flip .switch-icon-a, + .switch-icon-flip .switch-icon-b { + transition: none; + } +} +.switch-icon-flip .switch-icon-a { + opacity: 1; + transform: rotateY(0deg); +} +.switch-icon-flip .switch-icon-b { + opacity: 1; + transform: rotateY(180deg); +} +.switch-icon-flip.active .switch-icon-a { + opacity: 1; + transform: rotateY(-180deg); +} +.switch-icon-flip.active .switch-icon-b { + opacity: 1; + transform: rotateY(0deg); +} + +.switch-icon-slide-up, +.switch-icon-slide-right, +.switch-icon-slide-left, +.switch-icon-slide-down { + overflow: hidden; +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-down .switch-icon-a, +.switch-icon-slide-down .switch-icon-b { + transition: opacity 0.3s, transform 0.3s; +} +@media (prefers-reduced-motion: reduce) { + .switch-icon-slide-up .switch-icon-a, + .switch-icon-slide-up .switch-icon-b, + .switch-icon-slide-right .switch-icon-a, + .switch-icon-slide-right .switch-icon-b, + .switch-icon-slide-left .switch-icon-a, + .switch-icon-slide-left .switch-icon-b, + .switch-icon-slide-down .switch-icon-a, + .switch-icon-slide-down .switch-icon-b { + transition: none; + } +} +.switch-icon-slide-up .switch-icon-a, +.switch-icon-slide-right .switch-icon-a, +.switch-icon-slide-left .switch-icon-a, +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-up .switch-icon-b, +.switch-icon-slide-right .switch-icon-b, +.switch-icon-slide-left .switch-icon-b, +.switch-icon-slide-down .switch-icon-b { + transform: translateY(100%); +} +.switch-icon-slide-up.active .switch-icon-a, +.switch-icon-slide-right.active .switch-icon-a, +.switch-icon-slide-left.active .switch-icon-a, +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(-100%); +} +.switch-icon-slide-up.active .switch-icon-b, +.switch-icon-slide-right.active .switch-icon-b, +.switch-icon-slide-left.active .switch-icon-b, +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.switch-icon-slide-right .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-left .switch-icon-b { + transform: translateX(-100%); +} +.switch-icon-slide-left.active .switch-icon-a { + transform: translateX(100%); +} +.switch-icon-slide-right.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-left .switch-icon-a { + transform: translateX(0); +} +.switch-icon-slide-right .switch-icon-b { + transform: translateX(100%); +} +.switch-icon-slide-right.active .switch-icon-a { + transform: translateX(-100%); +} +.switch-icon-slide-left.active .switch-icon-b { + transform: translateX(0); +} + +.switch-icon-slide-down .switch-icon-a { + transform: translateY(0); +} +.switch-icon-slide-down .switch-icon-b { + transform: translateY(-100%); +} +.switch-icon-slide-down.active .switch-icon-a { + transform: translateY(100%); +} +.switch-icon-slide-down.active .switch-icon-b { + transform: translateY(0); +} + +.table thead th, .markdown > table thead th { + color: var(--tblr-secondary); + background: var(--tblr-bg-surface-tertiary); + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + white-space: nowrap; +} +@media print { + .table thead th, .markdown > table thead th { + background: transparent; + } +} + +.table-responsive .table, .table-responsive .markdown > table { + margin-bottom: 0; +} +.table-responsive + .card-footer { + border-top: 0; +} + +.table-transparent thead th { + background: transparent; +} + +.table-nowrap > :not(caption) > * > * { + white-space: nowrap; +} + +.table-vcenter > :not(caption) > * > * { + vertical-align: middle; +} + +.table-center > :not(caption) > * > * { + text-align: center; +} + +.td-truncate { + max-width: 1px; + width: 100%; +} + +.table-mobile { + display: block; +} +.table-mobile thead { + display: none; +} +.table-mobile tbody, +.table-mobile tr { + display: flex; + flex-direction: column; +} +.table-mobile td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; +} +.table-mobile td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; +} +.table-mobile tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); +} +.table-mobile .btn { + display: block; +} +@media (max-width: 575.98px) { + .table-mobile-sm { + display: block; + } + .table-mobile-sm thead { + display: none; + } + .table-mobile-sm tbody, + .table-mobile-sm tr { + display: flex; + flex-direction: column; + } + .table-mobile-sm td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-sm td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-sm tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-sm .btn { + display: block; + } +} +@media (max-width: 767.98px) { + .table-mobile-md { + display: block; + } + .table-mobile-md thead { + display: none; + } + .table-mobile-md tbody, + .table-mobile-md tr { + display: flex; + flex-direction: column; + } + .table-mobile-md td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-md td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-md tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-md .btn { + display: block; + } +} +@media (max-width: 991.98px) { + .table-mobile-lg { + display: block; + } + .table-mobile-lg thead { + display: none; + } + .table-mobile-lg tbody, + .table-mobile-lg tr { + display: flex; + flex-direction: column; + } + .table-mobile-lg td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-lg td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-lg tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-lg .btn { + display: block; + } +} +@media (max-width: 1199.98px) { + .table-mobile-xl { + display: block; + } + .table-mobile-xl thead { + display: none; + } + .table-mobile-xl tbody, + .table-mobile-xl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xl .btn { + display: block; + } +} +@media (max-width: 1399.98px) { + .table-mobile-xxl { + display: block; + } + .table-mobile-xxl thead { + display: none; + } + .table-mobile-xxl tbody, + .table-mobile-xxl tr { + display: flex; + flex-direction: column; + } + .table-mobile-xxl td { + display: block; + padding: 0.75rem 0.75rem !important; + border: none; + color: var(--tblr-body-color) !important; + } + .table-mobile-xxl td[data-label]:before { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + content: attr(data-label); + display: block; + } + .table-mobile-xxl tr { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + } + .table-mobile-xxl .btn { + display: block; + } +} + +/** +Table sort + */ +.table-sort { + font: inherit; + color: inherit; + text-transform: inherit; + letter-spacing: inherit; + border: 0; + background: inherit; + display: block; + width: 100%; + text-align: inherit; + transition: color 0.3s; + margin: -0.5rem -0.75rem; + padding: 0.5rem 0.75rem; +} +@media (prefers-reduced-motion: reduce) { + .table-sort { + transition: none; + } +} +.table-sort:hover, .table-sort.asc, .table-sort.desc { + color: var(--tblr-body-color); +} +.table-sort:after { + content: ""; + display: inline-flex; + width: 1rem; + height: 1rem; + vertical-align: bottom; + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); + background: currentColor; + margin-right: 0.25rem; +} +.table-sort.asc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} +.table-sort.desc:after { + -webkit-mask-image: url("data:image/svg+xml,"); + mask-image: url("data:image/svg+xml,"); +} + +.table-borderless thead th { + background: transparent; +} + +.tag { + --tblr-tag-height: 1.5rem; + border: 1px solid var(--tblr-border-color); + display: inline-flex; + align-items: center; + height: var(--tblr-tag-height); + border-radius: var(--tblr-border-radius); + padding: 0 0.5rem; + background: var(--tblr-bg-surface); + box-shadow: var(--tblr-box-shadow-input); + gap: 0.5rem; +} +.tag .btn-close { + margin-left: -0.25rem; + margin-right: -0.125rem; + padding: 0; + width: 1rem; + height: 1rem; + font-size: 0.5rem; +} + +.tag-badge { + --tblr-badge-font-size: 0.625rem; + --tblr-badge-padding-x: .25rem; + --tblr-badge-padding-y: .125rem; + margin-left: -0.25rem; +} + +.tag-avatar, +.tag-flag, +.tag-payment, +.tag-icon, +.tag-check { + margin-right: -0.25rem; +} + +.tag-icon { + color: var(--tblr-secondary); + margin-left: -0.125rem; + width: 1rem; + height: 1rem; +} + +.tag-check { + width: 1rem; + height: 1rem; + background-size: 1rem; +} + +.tags-list { + --tblr-list-gap: 0.5rem; + display: flex; + flex-wrap: wrap; + gap: var(--tblr-list-gap); +} + +.toast { + background: #ffffff; + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent); + box-shadow: rgba(24, 36, 51, 0.04) 0 2px 4px 0; +} +.toast .toast-header { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.toast button[data-bs-dismiss=toast] { + outline: none; +} + +.toast-primary { + --tblr-toast-color: #0054a6; +} + +.toast-secondary { + --tblr-toast-color: #667382; +} + +.toast-success { + --tblr-toast-color: #2fb344; +} + +.toast-info { + --tblr-toast-color: #4299e1; +} + +.toast-warning { + --tblr-toast-color: #f76707; +} + +.toast-danger { + --tblr-toast-color: #d63939; +} + +.toast-light { + --tblr-toast-color: #fcfdfe; +} + +.toast-dark { + --tblr-toast-color: #182433; +} + +.toast-muted { + --tblr-toast-color: #667382; +} + +.toast-blue { + --tblr-toast-color: #0054a6; +} + +.toast-azure { + --tblr-toast-color: #4299e1; +} + +.toast-indigo { + --tblr-toast-color: #4263eb; +} + +.toast-purple { + --tblr-toast-color: #ae3ec9; +} + +.toast-pink { + --tblr-toast-color: #d6336c; +} + +.toast-red { + --tblr-toast-color: #d63939; +} + +.toast-orange { + --tblr-toast-color: #f76707; +} + +.toast-yellow { + --tblr-toast-color: #f59f00; +} + +.toast-lime { + --tblr-toast-color: #74b816; +} + +.toast-green { + --tblr-toast-color: #2fb344; +} + +.toast-teal { + --tblr-toast-color: #0ca678; +} + +.toast-cyan { + --tblr-toast-color: #17a2b8; +} + +.toast-facebook { + --tblr-toast-color: #1877f2; +} + +.toast-twitter { + --tblr-toast-color: #1da1f2; +} + +.toast-linkedin { + --tblr-toast-color: #0a66c2; +} + +.toast-google { + --tblr-toast-color: #dc4e41; +} + +.toast-youtube { + --tblr-toast-color: #ff0000; +} + +.toast-vimeo { + --tblr-toast-color: #1ab7ea; +} + +.toast-dribbble { + --tblr-toast-color: #ea4c89; +} + +.toast-github { + --tblr-toast-color: #181717; +} + +.toast-instagram { + --tblr-toast-color: #e4405f; +} + +.toast-pinterest { + --tblr-toast-color: #bd081c; +} + +.toast-vk { + --tblr-toast-color: #6383a8; +} + +.toast-rss { + --tblr-toast-color: #ffa500; +} + +.toast-flickr { + --tblr-toast-color: #0063dc; +} + +.toast-bitbucket { + --tblr-toast-color: #0052cc; +} + +.toast-tabler { + --tblr-toast-color: #0054a6; +} + +.toolbar { + display: flex; + flex-wrap: nowrap; + flex-shrink: 0; + margin: 0 -0.5rem; +} +.toolbar > * { + margin: 0 0.5rem; +} + +.tracking { + --tblr-tracking-height: 1.5rem; + --tblr-tracking-gap-width: 0.125rem; + --tblr-tracking-block-border-radius: var(--tblr-border-radius); + display: flex; + gap: var(--tblr-tracking-gap-width); +} + +.tracking-squares { + --tblr-tracking-block-border-radius: var(--tblr-border-radius-sm); +} +.tracking-squares .tracking-block { + height: auto; +} +.tracking-squares .tracking-block:before { + content: ""; + display: block; + padding-top: 100%; +} + +.tracking-block { + flex: 1; + border-radius: var(--tblr-tracking-block-border-radius); + height: var(--tblr-tracking-height); + min-width: 0.25rem; + background: var(--tblr-border-color); +} + +.timeline { + --tblr-timeline-icon-size: 2.5rem; + position: relative; + list-style: none; + padding: 0; +} + +.timeline-event { + position: relative; +} +.timeline-event:not(:last-child) { + margin-bottom: var(--tblr-page-padding); +} +.timeline-event:not(:last-child):before { + content: ""; + position: absolute; + top: var(--tblr-timeline-icon-size); + right: calc(var(--tblr-timeline-icon-size) / 2); + bottom: calc(-1 * var(--tblr-page-padding)); + width: var(--tblr-border-width); + background-color: var(--tblr-border-color); + border-radius: var(--tblr-border-radius); +} + +.timeline-event-icon { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: var(--tblr-timeline-icon-size, 2.5rem); + height: var(--tblr-timeline-icon-size, 2.5rem); + background: var(--tblr-gray-200); + color: var(--tblr-secondary); + border-radius: var(--tblr-border-radius); + z-index: 5; +} + +.timeline-event-card { + margin-right: calc(var(--tblr-timeline-icon-size, 2.5rem) + var(--tblr-page-padding)); +} + +.timeline-simple .timeline-event-icon { + display: none; +} +.timeline-simple .timeline-event-card { + margin-right: 0; +} + +/** +Horizontal rules + */ +/** +Hr text + */ +.hr-text { + display: flex; + align-items: center; + margin: 2rem 0; + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); + height: 1px; +} +.hr-text:after, .hr-text:before { + flex: 1 1 auto; + height: 1px; + background-color: var(--tblr-border-color); +} +.hr-text:before { + content: ""; + margin-left: 0.5rem; +} +.hr-text:after { + content: ""; + margin-right: 0.5rem; +} +.hr-text > *:first-child { + padding-left: 0.5rem; + padding-right: 0; + color: var(--tblr-secondary); +} +.hr-text.hr-text-right:before { + content: none; +} +.hr-text.hr-text-left > *:first-child { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.hr-text.hr-text-left:before { + content: ""; +} +.hr-text.hr-text-left:after { + content: none; +} +.hr-text.hr-text-right > *:first-child { + padding-left: 0; + padding-right: 0.5rem; +} +.card > .hr-text { + margin: 0; +} + +.hr-text-spaceless { + margin: -0.5rem 0; +} + +.lead { + line-height: 1.4; +} + +a { + -webkit-text-decoration-skip: ink; + text-decoration-skip-ink: auto; +} + +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a, +.h1 a, +.h2 a, +.h3 a, +.h4 a, +.h5 a, +.h6 a { + color: inherit; +} +h1 a:hover, +h2 a:hover, +h3 a:hover, +h4 a:hover, +h5 a:hover, +h6 a:hover, +.h1 a:hover, +.h2 a:hover, +.h3 a:hover, +.h4 a:hover, +.h5 a:hover, +.h6 a:hover { + color: inherit; +} + +h1, +.h1 { + font-size: var(--tblr-font-size-h1); + line-height: var(--tblr-line-height-h1); +} + +h2, +.h2 { + font-size: var(--tblr-font-size-h2); + line-height: var(--tblr-line-height-h2); +} + +h3, +.h3 { + font-size: var(--tblr-font-size-h3); + line-height: var(--tblr-line-height-h3); +} + +h4, +.h4 { + font-size: var(--tblr-font-size-h4); + line-height: var(--tblr-line-height-h4); +} + +h5, +.h5 { + font-size: var(--tblr-font-size-h5); + line-height: var(--tblr-line-height-h5); +} + +h6, +.h6 { + font-size: var(--tblr-font-size-h6); + line-height: var(--tblr-line-height-h6); +} + +strong, +.strong, +b { + font-weight: var(--tblr-font-weight-bold); +} + +blockquote { + padding-right: 1rem; + border-right: 2px var(--tblr-border-style) var(--tblr-border-color); +} +blockquote p { + margin-bottom: 1rem; +} +blockquote cite { + display: block; + text-align: left; +} +blockquote cite:before { + content: "— "; +} + +ul, ol { + padding-right: 1.5rem; +} + +hr, .hr { + margin: 2rem 0; +} + +dl dd:last-child { + margin-bottom: 0; +} + +pre { + padding: 1rem; + background: var(--tblr-bg-surface-dark); + color: var(--tblr-light); + border-radius: var(--tblr-border-radius); +} +pre code { + background: transparent; +} + +code { + background: var(--tblr-code-bg); + padding: 2px 4px; + border-radius: var(--tblr-border-radius); +} + +kbd, +.kbd { + border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color); + display: inline-block; + box-sizing: border-box; + max-width: 100%; + font-size: var(--tblr-font-size-h5); + font-weight: var(--tblr-font-weight-medium); + line-height: 1; + vertical-align: baseline; + border-radius: var(--tblr-border-radius); +} + +img { + max-width: 100%; +} + +.list-unstyled { + margin-right: 0; +} + +/** +Selection + */ +::-moz-selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} +::selection { + background-color: rgba(var(--tblr-primary-rgb), 0.16); +} + +/** +Links + */ +[class^=link-].disabled, [class*=" link-"].disabled { + color: var(--tblr-disabled-color); + pointer-events: none; +} + +/** +Subheader + */ +.subheader { + font-size: 0.625rem; + font-weight: var(--tblr-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + line-height: 1rem; + color: var(--tblr-secondary); +} + +.chart { + display: block; + min-height: 10rem; +} +.chart text { + font-family: inherit; +} + +.chart-sm { + height: 2.5rem; +} + +.chart-lg { + height: 15rem; +} + +.chart-square { + height: 5.75rem; +} + +/** +Chart sparkline + */ +.chart-sparkline { + position: relative; + width: 4rem; + height: 2.5rem; + line-height: 1; + min-height: 0 !important; +} + +.chart-sparkline-sm { + height: 1.5rem; +} + +.chart-sparkline-square { + width: 2.5rem; +} + +.chart-sparkline-wide { + width: 6rem; +} + +.chart-sparkline-label { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.625rem; +} +.chart-sparkline-label .icon { + width: 1rem; + height: 1rem; + font-size: 1rem; +} + +.offcanvas-header { + border-bottom: var(--tblr-border-width) var(--tblr-border-style) rgba(4, 32, 69, 0.14); +} + +.offcanvas-footer { + padding: 1.5rem 1.5rem; +} + +.offcanvas-title { + font-size: 1rem; + font-weight: var(--tblr-font-weight-medium); + line-height: 1.5rem; +} + +.offcanvas-narrow { + width: 20rem; +} + +.chat-bubbles { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.chat-bubble { + background: var(--tblr-bg-surface-secondary); + border-radius: var(--tblr-border-radius-lg); + padding: 1rem; + position: relative; +} + +.chat-bubble-me { + background-color: var(--tblr-primary-lt); + box-shadow: none; +} + +.chat-bubble-title { + margin-bottom: 0.25rem; +} + +.chat-bubble-author { + font-weight: 600; +} + +.chat-bubble-date { + color: var(--tblr-secondary); +} + +.chat-bubble-body > *:last-child { + margin-bottom: 0; +} + +.bg-white-overlay { + color: #ffffff; + background-color: rgba(252, 253, 254, 0.24); +} + +.bg-dark-overlay { + color: #ffffff; + background-color: rgba(24, 36, 51, 0.24); +} + +.bg-cover { + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} + +.bg-primary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-primary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-primary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-primary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-primary { + border-color: #0054a6 !important; +} + +.bg-secondary { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-secondary-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-secondary-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-secondary-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-secondary { + border-color: #667382 !important; +} + +.bg-success { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-success-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-success-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-success-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-success { + border-color: #2fb344 !important; +} + +.bg-info { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-info-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-info-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-info-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-info { + border-color: #4299e1 !important; +} + +.bg-warning { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-warning-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-warning-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-warning-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-warning { + border-color: #f76707 !important; +} + +.bg-danger { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-danger-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-danger-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-danger-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-danger { + border-color: #d63939 !important; +} + +.bg-light { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-light-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-light-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-light-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-light { + border-color: #fcfdfe !important; +} + +.bg-dark { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dark-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dark-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dark-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dark { + border-color: #182433 !important; +} + +.bg-muted { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-muted-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-muted-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-muted-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-muted { + border-color: #667382 !important; +} + +.bg-blue { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-blue-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-blue-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-blue-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-blue { + border-color: #0054a6 !important; +} + +.bg-azure { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-azure-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-azure-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-azure-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-azure { + border-color: #4299e1 !important; +} + +.bg-indigo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-indigo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-indigo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-indigo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-indigo { + border-color: #4263eb !important; +} + +.bg-purple { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-purple-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-purple-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-purple-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-purple { + border-color: #ae3ec9 !important; +} + +.bg-pink { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pink-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pink-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pink-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pink { + border-color: #d6336c !important; +} + +.bg-red { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-red-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-red-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-red-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-red { + border-color: #d63939 !important; +} + +.bg-orange { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-orange-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-orange-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-orange-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-orange { + border-color: #f76707 !important; +} + +.bg-yellow { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-yellow-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-yellow-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-yellow-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-yellow { + border-color: #f59f00 !important; +} + +.bg-lime { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-lime-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-lime-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-lime-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-lime { + border-color: #74b816 !important; +} + +.bg-green { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-green-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-green-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-green-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-green { + border-color: #2fb344 !important; +} + +.bg-teal { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-teal-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-teal-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-teal-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-teal { + border-color: #0ca678 !important; +} + +.bg-cyan { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-cyan-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-cyan-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-cyan-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-cyan { + border-color: #17a2b8 !important; +} + +.bg-facebook { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-facebook-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-facebook-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-facebook-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-facebook { + border-color: #1877f2 !important; +} + +.bg-twitter { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-twitter-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-twitter-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-twitter-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-twitter { + border-color: #1da1f2 !important; +} + +.bg-linkedin { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-linkedin-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-linkedin-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-linkedin-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-linkedin { + border-color: #0a66c2 !important; +} + +.bg-google { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-google-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-google-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-google-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-google { + border-color: #dc4e41 !important; +} + +.bg-youtube { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-youtube-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-youtube-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-youtube-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-youtube { + border-color: #ff0000 !important; +} + +.bg-vimeo { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vimeo-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vimeo-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vimeo-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vimeo { + border-color: #1ab7ea !important; +} + +.bg-dribbble { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-dribbble-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-dribbble-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-dribbble-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-dribbble { + border-color: #ea4c89 !important; +} + +.bg-github { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-github-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-github-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-github-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-github { + border-color: #181717 !important; +} + +.bg-instagram { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-instagram-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-instagram-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-instagram-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-instagram { + border-color: #e4405f !important; +} + +.bg-pinterest { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-pinterest-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-pinterest-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-pinterest-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-pinterest { + border-color: #bd081c !important; +} + +.bg-vk { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-vk-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-vk-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-vk-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-vk { + border-color: #6383a8 !important; +} + +.bg-rss { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-rss-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-rss-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-rss-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-rss { + border-color: #ffa500 !important; +} + +.bg-flickr { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-flickr-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-flickr-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-flickr-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-flickr { + border-color: #0063dc !important; +} + +.bg-bitbucket { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-bitbucket-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-bitbucket-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-bitbucket { + border-color: #0052cc !important; +} + +.bg-tabler { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-tabler-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-tabler-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-tabler-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-tabler { + border-color: #0054a6 !important; +} + +.bg-white { + --tblr-bg-opacity: 1; + background-color: rgba(var(--tblr-white-rgb), var(--tblr-bg-opacity)) !important; +} + +.bg-white-lt { + --tblr-bg-opacity: 1; + --tblr-text-opacity: 1; + color: rgba(var(--tblr-white-rgb), var(--tblr-text-opacity)) !important; + background-color: rgba(var(--tblr-white-lt-rgb), var(--tblr-bg-opacity)) !important; +} + +.border-white { + border-color: #ffffff !important; +} + +.text-primary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-primary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-primary-fg { + color: var(--tblr-primary-fg) !important; +} + +.text-secondary { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-secondary-rgb), var(--tblr-text-opacity)) !important; +} + +.text-secondary-fg { + color: var(--tblr-secondary-fg) !important; +} + +.text-success { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-success-rgb), var(--tblr-text-opacity)) !important; +} + +.text-success-fg { + color: var(--tblr-success-fg) !important; +} + +.text-info { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-info-rgb), var(--tblr-text-opacity)) !important; +} + +.text-info-fg { + color: var(--tblr-info-fg) !important; +} + +.text-warning { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-warning-rgb), var(--tblr-text-opacity)) !important; +} + +.text-warning-fg { + color: var(--tblr-warning-fg) !important; +} + +.text-danger { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-danger-rgb), var(--tblr-text-opacity)) !important; +} + +.text-danger-fg { + color: var(--tblr-danger-fg) !important; +} + +.text-light { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-light-rgb), var(--tblr-text-opacity)) !important; +} + +.text-light-fg { + color: var(--tblr-light-fg) !important; +} + +.text-dark { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dark-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dark-fg { + color: var(--tblr-dark-fg) !important; +} + +.text-muted { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-muted-rgb), var(--tblr-text-opacity)) !important; +} + +.text-muted-fg { + color: var(--tblr-muted-fg) !important; +} + +.text-blue { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-blue-rgb), var(--tblr-text-opacity)) !important; +} + +.text-blue-fg { + color: var(--tblr-blue-fg) !important; +} + +.text-azure { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-azure-rgb), var(--tblr-text-opacity)) !important; +} + +.text-azure-fg { + color: var(--tblr-azure-fg) !important; +} + +.text-indigo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-indigo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-indigo-fg { + color: var(--tblr-indigo-fg) !important; +} + +.text-purple { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-purple-rgb), var(--tblr-text-opacity)) !important; +} + +.text-purple-fg { + color: var(--tblr-purple-fg) !important; +} + +.text-pink { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pink-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pink-fg { + color: var(--tblr-pink-fg) !important; +} + +.text-red { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-red-rgb), var(--tblr-text-opacity)) !important; +} + +.text-red-fg { + color: var(--tblr-red-fg) !important; +} + +.text-orange { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-orange-rgb), var(--tblr-text-opacity)) !important; +} + +.text-orange-fg { + color: var(--tblr-orange-fg) !important; +} + +.text-yellow { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-yellow-rgb), var(--tblr-text-opacity)) !important; +} + +.text-yellow-fg { + color: var(--tblr-yellow-fg) !important; +} + +.text-lime { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-lime-rgb), var(--tblr-text-opacity)) !important; +} + +.text-lime-fg { + color: var(--tblr-lime-fg) !important; +} + +.text-green { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-green-rgb), var(--tblr-text-opacity)) !important; +} + +.text-green-fg { + color: var(--tblr-green-fg) !important; +} + +.text-teal { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-teal-rgb), var(--tblr-text-opacity)) !important; +} + +.text-teal-fg { + color: var(--tblr-teal-fg) !important; +} + +.text-cyan { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-cyan-rgb), var(--tblr-text-opacity)) !important; +} + +.text-cyan-fg { + color: var(--tblr-cyan-fg) !important; +} + +.text-facebook { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-facebook-rgb), var(--tblr-text-opacity)) !important; +} + +.text-facebook-fg { + color: var(--tblr-facebook-fg) !important; +} + +.text-twitter { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-twitter-rgb), var(--tblr-text-opacity)) !important; +} + +.text-twitter-fg { + color: var(--tblr-twitter-fg) !important; +} + +.text-linkedin { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-linkedin-rgb), var(--tblr-text-opacity)) !important; +} + +.text-linkedin-fg { + color: var(--tblr-linkedin-fg) !important; +} + +.text-google { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-google-rgb), var(--tblr-text-opacity)) !important; +} + +.text-google-fg { + color: var(--tblr-google-fg) !important; +} + +.text-youtube { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-youtube-rgb), var(--tblr-text-opacity)) !important; +} + +.text-youtube-fg { + color: var(--tblr-youtube-fg) !important; +} + +.text-vimeo { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vimeo-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vimeo-fg { + color: var(--tblr-vimeo-fg) !important; +} + +.text-dribbble { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-dribbble-rgb), var(--tblr-text-opacity)) !important; +} + +.text-dribbble-fg { + color: var(--tblr-dribbble-fg) !important; +} + +.text-github { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-github-rgb), var(--tblr-text-opacity)) !important; +} + +.text-github-fg { + color: var(--tblr-github-fg) !important; +} + +.text-instagram { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-instagram-rgb), var(--tblr-text-opacity)) !important; +} + +.text-instagram-fg { + color: var(--tblr-instagram-fg) !important; +} + +.text-pinterest { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-pinterest-rgb), var(--tblr-text-opacity)) !important; +} + +.text-pinterest-fg { + color: var(--tblr-pinterest-fg) !important; +} + +.text-vk { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-vk-rgb), var(--tblr-text-opacity)) !important; +} + +.text-vk-fg { + color: var(--tblr-vk-fg) !important; +} + +.text-rss { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-rss-rgb), var(--tblr-text-opacity)) !important; +} + +.text-rss-fg { + color: var(--tblr-rss-fg) !important; +} + +.text-flickr { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-flickr-rgb), var(--tblr-text-opacity)) !important; +} + +.text-flickr-fg { + color: var(--tblr-flickr-fg) !important; +} + +.text-bitbucket { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-bitbucket-rgb), var(--tblr-text-opacity)) !important; +} + +.text-bitbucket-fg { + color: var(--tblr-bitbucket-fg) !important; +} + +.text-tabler { + --tblr-text-opacity: 1; + color: rgba(var(--tblr-tabler-rgb), var(--tblr-text-opacity)) !important; +} + +.text-tabler-fg { + color: var(--tblr-tabler-fg) !important; +} + +.bg-gray-50 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-50-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-50-fg { + color: #182433 !important; +} + +.bg-gray-100 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-100-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-100-fg { + color: #182433 !important; +} + +.bg-gray-200 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-200-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-200-fg { + color: #182433 !important; +} + +.bg-gray-300 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-300-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-300-fg { + color: #182433 !important; +} + +.bg-gray-400 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-400-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-400-fg { + color: #fcfdfe !important; +} + +.bg-gray-500 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-500-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-500-fg { + color: #fcfdfe !important; +} + +.bg-gray-600 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-600-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-600-fg { + color: #fcfdfe !important; +} + +.bg-gray-700 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-700-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-700-fg { + color: #fcfdfe !important; +} + +.bg-gray-800 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-800-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-800-fg { + color: #fcfdfe !important; +} + +.bg-gray-900 { + --tblr-bg-opacity: .1; + background-color: rgba(var(--tblr-gray-900-rgb), var(--tblr-bg-opacity)) !important; +} + +.text-gray-900-fg { + color: #fcfdfe !important; +} + +/* +Scrollable +*/ +.scrollable { + overflow-x: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} +.scrollable.hover { + overflow-y: hidden; +} +.scrollable.hover > * { + margin-top: -1px; +} +.scrollable.hover:hover, .scrollable.hover:focus, .scrollable.hover:active { + overflow: visible; + overflow-y: auto; +} +.touch .scrollable { + overflow-y: auto !important; +} + +.scroll-x, +.scroll-y { + overflow: hidden; + -webkit-overflow-scrolling: touch; +} + +.scroll-y { + overflow-y: auto; +} + +.scroll-x { + overflow-x: auto; +} + +.no-scroll { + overflow: hidden; +} + +.w-0 { + width: 0 !important; +} + +.h-0 { + height: 0 !important; +} + +.w-1 { + width: 0.25rem !important; +} + +.h-1 { + height: 0.25rem !important; +} + +.w-2 { + width: 0.5rem !important; +} + +.h-2 { + height: 0.5rem !important; +} + +.w-3 { + width: 1rem !important; +} + +.h-3 { + height: 1rem !important; +} + +.w-4 { + width: 1.5rem !important; +} + +.h-4 { + height: 1.5rem !important; +} + +.w-5 { + width: 2rem !important; +} + +.h-5 { + height: 2rem !important; +} + +.w-6 { + width: 3rem !important; +} + +.h-6 { + height: 3rem !important; +} + +.w-7 { + width: 5rem !important; +} + +.h-7 { + height: 5rem !important; +} + +.w-8 { + width: 8rem !important; +} + +.h-8 { + height: 8rem !important; +} + +.w-auto { + width: auto !important; +} + +.h-auto { + height: auto !important; +} + +.w-px { + width: 1px !important; +} + +.h-px { + height: 1px !important; +} + +.w-full { + width: 100% !important; +} + +.h-full { + height: 100% !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-5 { + opacity: 0.05 !important; +} + +.opacity-10 { + opacity: 0.1 !important; +} + +.opacity-15 { + opacity: 0.15 !important; +} + +.opacity-20 { + opacity: 0.2 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-30 { + opacity: 0.3 !important; +} + +.opacity-35 { + opacity: 0.35 !important; +} + +.opacity-40 { + opacity: 0.4 !important; +} + +.opacity-45 { + opacity: 0.45 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-55 { + opacity: 0.55 !important; +} + +.opacity-60 { + opacity: 0.6 !important; +} + +.opacity-65 { + opacity: 0.65 !important; +} + +.opacity-70 { + opacity: 0.7 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-80 { + opacity: 0.8 !important; +} + +.opacity-85 { + opacity: 0.85 !important; +} + +.opacity-90 { + opacity: 0.9 !important; +} + +.opacity-95 { + opacity: 0.95 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.hover-shadow-sm:hover { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.hover-shadow:hover { + box-shadow: rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0 !important; +} + +.hover-shadow-lg:hover { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.hover-shadow-none:hover { + box-shadow: none !important; +} + +/** +Antialiasing + */ +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} \ No newline at end of file diff --git a/gin_ops/static/dist/css/tabler.rtl.min.css b/gin_ops/static/dist/css/tabler.rtl.min.css new file mode 100644 index 0000000..8e94c65 --- /dev/null +++ b/gin_ops/static/dist/css/tabler.rtl.min.css @@ -0,0 +1,13 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +@charset "UTF-8";:root,[data-bs-theme=light]{--tblr-blue:#0054a6;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-black:#000000;--tblr-white:#ffffff;--tblr-gray:#667382;--tblr-gray-dark:#182433;--tblr-gray-100:#f6f8fb;--tblr-gray-200:#eef1f4;--tblr-gray-300:#dadfe5;--tblr-gray-400:#bbc3cd;--tblr-gray-500:#929dab;--tblr-gray-600:#667382;--tblr-gray-700:#3a4859;--tblr-gray-800:#182433;--tblr-gray-900:#040a11;--tblr-primary:#0054a6;--tblr-secondary:#667382;--tblr-success:#2fb344;--tblr-info:#4299e1;--tblr-warning:#f76707;--tblr-danger:#d63939;--tblr-light:#fcfdfe;--tblr-dark:#182433;--tblr-muted:#667382;--tblr-blue:#0054a6;--tblr-azure:#4299e1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-lime:#74b816;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-facebook:#1877f2;--tblr-twitter:#1da1f2;--tblr-linkedin:#0a66c2;--tblr-google:#dc4e41;--tblr-youtube:#ff0000;--tblr-vimeo:#1ab7ea;--tblr-dribbble:#ea4c89;--tblr-github:#181717;--tblr-instagram:#e4405f;--tblr-pinterest:#bd081c;--tblr-vk:#6383a8;--tblr-rss:#ffa500;--tblr-flickr:#0063dc;--tblr-bitbucket:#0052cc;--tblr-tabler:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-secondary-rgb:102,115,130;--tblr-success-rgb:47,179,68;--tblr-info-rgb:66,153,225;--tblr-warning-rgb:247,103,7;--tblr-danger-rgb:214,57,57;--tblr-light-rgb:252,253,254;--tblr-dark-rgb:24,36,51;--tblr-muted-rgb:102,115,130;--tblr-blue-rgb:0,84,166;--tblr-azure-rgb:66,153,225;--tblr-indigo-rgb:66,99,235;--tblr-purple-rgb:174,62,201;--tblr-pink-rgb:214,51,108;--tblr-red-rgb:214,57,57;--tblr-orange-rgb:247,103,7;--tblr-yellow-rgb:245,159,0;--tblr-lime-rgb:116,184,22;--tblr-green-rgb:47,179,68;--tblr-teal-rgb:12,166,120;--tblr-cyan-rgb:23,162,184;--tblr-facebook-rgb:24,119,242;--tblr-twitter-rgb:29,161,242;--tblr-linkedin-rgb:10,102,194;--tblr-google-rgb:220,78,65;--tblr-youtube-rgb:255,0,0;--tblr-vimeo-rgb:26,183,234;--tblr-dribbble-rgb:234,76,137;--tblr-github-rgb:24,23,23;--tblr-instagram-rgb:228,64,95;--tblr-pinterest-rgb:189,8,28;--tblr-vk-rgb:99,131,168;--tblr-rss-rgb:255,165,0;--tblr-flickr-rgb:0,99,220;--tblr-bitbucket-rgb:0,82,204;--tblr-tabler-rgb:0,84,166;--tblr-primary-text-emphasis:#002242;--tblr-secondary-text-emphasis:#292e34;--tblr-success-text-emphasis:#13481b;--tblr-info-text-emphasis:#1a3d5a;--tblr-warning-text-emphasis:#632903;--tblr-danger-text-emphasis:#561717;--tblr-light-text-emphasis:#3a4859;--tblr-dark-text-emphasis:#3a4859;--tblr-primary-bg-subtle:#ccdded;--tblr-secondary-bg-subtle:#e0e3e6;--tblr-success-bg-subtle:#d5f0da;--tblr-info-bg-subtle:#d9ebf9;--tblr-warning-bg-subtle:#fde1cd;--tblr-danger-bg-subtle:#f7d7d7;--tblr-light-bg-subtle:#fbfcfd;--tblr-dark-bg-subtle:#bbc3cd;--tblr-primary-border-subtle:#99bbdb;--tblr-secondary-border-subtle:#c2c7cd;--tblr-success-border-subtle:#ace1b4;--tblr-info-border-subtle:#b3d6f3;--tblr-warning-border-subtle:#fcc29c;--tblr-danger-border-subtle:#efb0b0;--tblr-light-border-subtle:#eef1f4;--tblr-dark-border-subtle:#929dab;--tblr-white-rgb:255,255,255;--tblr-black-rgb:0,0,0;--tblr-font-sans-serif:-apple-system,BlinkMacSystemFont,San Francisco,Segoe UI,Roboto,Helvetica Neue,sans-serif;--tblr-font-monospace:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tblr-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--tblr-body-font-family:var(--tblr-font-sans-serif);--tblr-body-font-size:0.875rem;--tblr-body-font-weight:400;--tblr-body-line-height:1.4285714286;--tblr-body-color:#182433;--tblr-body-color-rgb:24,36,51;--tblr-body-bg:#f6f8fb;--tblr-body-bg-rgb:246,248,251;--tblr-emphasis-color:#182433;--tblr-emphasis-color-rgb:24,36,51;--tblr-secondary-color:rgba(24, 36, 51, 0.75);--tblr-secondary-color-rgb:24,36,51;--tblr-secondary-bg:#eef1f4;--tblr-secondary-bg-rgb:238,241,244;--tblr-tertiary-color:rgba(24, 36, 51, 0.5);--tblr-tertiary-color-rgb:24,36,51;--tblr-tertiary-bg:#f6f8fb;--tblr-tertiary-bg-rgb:246,248,251;--tblr-heading-color:inherit;--tblr-link-color:#0054a6;--tblr-link-color-rgb:0,84,166;--tblr-link-decoration:none;--tblr-link-hover-color:#004385;--tblr-link-hover-color-rgb:0,67,133;--tblr-link-hover-decoration:underline;--tblr-code-color:var(--tblr-gray-600);--tblr-highlight-bg:#fdeccc;--tblr-border-width:1px;--tblr-border-style:solid;--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-radius:4px;--tblr-border-radius-sm:2px;--tblr-border-radius-lg:8px;--tblr-border-radius-xl:1rem;--tblr-border-radius-xxl:2rem;--tblr-border-radius-2xl:var(--tblr-border-radius-xxl);--tblr-border-radius-pill:100rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--tblr-box-shadow-inset:0 0 transparent;--tblr-focus-ring-width:0.25rem;--tblr-focus-ring-opacity:0.25;--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), 0.25);--tblr-form-valid-color:#2fb344;--tblr-form-valid-border-color:#2fb344;--tblr-form-invalid-color:#d63939;--tblr-form-invalid-border-color:#d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-body-bg:#040a11;--tblr-body-bg-rgb:4,10,17;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-secondary-color:rgba(252, 253, 254, 0.75);--tblr-secondary-color-rgb:252,253,254;--tblr-secondary-bg:#182433;--tblr-secondary-bg-rgb:24,36,51;--tblr-tertiary-color:rgba(252, 253, 254, 0.5);--tblr-tertiary-color-rgb:252,253,254;--tblr-tertiary-bg:#0e1722;--tblr-tertiary-bg-rgb:14,23,34;--tblr-primary-text-emphasis:#6698ca;--tblr-secondary-text-emphasis:#a3abb4;--tblr-success-text-emphasis:#82d18f;--tblr-info-text-emphasis:#8ec2ed;--tblr-warning-text-emphasis:#faa46a;--tblr-danger-text-emphasis:#e68888;--tblr-light-text-emphasis:#f6f8fb;--tblr-dark-text-emphasis:#dadfe5;--tblr-primary-bg-subtle:#001121;--tblr-secondary-bg-subtle:#14171a;--tblr-success-bg-subtle:#09240e;--tblr-info-bg-subtle:#0d1f2d;--tblr-warning-bg-subtle:#311501;--tblr-danger-bg-subtle:#2b0b0b;--tblr-light-bg-subtle:#182433;--tblr-dark-bg-subtle:#0c121a;--tblr-primary-border-subtle:#003264;--tblr-secondary-border-subtle:#3d454e;--tblr-success-border-subtle:#1c6b29;--tblr-info-border-subtle:#285c87;--tblr-warning-border-subtle:#943e04;--tblr-danger-border-subtle:#802222;--tblr-light-border-subtle:#3a4859;--tblr-dark-border-subtle:#182433;--tblr-heading-color:inherit;--tblr-link-color:#6698ca;--tblr-link-hover-color:#85add5;--tblr-link-color-rgb:102,152,202;--tblr-link-hover-color-rgb:133,173,213;--tblr-code-color:var(--tblr-gray-300);--tblr-border-color:#1f2e41;--tblr-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-form-valid-color:#82d18f;--tblr-form-valid-border-color:#82d18f;--tblr-form-invalid-color:#e68888;--tblr-form-invalid-border-color:#e68888}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.hr,hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}.h1,h1{font-size:1.5rem}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1rem}.h4,h4{font-size:.875rem}.h5,h5{font-size:.75rem}.h6,h6{font-size:.625rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-right:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-right:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:85.714285%}.mark,mark{padding:.1875em;background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,1));text-decoration:none}a:hover{--tblr-link-color-rgb:var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:85.714285%;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:85.714285%;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:2px}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:var(--tblr-secondary-color);text-align:right}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:right;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}legend+*{clear:right}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=email],[type=number],[type=tel],[type=url]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-size:5rem;font-weight:300;line-height:1.2}.display-2{font-size:4.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.display-5{font-size:3rem;font-weight:300;line-height:1.2}.display-6{font-size:2rem;font-weight:300;line-height:1.2}.list-unstyled{padding-right:0;list-style:none}.list-inline{padding-right:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-left:.5rem}.initialism{font-size:85.714285%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:85.714285%;color:#667382}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:85.714285%;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--tblr-breakpoint-xs:0;--tblr-breakpoint-sm:576px;--tblr-breakpoint-md:768px;--tblr-breakpoint-lg:992px;--tblr-breakpoint-xl:1200px;--tblr-breakpoint-xxl:1400px}.row{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-left:calc(-.5 * var(--tblr-gutter-x));margin-right:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows,1),1fr);grid-template-columns:repeat(var(--tblr-columns,12),1fr);gap:var(--tblr-gap,var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--tblr-gutter-x:0}.g-0,.gy-0{--tblr-gutter-y:0}.g-1,.gx-1{--tblr-gutter-x:0.25rem}.g-1,.gy-1{--tblr-gutter-y:0.25rem}.g-2,.gx-2{--tblr-gutter-x:0.5rem}.g-2,.gy-2{--tblr-gutter-y:0.5rem}.g-3,.gx-3{--tblr-gutter-x:1rem}.g-3,.gy-3{--tblr-gutter-y:1rem}.g-4,.gx-4{--tblr-gutter-x:1.5rem}.g-4,.gy-4{--tblr-gutter-y:1.5rem}.g-5,.gx-5{--tblr-gutter-x:2rem}.g-5,.gy-5{--tblr-gutter-y:2rem}.g-6,.gx-6{--tblr-gutter-x:3rem}.g-6,.gy-6{--tblr-gutter-y:3rem}.g-7,.gx-7{--tblr-gutter-x:5rem}.g-7,.gy-7{--tblr-gutter-y:5rem}.g-8,.gx-8{--tblr-gutter-x:8rem}.g-8,.gy-8{--tblr-gutter-y:8rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--tblr-gutter-x:0}.g-sm-0,.gy-sm-0{--tblr-gutter-y:0}.g-sm-1,.gx-sm-1{--tblr-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x:1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y:1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x:2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y:2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x:3rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y:3rem}.g-sm-7,.gx-sm-7{--tblr-gutter-x:5rem}.g-sm-7,.gy-sm-7{--tblr-gutter-y:5rem}.g-sm-8,.gx-sm-8{--tblr-gutter-x:8rem}.g-sm-8,.gy-sm-8{--tblr-gutter-y:8rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--tblr-gutter-x:0}.g-md-0,.gy-md-0{--tblr-gutter-y:0}.g-md-1,.gx-md-1{--tblr-gutter-x:0.25rem}.g-md-1,.gy-md-1{--tblr-gutter-y:0.25rem}.g-md-2,.gx-md-2{--tblr-gutter-x:0.5rem}.g-md-2,.gy-md-2{--tblr-gutter-y:0.5rem}.g-md-3,.gx-md-3{--tblr-gutter-x:1rem}.g-md-3,.gy-md-3{--tblr-gutter-y:1rem}.g-md-4,.gx-md-4{--tblr-gutter-x:1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y:1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x:2rem}.g-md-5,.gy-md-5{--tblr-gutter-y:2rem}.g-md-6,.gx-md-6{--tblr-gutter-x:3rem}.g-md-6,.gy-md-6{--tblr-gutter-y:3rem}.g-md-7,.gx-md-7{--tblr-gutter-x:5rem}.g-md-7,.gy-md-7{--tblr-gutter-y:5rem}.g-md-8,.gx-md-8{--tblr-gutter-x:8rem}.g-md-8,.gy-md-8{--tblr-gutter-y:8rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--tblr-gutter-x:0}.g-lg-0,.gy-lg-0{--tblr-gutter-y:0}.g-lg-1,.gx-lg-1{--tblr-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x:1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y:1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x:2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y:2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x:3rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y:3rem}.g-lg-7,.gx-lg-7{--tblr-gutter-x:5rem}.g-lg-7,.gy-lg-7{--tblr-gutter-y:5rem}.g-lg-8,.gx-lg-8{--tblr-gutter-x:8rem}.g-lg-8,.gy-lg-8{--tblr-gutter-y:8rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--tblr-gutter-x:0}.g-xl-0,.gy-xl-0{--tblr-gutter-y:0}.g-xl-1,.gx-xl-1{--tblr-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x:1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y:1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x:2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y:2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x:3rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y:3rem}.g-xl-7,.gx-xl-7{--tblr-gutter-x:5rem}.g-xl-7,.gy-xl-7{--tblr-gutter-y:5rem}.g-xl-8,.gx-xl-8{--tblr-gutter-x:8rem}.g-xl-8,.gy-xl-8{--tblr-gutter-y:8rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--tblr-gutter-x:0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y:0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x:2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y:2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x:3rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y:3rem}.g-xxl-7,.gx-xxl-7{--tblr-gutter-x:5rem}.g-xxl-7,.gy-xxl-7{--tblr-gutter-y:5rem}.g-xxl-8,.gx-xxl-8{--tblr-gutter-x:8rem}.g-xxl-8,.gy-xxl-8{--tblr-gutter-y:8rem}}.markdown>table,.table{--tblr-table-color-type:initial;--tblr-table-bg-type:initial;--tblr-table-color-state:initial;--tblr-table-bg-state:initial;--tblr-table-color:inherit;--tblr-table-bg:transparent;--tblr-table-border-color:var(--tblr-border-color-translucent);--tblr-table-accent-bg:transparent;--tblr-table-striped-color:inherit;--tblr-table-striped-bg:var(--tblr-bg-surface-tertiary);--tblr-table-active-color:inherit;--tblr-table-active-bg:rgba(0, 0, 0, 0.1);--tblr-table-hover-color:inherit;--tblr-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.markdown>table>:not(caption)>*>*,.table>:not(caption)>*>*{padding:.75rem .75rem;color:var(--tblr-table-color-state,var(--tblr-table-color-type,var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state,var(--tblr-table-bg-type,var(--tblr-table-accent-bg)))}.markdown>table>tbody,.table>tbody{vertical-align:inherit}.markdown>table>thead,.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.markdown>table>:not(caption)>*,.table-bordered>:not(caption)>*{border-width:var(--tblr-border-width) 0}.markdown>table>:not(caption)>*>*,.table-bordered>:not(caption)>*>*{border-width:0 var(--tblr-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(even)>*{--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state:var(--tblr-table-active-color);--tblr-table-bg-state:var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state:var(--tblr-table-hover-color);--tblr-table-bg-state:var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color:#182433;--tblr-table-bg:#ccdded;--tblr-table-border-color:#bacbda;--tblr-table-striped-bg:#c3d4e4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#bacbda;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#bfcfdf;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color:#182433;--tblr-table-bg:#e0e3e6;--tblr-table-border-color:#ccd0d4;--tblr-table-striped-bg:#d6d9dd;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#ccd0d4;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#d1d5d9;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color:#182433;--tblr-table-bg:#d5f0da;--tblr-table-border-color:#c2dcc9;--tblr-table-striped-bg:#cce6d2;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c2dcc9;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#c7e1cd;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color:#182433;--tblr-table-bg:#d9ebf9;--tblr-table-border-color:#c6d7e5;--tblr-table-striped-bg:#cfe1ef;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c6d7e5;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#cbdcea;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color:#182433;--tblr-table-bg:#fde1cd;--tblr-table-border-color:#e6cebe;--tblr-table-striped-bg:#f2d8c5;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e6cebe;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ecd3c1;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color:#182433;--tblr-table-bg:#f7d7d7;--tblr-table-border-color:#e1c5c7;--tblr-table-striped-bg:#eccecf;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e1c5c7;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#e6cacb;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color:#182433;--tblr-table-bg:#fcfdfe;--tblr-table-border-color:#e5e7ea;--tblr-table-striped-bg:#f1f2f4;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e5e7ea;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ebedef;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color:#fcfdfe;--tblr-table-bg:#182433;--tblr-table-border-color:#2f3a47;--tblr-table-striped-bg:#232f3d;--tblr-table-striped-color:#fcfdfe;--tblr-table-active-bg:#2f3a47;--tblr-table-active-color:#fcfdfe;--tblr-table-hover-bg:#293442;--tblr-table-hover-color:#fcfdfe;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.5625rem + var(--tblr-border-width));padding-bottom:calc(.5625rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.4285714286}.col-form-label-lg{padding-top:calc(.5rem + var(--tblr-border-width));padding-bottom:calc(.5rem + var(--tblr-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.125rem + var(--tblr-border-width));padding-bottom:calc(.125rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:85.714285%;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.5625rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.4285714286em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-webkit-input-placeholder{color:#929dab;opacity:1}.form-control:-ms-input-placeholder{color:#929dab;opacity:1}.form-control::-ms-input-placeholder{color:#929dab;opacity:1}.form-control::placeholder{color:#929dab;opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::-webkit-file-upload-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.5625rem .75rem;margin:-.5625rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.5625rem 0;margin-bottom:0;line-height:1.4285714286;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-left:0;padding-right:0}.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2));padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-sm::file-selector-button{padding:.125rem .25rem;margin:-.125rem -.25rem;-webkit-margin-end:.25rem;margin-inline-end:.25rem}.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2));padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}.form-control-lg::file-selector-button{padding:.5rem .75rem;margin:-.5rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem}textarea.form-control{min-height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));padding:.5625rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.4285714286em + .25rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.4285714286em + 1rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23929dab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.5625rem .75rem .5625rem 2.25rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon,none);background-repeat:no-repeat;background-position:left .75rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#80aad3;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-left:.75rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.125rem;padding-bottom:.125rem;padding-right:.25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-right:.75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23fcfdfe' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.25rem;padding-right:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:right;margin-right:-2rem}.form-check-reverse{padding-left:2rem;padding-right:0;text-align:left}.form-check-reverse .form-check-input{float:left;margin-left:-2rem;margin-right:0}.form-check-input{--tblr-form-check-bg:var(--tblr-bg-forms);width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#80aad3;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-right:2.5rem}.form-switch .form-check-input{--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23dadfe5'/%3e%3c/svg%3e");width:2rem;margin-right:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:right center;border-radius:2rem;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2380aad3'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:left center;--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-left:2.5rem;padding-right:0}.form-switch.form-check-reverse .form-check-input{margin-left:-2.5rem;margin-right:0}.form-check-inline{display:inline-block;margin-left:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.25rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;-webkit-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b3cce4}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b3cce4}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:0 0 transparent}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;right:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:100% 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-webkit-input-placeholder,.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-ms-input-placeholder,.form-floating>.form-control::-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-ms-input-placeholder),.form-floating>.form-control:not(:-ms-input-placeholder){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-ms-input-placeholder)~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control:not(:-ms-input-placeholder)~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(-.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#667382}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--tblr-bg-surface-secondary)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.5625rem .75rem;font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-secondary);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem .75rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.125rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-left:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--tblr-border-width) * -1);border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--tblr-form-valid-border-color);padding-left:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-left:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) left calc(.3571428572em + .28125rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--tblr-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-left:4.125rem;background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--tblr-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--tblr-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-right:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:85.714285%;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-2) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--tblr-form-invalid-border-color);padding-left:calc(1.4285714286em + 1.125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:left calc(.3571428572em + .28125rem) center;background-size:calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-left:calc(1.4285714286em + 1.125rem);background-position:top calc(.3571428572em + .28125rem) left calc(.3571428572em + .28125rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-left:4.125rem;background-position:left .75rem center,center left 2.25rem;background-size:16px 12px,calc(.7142857143em + .5625rem) calc(.7142857143em + .5625rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.4285714286em + 1.125rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--tblr-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-right:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--tblr-btn-padding-x:1rem;--tblr-btn-padding-y:0.5625rem;--tblr-btn-font-family:var(--tblr-font-sans-serif);--tblr-btn-font-size:0.875rem;--tblr-btn-font-weight:var(--tblr-font-weight-medium);--tblr-btn-line-height:1.4285714286;--tblr-btn-color:var(--tblr-body-color);--tblr-btn-bg:transparent;--tblr-btn-border-width:var(--tblr-border-width);--tblr-btn-border-color:transparent;--tblr-btn-border-radius:var(--tblr-border-radius);--tblr-btn-hover-border-color:transparent;--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-disabled-opacity:0.4;--tblr-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight:400;--tblr-btn-color:var(--tblr-link-color);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-link-hover-color);--tblr-btn-hover-border-color:transparent;--tblr-btn-active-color:var(--tblr-link-hover-color);--tblr-btn-active-border-color:transparent;--tblr-btn-disabled-color:#667382;--tblr-btn-disabled-border-color:transparent;--tblr-btn-box-shadow:0 0 0 #000;--tblr-btn-focus-shadow-rgb:38,109,179;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--tblr-btn-padding-y:0.5rem;--tblr-btn-padding-x:0.75rem;--tblr-btn-font-size:1.25rem;--tblr-btn-border-radius:var(--tblr-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--tblr-btn-padding-y:0.125rem;--tblr-btn-padding-x:0.25rem;--tblr-btn-font-size:0.75rem;--tblr-btn-border-radius:var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(45deg)}.dropdown-menu{--tblr-dropdown-zindex:1000;--tblr-dropdown-min-width:11rem;--tblr-dropdown-padding-x:0;--tblr-dropdown-padding-y:0.25rem;--tblr-dropdown-spacer:1px;--tblr-dropdown-font-size:0.875rem;--tblr-dropdown-color:var(--tblr-body-color);--tblr-dropdown-bg:var(--tblr-bg-surface);--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-border-radius:var(--tblr-border-radius);--tblr-dropdown-border-width:var(--tblr-border-width);--tblr-dropdown-inner-border-radius:calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y:var(--tblr-spacer);--tblr-dropdown-box-shadow:var(--tblr-box-shadow-dropdown);--tblr-dropdown-link-color:inherit;--tblr-dropdown-link-hover-color:inherit;--tblr-dropdown-link-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x:0.75rem;--tblr-dropdown-item-padding-y:0.5rem;--tblr-dropdown-header-color:#667382;--tblr-dropdown-header-padding-x:0.75rem;--tblr-dropdown-header-padding-y:0.25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:right;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;right:0;margin-top:var(--tblr-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{left:0;right:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{left:0;right:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{left:0;right:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{left:0;right:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{left:0;right:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{left:auto;right:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{left:0;right:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(-135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;left:auto;right:100%;margin-top:0;margin-right:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(135deg)}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;left:100%;right:auto;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(-45deg)}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color:#dadfe5;--tblr-dropdown-bg:#182433;--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-link-color:#dadfe5;--tblr-dropdown-link-hover-color:#ffffff;--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:#929dab;--tblr-dropdown-header-color:#929dab}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--tblr-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-right:calc(var(--tblr-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-toggle-split{padding-left:.75rem;padding-right:.75rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-right:0}.dropstart .dropdown-toggle-split::before{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-left:.1875rem;padding-right:.1875rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-left:.5625rem;padding-right:.5625rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--tblr-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-left-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-right-radius:0;border-top-left-radius:0}.nav{--tblr-nav-link-padding-x:0.75rem;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-secondary);--tblr-nav-link-hover-color:var(--tblr-link-hover-color);--tblr-nav-link-disabled-color:var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-right:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width:var(--tblr-border-width);--tblr-nav-tabs-border-color:var(--tblr-border-color);--tblr-nav-tabs-border-radius:var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color:var(--tblr-body-color);--tblr-nav-tabs-link-active-bg:var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-right-radius:var(--tblr-nav-tabs-border-radius);border-top-left-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-right-radius:0;border-top-left-radius:0}.nav-pills{--tblr-nav-pills-border-radius:var(--tblr-border-radius);--tblr-nav-pills-link-active-color:var(--tblr-primary);--tblr-nav-pills-link-active-bg:var(--tblr-active-bg)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap:1rem;--tblr-nav-underline-border-width:0.125rem;--tblr-nav-underline-link-active-color:var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-left:0;padding-right:0;border-bottom:var(--tblr-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:600;color:var(--tblr-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--tblr-navbar-padding-x:0;--tblr-navbar-padding-y:0.25rem;--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-hover-color:rgba(var(--tblr-emphasis-color-rgb), 0.8);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:var(--tblr-body-color) color;--tblr-navbar-brand-padding-y:0.5rem;--tblr-navbar-brand-margin-end:1rem;--tblr-navbar-brand-font-size:1.25rem;--tblr-navbar-brand-color:var(--tblr-body-color);--tblr-navbar-brand-hover-color:var(--tblr-body-color) color;--tblr-navbar-nav-link-padding-x:0.75rem;--tblr-navbar-toggler-padding-y:0;--tblr-navbar-toggler-padding-x:0;--tblr-navbar-toggler-font-size:1rem;--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color:rgba(var(--tblr-emphasis-color-rgb), 0.15);--tblr-navbar-toggler-border-radius:var(--tblr-border-radius);--tblr-navbar-toggler-focus-width:0;--tblr-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-left:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x:0;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-color:var(--tblr-navbar-color);--tblr-nav-link-hover-color:var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color:var(--tblr-navbar-disabled-color);display:flex;flex-direction:column;padding-right:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-left:var(--tblr-navbar-nav-link-padding-x);padding-right:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color:rgba(255, 255, 255, 0.7);--tblr-navbar-hover-color:rgba(255, 255, 255, 0.75);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:#ffffff;--tblr-navbar-brand-color:#ffffff;--tblr-navbar-brand-hover-color:#ffffff;--tblr-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y:1.25rem;--tblr-card-spacer-x:1.25rem;--tblr-card-title-spacer-y:1.25rem;--tblr-card-border-width:var(--tblr-border-width);--tblr-card-border-color:var(--tblr-border-color-translucent);--tblr-card-border-radius:var(--tblr-border-radius);--tblr-card-box-shadow:var(--tblr-shadow-card);--tblr-card-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-card-cap-padding-y:1.25rem;--tblr-card-cap-padding-x:1.25rem;--tblr-card-cap-bg:var(--tblr-bg-surface-tertiary);--tblr-card-cap-color:inherit;--tblr-card-color:inherit;--tblr-card-bg:var(--tblr-bg-surface);--tblr-card-img-overlay-padding:1rem;--tblr-card-group-margin:1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>.hr,.card>hr{margin-left:0;margin-right:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-right-radius:var(--tblr-card-inner-border-radius);border-top-left-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-left-radius:var(--tblr-card-inner-border-radius);border-bottom-right-radius:var(--tblr-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-right:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));margin-right:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;left:0;bottom:0;right:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-right-radius:var(--tblr-card-inner-border-radius);border-top-left-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-left-radius:var(--tblr-card-inner-border-radius);border-bottom-right-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-right:0;border-right:0}.card-group>.card:not(:last-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:not(:first-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-right-radius:0}}.accordion{--tblr-accordion-color:var(--tblr-body-color);--tblr-accordion-bg:transparent;--tblr-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--tblr-accordion-border-color:var(--tblr-border-color-translucent);--tblr-accordion-border-width:var(--tblr-border-width);--tblr-accordion-border-radius:var(--tblr-border-radius);--tblr-accordion-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-btn-padding-x:1.25rem;--tblr-accordion-btn-padding-y:1rem;--tblr-accordion-btn-color:var(--tblr-body-color);--tblr-accordion-btn-bg:transparent;--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--tblr-accordion-btn-icon-width:1rem;--tblr-accordion-btn-icon-transform:rotate(-180deg);--tblr-accordion-btn-icon-transition:transform 0.2s ease-in-out;--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23002242'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--tblr-accordion-btn-focus-border-color:var(--tblr-border-color-translucent);--tblr-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-accordion-body-padding-x:1.25rem;--tblr-accordion-body-padding-y:1rem;--tblr-accordion-active-color:inherit;--tblr-accordion-active-bg:transparent}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-btn-padding-x);font-size:.875rem;color:var(--tblr-accordion-btn-color);text-align:right;background-color:var(--tblr-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--tblr-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--tblr-accordion-active-color);background-color:var(--tblr-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--tblr-accordion-border-width)) 0 var(--tblr-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--tblr-accordion-btn-active-icon);transform:var(--tblr-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--tblr-accordion-btn-icon-width);height:var(--tblr-accordion-btn-icon-width);margin-right:auto;content:"";background-image:var(--tblr-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--tblr-accordion-btn-icon-width);transition:var(--tblr-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--tblr-accordion-btn-focus-border-color);outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--tblr-accordion-color);background-color:var(--tblr-accordion-bg);border:var(--tblr-accordion-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-right-radius:var(--tblr-accordion-border-radius);border-top-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-right-radius:var(--tblr-accordion-inner-border-radius);border-top-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-left-radius:var(--tblr-accordion-border-radius);border-bottom-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-left-radius:var(--tblr-accordion-inner-border-radius);border-bottom-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-left-radius:var(--tblr-accordion-border-radius);border-bottom-right-radius:var(--tblr-accordion-border-radius)}.accordion-body{padding:var(--tblr-accordion-body-padding-y) var(--tblr-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-left:0;border-right:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--tblr-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--tblr-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236698ca'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--tblr-breadcrumb-padding-x:0;--tblr-breadcrumb-padding-y:0;--tblr-breadcrumb-margin-bottom:1rem;--tblr-breadcrumb-divider-color:var(--tblr-secondary);--tblr-breadcrumb-item-padding-x:0.5rem;--tblr-breadcrumb-item-active-color:inherit;display:flex;flex-wrap:wrap;padding:var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x);margin-bottom:var(--tblr-breadcrumb-margin-bottom);font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-right:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:right;padding-left:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color)}.pagination{--tblr-pagination-padding-x:0.25rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.875rem;--tblr-pagination-color:var(--tblr-secondary);--tblr-pagination-bg:transparent;--tblr-pagination-border-width:0;--tblr-pagination-border-color:var(--tblr-border-color);--tblr-pagination-border-radius:var(--tblr-border-radius);--tblr-pagination-hover-color:var(--tblr-link-hover-color);--tblr-pagination-hover-bg:var(--tblr-tertiary-bg);--tblr-pagination-hover-border-color:var(--tblr-border-color);--tblr-pagination-focus-color:var(--tblr-link-hover-color);--tblr-pagination-focus-bg:var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-pagination-active-color:#ffffff;--tblr-pagination-active-bg:var(--tblr-primary);--tblr-pagination-active-border-color:var(--tblr-primary);--tblr-pagination-disabled-color:var(--tblr-disabled-color);--tblr-pagination-disabled-bg:transparent;--tblr-pagination-disabled-border-color:var(--tblr-border-color);display:flex;padding-right:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-right:calc(0 * -1)}.page-item:first-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x:1.5rem;--tblr-pagination-padding-y:0.75rem;--tblr-pagination-font-size:1.09375rem;--tblr-pagination-border-radius:var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x:0.5rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.765625rem;--tblr-pagination-border-radius:var(--tblr-border-radius-sm)}.badge{--tblr-badge-padding-x:0.5em;--tblr-badge-padding-y:0.25em;--tblr-badge-font-size:85.714285%;--tblr-badge-font-weight:var(--tblr-font-weight-medium);--tblr-badge-color:var(--tblr-secondary);--tblr-badge-border-radius:var(--tblr-border-radius);display:inline-block;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-size:var(--tblr-badge-font-size);font-weight:var(--tblr-badge-font-weight);line-height:1;color:var(--tblr-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--tblr-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--tblr-alert-bg:transparent;--tblr-alert-padding-x:1rem;--tblr-alert-padding-y:0.75rem;--tblr-alert-margin-bottom:1rem;--tblr-alert-color:inherit;--tblr-alert-border-color:transparent;--tblr-alert-border:var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius:var(--tblr-border-radius);--tblr-alert-link-color:inherit;position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);color:var(--tblr-alert-color);background-color:var(--tblr-alert-bg);border:var(--tblr-alert-border);border-radius:var(--tblr-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-dismissible{padding-left:3rem}.alert-dismissible .btn-close{position:absolute;top:0;left:0;z-index:2;padding:.9375rem 1rem}.alert-primary{--tblr-alert-color:var(--tblr-primary-text-emphasis);--tblr-alert-bg:var(--tblr-primary-bg-subtle);--tblr-alert-border-color:var(--tblr-primary-border-subtle);--tblr-alert-link-color:var(--tblr-primary-text-emphasis)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary-text-emphasis);--tblr-alert-bg:var(--tblr-secondary-bg-subtle);--tblr-alert-border-color:var(--tblr-secondary-border-subtle);--tblr-alert-link-color:var(--tblr-secondary-text-emphasis)}.alert-success{--tblr-alert-color:var(--tblr-success-text-emphasis);--tblr-alert-bg:var(--tblr-success-bg-subtle);--tblr-alert-border-color:var(--tblr-success-border-subtle);--tblr-alert-link-color:var(--tblr-success-text-emphasis)}.alert-info{--tblr-alert-color:var(--tblr-info-text-emphasis);--tblr-alert-bg:var(--tblr-info-bg-subtle);--tblr-alert-border-color:var(--tblr-info-border-subtle);--tblr-alert-link-color:var(--tblr-info-text-emphasis)}.alert-warning{--tblr-alert-color:var(--tblr-warning-text-emphasis);--tblr-alert-bg:var(--tblr-warning-bg-subtle);--tblr-alert-border-color:var(--tblr-warning-border-subtle);--tblr-alert-link-color:var(--tblr-warning-text-emphasis)}.alert-danger{--tblr-alert-color:var(--tblr-danger-text-emphasis);--tblr-alert-bg:var(--tblr-danger-bg-subtle);--tblr-alert-border-color:var(--tblr-danger-border-subtle);--tblr-alert-link-color:var(--tblr-danger-text-emphasis)}.alert-light{--tblr-alert-color:var(--tblr-light-text-emphasis);--tblr-alert-bg:var(--tblr-light-bg-subtle);--tblr-alert-border-color:var(--tblr-light-border-subtle);--tblr-alert-link-color:var(--tblr-light-text-emphasis)}.alert-dark{--tblr-alert-color:var(--tblr-dark-text-emphasis);--tblr-alert-bg:var(--tblr-dark-bg-subtle);--tblr-alert-border-color:var(--tblr-dark-border-subtle);--tblr-alert-link-color:var(--tblr-dark-text-emphasis)}.alert-muted{--tblr-alert-color:var(--tblr-muted-text-emphasis);--tblr-alert-bg:var(--tblr-muted-bg-subtle);--tblr-alert-border-color:var(--tblr-muted-border-subtle);--tblr-alert-link-color:var(--tblr-muted-text-emphasis)}.alert-blue{--tblr-alert-color:var(--tblr-blue-text-emphasis);--tblr-alert-bg:var(--tblr-blue-bg-subtle);--tblr-alert-border-color:var(--tblr-blue-border-subtle);--tblr-alert-link-color:var(--tblr-blue-text-emphasis)}.alert-azure{--tblr-alert-color:var(--tblr-azure-text-emphasis);--tblr-alert-bg:var(--tblr-azure-bg-subtle);--tblr-alert-border-color:var(--tblr-azure-border-subtle);--tblr-alert-link-color:var(--tblr-azure-text-emphasis)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo-text-emphasis);--tblr-alert-bg:var(--tblr-indigo-bg-subtle);--tblr-alert-border-color:var(--tblr-indigo-border-subtle);--tblr-alert-link-color:var(--tblr-indigo-text-emphasis)}.alert-purple{--tblr-alert-color:var(--tblr-purple-text-emphasis);--tblr-alert-bg:var(--tblr-purple-bg-subtle);--tblr-alert-border-color:var(--tblr-purple-border-subtle);--tblr-alert-link-color:var(--tblr-purple-text-emphasis)}.alert-pink{--tblr-alert-color:var(--tblr-pink-text-emphasis);--tblr-alert-bg:var(--tblr-pink-bg-subtle);--tblr-alert-border-color:var(--tblr-pink-border-subtle);--tblr-alert-link-color:var(--tblr-pink-text-emphasis)}.alert-red{--tblr-alert-color:var(--tblr-red-text-emphasis);--tblr-alert-bg:var(--tblr-red-bg-subtle);--tblr-alert-border-color:var(--tblr-red-border-subtle);--tblr-alert-link-color:var(--tblr-red-text-emphasis)}.alert-orange{--tblr-alert-color:var(--tblr-orange-text-emphasis);--tblr-alert-bg:var(--tblr-orange-bg-subtle);--tblr-alert-border-color:var(--tblr-orange-border-subtle);--tblr-alert-link-color:var(--tblr-orange-text-emphasis)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow-text-emphasis);--tblr-alert-bg:var(--tblr-yellow-bg-subtle);--tblr-alert-border-color:var(--tblr-yellow-border-subtle);--tblr-alert-link-color:var(--tblr-yellow-text-emphasis)}.alert-lime{--tblr-alert-color:var(--tblr-lime-text-emphasis);--tblr-alert-bg:var(--tblr-lime-bg-subtle);--tblr-alert-border-color:var(--tblr-lime-border-subtle);--tblr-alert-link-color:var(--tblr-lime-text-emphasis)}.alert-green{--tblr-alert-color:var(--tblr-green-text-emphasis);--tblr-alert-bg:var(--tblr-green-bg-subtle);--tblr-alert-border-color:var(--tblr-green-border-subtle);--tblr-alert-link-color:var(--tblr-green-text-emphasis)}.alert-teal{--tblr-alert-color:var(--tblr-teal-text-emphasis);--tblr-alert-bg:var(--tblr-teal-bg-subtle);--tblr-alert-border-color:var(--tblr-teal-border-subtle);--tblr-alert-link-color:var(--tblr-teal-text-emphasis)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan-text-emphasis);--tblr-alert-bg:var(--tblr-cyan-bg-subtle);--tblr-alert-border-color:var(--tblr-cyan-border-subtle);--tblr-alert-link-color:var(--tblr-cyan-text-emphasis)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook-text-emphasis);--tblr-alert-bg:var(--tblr-facebook-bg-subtle);--tblr-alert-border-color:var(--tblr-facebook-border-subtle);--tblr-alert-link-color:var(--tblr-facebook-text-emphasis)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter-text-emphasis);--tblr-alert-bg:var(--tblr-twitter-bg-subtle);--tblr-alert-border-color:var(--tblr-twitter-border-subtle);--tblr-alert-link-color:var(--tblr-twitter-text-emphasis)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin-text-emphasis);--tblr-alert-bg:var(--tblr-linkedin-bg-subtle);--tblr-alert-border-color:var(--tblr-linkedin-border-subtle);--tblr-alert-link-color:var(--tblr-linkedin-text-emphasis)}.alert-google{--tblr-alert-color:var(--tblr-google-text-emphasis);--tblr-alert-bg:var(--tblr-google-bg-subtle);--tblr-alert-border-color:var(--tblr-google-border-subtle);--tblr-alert-link-color:var(--tblr-google-text-emphasis)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube-text-emphasis);--tblr-alert-bg:var(--tblr-youtube-bg-subtle);--tblr-alert-border-color:var(--tblr-youtube-border-subtle);--tblr-alert-link-color:var(--tblr-youtube-text-emphasis)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo-text-emphasis);--tblr-alert-bg:var(--tblr-vimeo-bg-subtle);--tblr-alert-border-color:var(--tblr-vimeo-border-subtle);--tblr-alert-link-color:var(--tblr-vimeo-text-emphasis)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble-text-emphasis);--tblr-alert-bg:var(--tblr-dribbble-bg-subtle);--tblr-alert-border-color:var(--tblr-dribbble-border-subtle);--tblr-alert-link-color:var(--tblr-dribbble-text-emphasis)}.alert-github{--tblr-alert-color:var(--tblr-github-text-emphasis);--tblr-alert-bg:var(--tblr-github-bg-subtle);--tblr-alert-border-color:var(--tblr-github-border-subtle);--tblr-alert-link-color:var(--tblr-github-text-emphasis)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram-text-emphasis);--tblr-alert-bg:var(--tblr-instagram-bg-subtle);--tblr-alert-border-color:var(--tblr-instagram-border-subtle);--tblr-alert-link-color:var(--tblr-instagram-text-emphasis)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest-text-emphasis);--tblr-alert-bg:var(--tblr-pinterest-bg-subtle);--tblr-alert-border-color:var(--tblr-pinterest-border-subtle);--tblr-alert-link-color:var(--tblr-pinterest-text-emphasis)}.alert-vk{--tblr-alert-color:var(--tblr-vk-text-emphasis);--tblr-alert-bg:var(--tblr-vk-bg-subtle);--tblr-alert-border-color:var(--tblr-vk-border-subtle);--tblr-alert-link-color:var(--tblr-vk-text-emphasis)}.alert-rss{--tblr-alert-color:var(--tblr-rss-text-emphasis);--tblr-alert-bg:var(--tblr-rss-bg-subtle);--tblr-alert-border-color:var(--tblr-rss-border-subtle);--tblr-alert-link-color:var(--tblr-rss-text-emphasis)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr-text-emphasis);--tblr-alert-bg:var(--tblr-flickr-bg-subtle);--tblr-alert-border-color:var(--tblr-flickr-border-subtle);--tblr-alert-link-color:var(--tblr-flickr-text-emphasis)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket-text-emphasis);--tblr-alert-bg:var(--tblr-bitbucket-bg-subtle);--tblr-alert-border-color:var(--tblr-bitbucket-border-subtle);--tblr-alert-link-color:var(--tblr-bitbucket-text-emphasis)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler-text-emphasis);--tblr-alert-bg:var(--tblr-tabler-bg-subtle);--tblr-alert-border-color:var(--tblr-tabler-border-subtle);--tblr-alert-link-color:var(--tblr-tabler-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--tblr-progress-height:0.5rem;--tblr-progress-font-size:0.65625rem;--tblr-progress-bg:var(--tblr-border-color);--tblr-progress-border-radius:var(--tblr-border-radius);--tblr-progress-box-shadow:var(--tblr-box-shadow-inset);--tblr-progress-bar-color:#ffffff;--tblr-progress-bar-bg:var(--tblr-primary);--tblr-progress-bar-transition:width 0.6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--tblr-list-group-color:var(--tblr-body-color);--tblr-list-group-bg:inherit;--tblr-list-group-border-color:var(--tblr-border-color);--tblr-list-group-border-width:var(--tblr-border-width);--tblr-list-group-border-radius:var(--tblr-border-radius);--tblr-list-group-item-padding-x:1.25rem;--tblr-list-group-item-padding-y:1.25rem;--tblr-list-group-action-color:inherit;--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:rgba(var(--tblr-text-secondary-rgb), 0.04);--tblr-list-group-action-active-color:var(--tblr-body-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-bg);--tblr-list-group-disabled-color:var(--tblr-secondary-color);--tblr-list-group-disabled-bg:inherit;--tblr-list-group-active-color:inherit;--tblr-list-group-active-bg:var(--tblr-active-bg);--tblr-list-group-active-border-color:var(--tblr-border-color);display:flex;flex-direction:column;padding-right:0;margin-bottom:0;border-radius:var(--tblr-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color)}.list-group-item:first-child{border-top-right-radius:inherit;border-top-left-radius:inherit}.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--tblr-list-group-border-width));border-top-width:var(--tblr-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-right-radius:var(--tblr-list-group-border-radius);border-top-left-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-left-radius:var(--tblr-list-group-border-radius);border-bottom-right-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-right-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-right:calc(-1 * var(--tblr-list-group-border-width));border-right-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color:var(--tblr-primary-text-emphasis);--tblr-list-group-bg:var(--tblr-primary-bg-subtle);--tblr-list-group-border-color:var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-primary-border-subtle);--tblr-list-group-active-color:var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color:var(--tblr-secondary-text-emphasis);--tblr-list-group-bg:var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color:var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-active-color:var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color:var(--tblr-success-text-emphasis);--tblr-list-group-bg:var(--tblr-success-bg-subtle);--tblr-list-group-border-color:var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-success-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-success-border-subtle);--tblr-list-group-active-color:var(--tblr-success-bg-subtle);--tblr-list-group-active-bg:var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color:var(--tblr-info-text-emphasis);--tblr-list-group-bg:var(--tblr-info-bg-subtle);--tblr-list-group-border-color:var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-info-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-info-border-subtle);--tblr-list-group-active-color:var(--tblr-info-bg-subtle);--tblr-list-group-active-bg:var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color:var(--tblr-warning-text-emphasis);--tblr-list-group-bg:var(--tblr-warning-bg-subtle);--tblr-list-group-border-color:var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-warning-border-subtle);--tblr-list-group-active-color:var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg:var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color:var(--tblr-danger-text-emphasis);--tblr-list-group-bg:var(--tblr-danger-bg-subtle);--tblr-list-group-border-color:var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-danger-border-subtle);--tblr-list-group-active-color:var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg:var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color:var(--tblr-light-text-emphasis);--tblr-list-group-bg:var(--tblr-light-bg-subtle);--tblr-list-group-border-color:var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-light-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-light-border-subtle);--tblr-list-group-active-color:var(--tblr-light-bg-subtle);--tblr-list-group-active-bg:var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color:var(--tblr-dark-text-emphasis);--tblr-list-group-bg:var(--tblr-dark-bg-subtle);--tblr-list-group-border-color:var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dark-border-subtle);--tblr-list-group-active-color:var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color:var(--tblr-muted-text-emphasis);--tblr-list-group-bg:var(--tblr-muted-bg-subtle);--tblr-list-group-border-color:var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-muted-border-subtle);--tblr-list-group-active-color:var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg:var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color:var(--tblr-blue-text-emphasis);--tblr-list-group-bg:var(--tblr-blue-bg-subtle);--tblr-list-group-border-color:var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-blue-border-subtle);--tblr-list-group-active-color:var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg:var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color:var(--tblr-azure-text-emphasis);--tblr-list-group-bg:var(--tblr-azure-bg-subtle);--tblr-list-group-border-color:var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-azure-border-subtle);--tblr-list-group-active-color:var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg:var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color:var(--tblr-indigo-text-emphasis);--tblr-list-group-bg:var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color:var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-active-color:var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color:var(--tblr-purple-text-emphasis);--tblr-list-group-bg:var(--tblr-purple-bg-subtle);--tblr-list-group-border-color:var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-purple-border-subtle);--tblr-list-group-active-color:var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg:var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color:var(--tblr-pink-text-emphasis);--tblr-list-group-bg:var(--tblr-pink-bg-subtle);--tblr-list-group-border-color:var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pink-border-subtle);--tblr-list-group-active-color:var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color:var(--tblr-red-text-emphasis);--tblr-list-group-bg:var(--tblr-red-bg-subtle);--tblr-list-group-border-color:var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-red-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-red-border-subtle);--tblr-list-group-active-color:var(--tblr-red-bg-subtle);--tblr-list-group-active-bg:var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color:var(--tblr-orange-text-emphasis);--tblr-list-group-bg:var(--tblr-orange-bg-subtle);--tblr-list-group-border-color:var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-orange-border-subtle);--tblr-list-group-active-color:var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg:var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color:var(--tblr-yellow-text-emphasis);--tblr-list-group-bg:var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color:var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-active-color:var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg:var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color:var(--tblr-lime-text-emphasis);--tblr-list-group-bg:var(--tblr-lime-bg-subtle);--tblr-list-group-border-color:var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-lime-border-subtle);--tblr-list-group-active-color:var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg:var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color:var(--tblr-green-text-emphasis);--tblr-list-group-bg:var(--tblr-green-bg-subtle);--tblr-list-group-border-color:var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-green-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-green-border-subtle);--tblr-list-group-active-color:var(--tblr-green-bg-subtle);--tblr-list-group-active-bg:var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color:var(--tblr-teal-text-emphasis);--tblr-list-group-bg:var(--tblr-teal-bg-subtle);--tblr-list-group-border-color:var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-teal-border-subtle);--tblr-list-group-active-color:var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg:var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color:var(--tblr-cyan-text-emphasis);--tblr-list-group-bg:var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color:var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-active-color:var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg:var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-cyan-text-emphasis)}.list-group-item-facebook{--tblr-list-group-color:var(--tblr-facebook-text-emphasis);--tblr-list-group-bg:var(--tblr-facebook-bg-subtle);--tblr-list-group-border-color:var(--tblr-facebook-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-active-color:var(--tblr-facebook-bg-subtle);--tblr-list-group-active-bg:var(--tblr-facebook-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-facebook-text-emphasis)}.list-group-item-twitter{--tblr-list-group-color:var(--tblr-twitter-text-emphasis);--tblr-list-group-bg:var(--tblr-twitter-bg-subtle);--tblr-list-group-border-color:var(--tblr-twitter-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-active-color:var(--tblr-twitter-bg-subtle);--tblr-list-group-active-bg:var(--tblr-twitter-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-twitter-text-emphasis)}.list-group-item-linkedin{--tblr-list-group-color:var(--tblr-linkedin-text-emphasis);--tblr-list-group-bg:var(--tblr-linkedin-bg-subtle);--tblr-list-group-border-color:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-active-color:var(--tblr-linkedin-bg-subtle);--tblr-list-group-active-bg:var(--tblr-linkedin-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-linkedin-text-emphasis)}.list-group-item-google{--tblr-list-group-color:var(--tblr-google-text-emphasis);--tblr-list-group-bg:var(--tblr-google-bg-subtle);--tblr-list-group-border-color:var(--tblr-google-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-google-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-google-border-subtle);--tblr-list-group-active-color:var(--tblr-google-bg-subtle);--tblr-list-group-active-bg:var(--tblr-google-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-google-text-emphasis)}.list-group-item-youtube{--tblr-list-group-color:var(--tblr-youtube-text-emphasis);--tblr-list-group-bg:var(--tblr-youtube-bg-subtle);--tblr-list-group-border-color:var(--tblr-youtube-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-active-color:var(--tblr-youtube-bg-subtle);--tblr-list-group-active-bg:var(--tblr-youtube-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-youtube-text-emphasis)}.list-group-item-vimeo{--tblr-list-group-color:var(--tblr-vimeo-text-emphasis);--tblr-list-group-bg:var(--tblr-vimeo-bg-subtle);--tblr-list-group-border-color:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-active-color:var(--tblr-vimeo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vimeo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vimeo-text-emphasis)}.list-group-item-dribbble{--tblr-list-group-color:var(--tblr-dribbble-text-emphasis);--tblr-list-group-bg:var(--tblr-dribbble-bg-subtle);--tblr-list-group-border-color:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-active-color:var(--tblr-dribbble-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dribbble-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dribbble-text-emphasis)}.list-group-item-github{--tblr-list-group-color:var(--tblr-github-text-emphasis);--tblr-list-group-bg:var(--tblr-github-bg-subtle);--tblr-list-group-border-color:var(--tblr-github-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-github-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-github-border-subtle);--tblr-list-group-active-color:var(--tblr-github-bg-subtle);--tblr-list-group-active-bg:var(--tblr-github-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-github-text-emphasis)}.list-group-item-instagram{--tblr-list-group-color:var(--tblr-instagram-text-emphasis);--tblr-list-group-bg:var(--tblr-instagram-bg-subtle);--tblr-list-group-border-color:var(--tblr-instagram-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-active-color:var(--tblr-instagram-bg-subtle);--tblr-list-group-active-bg:var(--tblr-instagram-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-instagram-text-emphasis)}.list-group-item-pinterest{--tblr-list-group-color:var(--tblr-pinterest-text-emphasis);--tblr-list-group-bg:var(--tblr-pinterest-bg-subtle);--tblr-list-group-border-color:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-active-color:var(--tblr-pinterest-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pinterest-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pinterest-text-emphasis)}.list-group-item-vk{--tblr-list-group-color:var(--tblr-vk-text-emphasis);--tblr-list-group-bg:var(--tblr-vk-bg-subtle);--tblr-list-group-border-color:var(--tblr-vk-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vk-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vk-border-subtle);--tblr-list-group-active-color:var(--tblr-vk-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vk-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vk-text-emphasis)}.list-group-item-rss{--tblr-list-group-color:var(--tblr-rss-text-emphasis);--tblr-list-group-bg:var(--tblr-rss-bg-subtle);--tblr-list-group-border-color:var(--tblr-rss-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-rss-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-rss-border-subtle);--tblr-list-group-active-color:var(--tblr-rss-bg-subtle);--tblr-list-group-active-bg:var(--tblr-rss-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-rss-text-emphasis)}.list-group-item-flickr{--tblr-list-group-color:var(--tblr-flickr-text-emphasis);--tblr-list-group-bg:var(--tblr-flickr-bg-subtle);--tblr-list-group-border-color:var(--tblr-flickr-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-active-color:var(--tblr-flickr-bg-subtle);--tblr-list-group-active-bg:var(--tblr-flickr-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-flickr-text-emphasis)}.list-group-item-bitbucket{--tblr-list-group-color:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-bg:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-border-color:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-active-color:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-active-bg:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-bitbucket-text-emphasis)}.list-group-item-tabler{--tblr-list-group-color:var(--tblr-tabler-text-emphasis);--tblr-list-group-bg:var(--tblr-tabler-bg-subtle);--tblr-list-group-border-color:var(--tblr-tabler-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-active-color:var(--tblr-tabler-bg-subtle);--tblr-list-group-active-bg:var(--tblr-tabler-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-tabler-text-emphasis)}.btn-close{--tblr-btn-close-color:#182433;--tblr-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--tblr-btn-close-opacity:0.4;--tblr-btn-close-hover-opacity:0.75;--tblr-btn-close-focus-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-btn-close-focus-opacity:1;--tblr-btn-close-disabled-opacity:0.25;--tblr-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--tblr-btn-close-color);background:transparent var(--tblr-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:4px;opacity:var(--tblr-btn-close-opacity)}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.btn-close-white{filter:var(--tblr-btn-close-white-filter)}[data-bs-theme=dark] .btn-close,body[data-bs-theme=dark] [data-bs-theme=light] .btn-close{filter:var(--tblr-btn-close-white-filter)}.toast{--tblr-toast-zindex:1090;--tblr-toast-padding-x:0.75rem;--tblr-toast-padding-y:0.5rem;--tblr-toast-spacing:calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width:350px;--tblr-toast-font-size:0.875rem;--tblr-toast-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-border-width:var(--tblr-border-width);--tblr-toast-border-color:var(--tblr-border-color);--tblr-toast-border-radius:var(--tblr-border-radius);--tblr-toast-box-shadow:var(--tblr-box-shadow);--tblr-toast-header-color:var(--tblr-secondary);--tblr-toast-header-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-header-border-color:var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex:1090;position:absolute;z-index:var(--tblr-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-left:calc(-.5 * var(--tblr-toast-padding-x));margin-right:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex:1055;--tblr-modal-width:540px;--tblr-modal-padding:1.5rem;--tblr-modal-margin:0.5rem;--tblr-modal-bg:var(--tblr-bg-surface);--tblr-modal-border-color:transparent;--tblr-modal-border-width:var(--tblr-border-width);--tblr-modal-border-radius:var(--tblr-border-radius-lg);--tblr-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-modal-inner-border-radius:calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x:1.5rem;--tblr-modal-header-padding-y:1.5rem;--tblr-modal-header-padding:1.5rem;--tblr-modal-header-border-color:var(--tblr-border-color);--tblr-modal-header-border-width:var(--tblr-border-width);--tblr-modal-title-line-height:1.4285714286;--tblr-modal-footer-gap:0.75rem;--tblr-modal-footer-bg:var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color:var(--tblr-border-color);--tblr-modal-footer-border-width:var(--tblr-border-width);position:fixed;top:0;right:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-1rem)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex:1050;--tblr-backdrop-bg:#182433;--tblr-backdrop-opacity:0.24;position:fixed;top:0;right:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-right-radius:var(--tblr-modal-inner-border-radius);border-top-left-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin:calc(-.5 * var(--tblr-modal-header-padding-y)) auto calc(-.5 * var(--tblr-modal-header-padding-y)) calc(-.5 * var(--tblr-modal-header-padding-x))}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-left-radius:var(--tblr-modal-inner-border-radius);border-bottom-right-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--tblr-modal-margin:1.75rem;--tblr-modal-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0}.modal-dialog{max-width:var(--tblr-modal-width);margin-left:auto;margin-right:auto}.modal-sm{--tblr-modal-width:380px}}@media (min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width:720px}}@media (min-width:1200px){.modal-xl{--tblr-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--tblr-tooltip-zindex:1080;--tblr-tooltip-max-width:200px;--tblr-tooltip-padding-x:var(--tblr-spacer-2);--tblr-tooltip-padding-y:var(--tblr-spacer-2);--tblr-tooltip-font-size:0.765625rem;--tblr-tooltip-color:var(--tblr-light);--tblr-tooltip-bg:var(--tblr-bg-surface-dark);--tblr-tooltip-border-radius:var(--tblr-border-radius);--tblr-tooltip-opacity:0.9;--tblr-tooltip-arrow-width:0.8rem;--tblr-tooltip-arrow-height:0.4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex:1070;--tblr-popover-max-width:276px;--tblr-popover-font-size:0.765625rem;--tblr-popover-bg:var(--tblr-bg-surface);--tblr-popover-border-width:var(--tblr-border-width);--tblr-popover-border-color:var(--tblr-border-color);--tblr-popover-border-radius:var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius:calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-popover-header-padding-x:1rem;--tblr-popover-header-padding-y:0.5rem;--tblr-popover-header-font-size:0.875rem;--tblr-popover-header-color:inherit;--tblr-popover-header-bg:transparent;--tblr-popover-body-padding-x:1rem;--tblr-popover-body-padding-y:1rem;--tblr-popover-body-color:inherit;--tblr-popover-arrow-width:1rem;--tblr-popover-arrow-height:0.5rem;--tblr-popover-arrow-border:var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:right;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;right:50%;display:block;width:var(--tblr-popover-arrow-width);margin-right:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-right-radius:var(--tblr-popover-inner-border-radius);border-top-left-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:right;width:100%;margin-left:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(-100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{right:0}.carousel-control-next{left:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;left:0;bottom:0;right:0;z-index:2;display:flex;justify-content:center;padding:0;margin-left:15%;margin-bottom:1rem;margin-right:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-left:3px;margin-right:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;left:15%;bottom:1.25rem;right:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-border-width:2px;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-left-color:transparent}.spinner-border-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem;--tblr-spinner-border-width:1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--tblr-offcanvas-zindex:1045;--tblr-offcanvas-width:400px;--tblr-offcanvas-height:30vh;--tblr-offcanvas-padding-x:1.5rem;--tblr-offcanvas-padding-y:1.5rem;--tblr-offcanvas-color:var(--tblr-body-color);--tblr-offcanvas-bg:var(--tblr-bg-surface);--tblr-offcanvas-border-width:var(--tblr-border-width);--tblr-offcanvas-border-color:var(--tblr-border-color);--tblr-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-offcanvas-transition:transform 0.3s ease-in-out;--tblr-offcanvas-title-line-height:1.4285714286}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-end{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-top{top:0;left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{left:0;right:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;right:0;z-index:1040;width:100vw;height:100vh;background-color:#182433}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--tblr-offcanvas-padding-y));margin-left:calc(-.5 * var(--tblr-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--tblr-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,.9) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0;mask-position:-200% 0}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fcfdfe!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-secondary{color:#fcfdfe!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-success{color:#fcfdfe!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-info{color:#fcfdfe!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-warning{color:#fcfdfe!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-danger{color:#fcfdfe!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-light{color:#182433!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dark{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-muted{color:#fcfdfe!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-blue{color:#fcfdfe!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-azure{color:#fcfdfe!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-indigo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-purple{color:#fcfdfe!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pink{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-red{color:#fcfdfe!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-orange{color:#fcfdfe!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-yellow{color:#fcfdfe!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-lime{color:#fcfdfe!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-green{color:#fcfdfe!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-teal{color:#fcfdfe!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-cyan{color:#fcfdfe!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-facebook{color:#fcfdfe!important;background-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-twitter{color:#fcfdfe!important;background-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-linkedin{color:#fcfdfe!important;background-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-google{color:#fcfdfe!important;background-color:RGBA(var(--tblr-google-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-youtube{color:#fcfdfe!important;background-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vimeo{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dribbble{color:#fcfdfe!important;background-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-github{color:#fcfdfe!important;background-color:RGBA(var(--tblr-github-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-instagram{color:#fcfdfe!important;background-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pinterest{color:#fcfdfe!important;background-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vk{color:#fcfdfe!important;background-color:RGBA(var(--tblr-vk-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-rss{color:#fcfdfe!important;background-color:RGBA(var(--tblr-rss-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-flickr{color:#fcfdfe!important;background-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-bitbucket{color:#fcfdfe!important;background-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-tabler{color:#fcfdfe!important;background-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-bg-opacity,1))!important}.link-primary{color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--tblr-success-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--tblr-info-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--tblr-light-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(253,253,254,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(253,253,254,var(--tblr-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(19,29,41,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important}.link-muted{color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important}.link-muted:focus,.link-muted:hover{color:RGBA(82,92,104,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(82,92,104,var(--tblr-link-underline-opacity,1))!important}.link-blue{color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important}.link-blue:focus,.link-blue:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-azure{color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important}.link-azure:focus,.link-azure:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-indigo{color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-indigo:focus,.link-indigo:hover{color:RGBA(53,79,188,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important}.link-purple{color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important}.link-purple:focus,.link-purple:hover{color:RGBA(139,50,161,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important}.link-pink{color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pink:focus,.link-pink:hover{color:RGBA(171,41,86,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important}.link-red{color:RGBA(var(--tblr-red-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important}.link-red:focus,.link-red:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-orange{color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important}.link-orange:focus,.link-orange:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-yellow{color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important}.link-yellow:focus,.link-yellow:hover{color:RGBA(196,127,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important}.link-lime{color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important}.link-lime:focus,.link-lime:hover{color:RGBA(93,147,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important}.link-green{color:RGBA(var(--tblr-green-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important}.link-green:focus,.link-green:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-teal{color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important}.link-teal:focus,.link-teal:hover{color:RGBA(10,133,96,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important}.link-cyan{color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important}.link-cyan:focus,.link-cyan:hover{color:RGBA(18,130,147,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important}.link-facebook{color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important}.link-facebook:focus,.link-facebook:hover{color:RGBA(19,95,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important}.link-twitter{color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important}.link-twitter:focus,.link-twitter:hover{color:RGBA(23,129,194,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important}.link-linkedin{color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important}.link-linkedin:focus,.link-linkedin:hover{color:RGBA(8,82,155,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important}.link-google{color:RGBA(var(--tblr-google-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important}.link-google:focus,.link-google:hover{color:RGBA(176,62,52,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important}.link-youtube{color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important}.link-youtube:focus,.link-youtube:hover{color:RGBA(204,0,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important}.link-vimeo{color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vimeo:focus,.link-vimeo:hover{color:RGBA(21,146,187,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important}.link-dribbble{color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dribbble:focus,.link-dribbble:hover{color:RGBA(187,61,110,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important}.link-github{color:RGBA(var(--tblr-github-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important}.link-github:focus,.link-github:hover{color:RGBA(19,18,18,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important}.link-instagram{color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important}.link-instagram:focus,.link-instagram:hover{color:RGBA(182,51,76,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important}.link-pinterest{color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pinterest:focus,.link-pinterest:hover{color:RGBA(151,6,22,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important}.link-vk{color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vk:focus,.link-vk:hover{color:RGBA(79,105,134,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important}.link-rss{color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important}.link-rss:focus,.link-rss:hover{color:RGBA(204,132,0,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important}.link-flickr{color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important}.link-flickr:focus,.link-flickr:hover{color:RGBA(0,79,176,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important}.link-bitbucket{color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important}.link-bitbucket:focus,.link-bitbucket:hover{color:RGBA(0,66,163,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important}.link-tabler{color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important}.link-tabler:focus,.link-tabler:hover{color:RGBA(0,67,133,var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(0,67,133,var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x,0) var(--tblr-focus-ring-y,0) var(--tblr-focus-ring-blur,0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,.5));text-underline-offset:.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--tblr-icon-link-transform,translate3d(-.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;right:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio:100%}.ratio-2x1{--tblr-aspect-ratio:50%}.ratio-1x2{--tblr-aspect-ratio:200%}.ratio-3x1{--tblr-aspect-ratio:33.3333333333%}.ratio-1x3{--tblr-aspect-ratio:300%}.ratio-4x3{--tblr-aspect-ratio:75%}.ratio-3x4{--tblr-aspect-ratio:133.3333333333%}.ratio-16x9{--tblr-aspect-ratio:56.25%}.ratio-9x16{--tblr-aspect-ratio:177.7777777778%}.ratio-21x9{--tblr-aspect-ratio:42.8571428571%}.ratio-9x21{--tblr-aspect-ratio:233.3333333333%}.fixed-top{position:fixed;top:0;left:0;right:0;z-index:1030}.fixed-bottom{position:fixed;left:0;bottom:0;right:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:right!important}.float-end{float:left!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color:rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color:rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color:rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color:rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color:rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color:rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color:rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color:rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color:rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color:rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color:rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color:rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color:rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color:rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color:rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color:rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color:rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color:rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color:rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color:rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-facebook{--tblr-focus-ring-color:rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-twitter{--tblr-focus-ring-color:rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-linkedin{--tblr-focus-ring-color:rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-google{--tblr-focus-ring-color:rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-youtube{--tblr-focus-ring-color:rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vimeo{--tblr-focus-ring-color:rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dribbble{--tblr-focus-ring-color:rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-github{--tblr-focus-ring-color:rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-instagram{--tblr-focus-ring-color:rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pinterest{--tblr-focus-ring-color:rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vk{--tblr-focus-ring-color:rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-rss{--tblr-focus-ring-color:rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-flickr{--tblr-focus-ring-color:rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-bitbucket{--tblr-focus-ring-color:rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-tabler{--tblr-focus-ring-color:rgba(var(--tblr-tabler-rgb), var(--tblr-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{right:0!important}.start-50{right:50%!important}.start-100{right:100%!important}.end-0{left:0!important}.end-50{left:50%!important}.end-100{left:100%!important}.translate-middle{transform:translate(50%,-50%)!important}.translate-middle-x{transform:translateX(50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-wide{border:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-top-0{border-top:0!important}.border-end{border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-wide{border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-end-0{border-left:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-wide{border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-start-0{border-right:0!important}.border-primary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-primary-rgb),var(--tblr-border-opacity))!important}.border-secondary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-secondary-rgb),var(--tblr-border-opacity))!important}.border-success{--tblr-border-opacity:1;border-color:rgba(var(--tblr-success-rgb),var(--tblr-border-opacity))!important}.border-info{--tblr-border-opacity:1;border-color:rgba(var(--tblr-info-rgb),var(--tblr-border-opacity))!important}.border-warning{--tblr-border-opacity:1;border-color:rgba(var(--tblr-warning-rgb),var(--tblr-border-opacity))!important}.border-danger{--tblr-border-opacity:1;border-color:rgba(var(--tblr-danger-rgb),var(--tblr-border-opacity))!important}.border-light{--tblr-border-opacity:1;border-color:rgba(var(--tblr-light-rgb),var(--tblr-border-opacity))!important}.border-dark{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dark-rgb),var(--tblr-border-opacity))!important}.border-muted{--tblr-border-opacity:1;border-color:rgba(var(--tblr-muted-rgb),var(--tblr-border-opacity))!important}.border-blue{--tblr-border-opacity:1;border-color:rgba(var(--tblr-blue-rgb),var(--tblr-border-opacity))!important}.border-azure{--tblr-border-opacity:1;border-color:rgba(var(--tblr-azure-rgb),var(--tblr-border-opacity))!important}.border-indigo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-indigo-rgb),var(--tblr-border-opacity))!important}.border-purple{--tblr-border-opacity:1;border-color:rgba(var(--tblr-purple-rgb),var(--tblr-border-opacity))!important}.border-pink{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pink-rgb),var(--tblr-border-opacity))!important}.border-red{--tblr-border-opacity:1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-orange{--tblr-border-opacity:1;border-color:rgba(var(--tblr-orange-rgb),var(--tblr-border-opacity))!important}.border-yellow{--tblr-border-opacity:1;border-color:rgba(var(--tblr-yellow-rgb),var(--tblr-border-opacity))!important}.border-lime{--tblr-border-opacity:1;border-color:rgba(var(--tblr-lime-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity:1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-teal{--tblr-border-opacity:1;border-color:rgba(var(--tblr-teal-rgb),var(--tblr-border-opacity))!important}.border-cyan{--tblr-border-opacity:1;border-color:rgba(var(--tblr-cyan-rgb),var(--tblr-border-opacity))!important}.border-facebook{--tblr-border-opacity:1;border-color:rgba(var(--tblr-facebook-rgb),var(--tblr-border-opacity))!important}.border-twitter{--tblr-border-opacity:1;border-color:rgba(var(--tblr-twitter-rgb),var(--tblr-border-opacity))!important}.border-linkedin{--tblr-border-opacity:1;border-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-border-opacity))!important}.border-google{--tblr-border-opacity:1;border-color:rgba(var(--tblr-google-rgb),var(--tblr-border-opacity))!important}.border-youtube{--tblr-border-opacity:1;border-color:rgba(var(--tblr-youtube-rgb),var(--tblr-border-opacity))!important}.border-vimeo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-border-opacity))!important}.border-dribbble{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-border-opacity))!important}.border-github{--tblr-border-opacity:1;border-color:rgba(var(--tblr-github-rgb),var(--tblr-border-opacity))!important}.border-instagram{--tblr-border-opacity:1;border-color:rgba(var(--tblr-instagram-rgb),var(--tblr-border-opacity))!important}.border-pinterest{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-border-opacity))!important}.border-vk{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vk-rgb),var(--tblr-border-opacity))!important}.border-rss{--tblr-border-opacity:1;border-color:rgba(var(--tblr-rss-rgb),var(--tblr-border-opacity))!important}.border-flickr{--tblr-border-opacity:1;border-color:rgba(var(--tblr-flickr-rgb),var(--tblr-border-opacity))!important}.border-bitbucket{--tblr-border-opacity:1;border-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-border-opacity))!important}.border-tabler{--tblr-border-opacity:1;border-color:rgba(var(--tblr-tabler-rgb),var(--tblr-border-opacity))!important}.border-black{--tblr-border-opacity:1;border-color:rgba(var(--tblr-black-rgb),var(--tblr-border-opacity))!important}.border-white{--tblr-border-opacity:1;border-color:rgba(var(--tblr-white-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--tblr-border-opacity:0.1}.border-opacity-25{--tblr-border-opacity:0.25}.border-opacity-50{--tblr-border-opacity:0.5}.border-opacity-75{--tblr-border-opacity:0.75}.border-opacity-100{--tblr-border-opacity:1}.w-0{width:0!important}.w-1{width:.25rem!important}.w-2{width:.5rem!important}.w-3{width:1rem!important}.w-4{width:1.5rem!important}.w-5{width:2rem!important}.w-6{width:3rem!important}.w-7{width:5rem!important}.w-8{width:8rem!important}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-0{height:0!important}.h-1{height:.25rem!important}.h-2{height:.5rem!important}.h-3{height:1rem!important}.h-4{height:1.5rem!important}.h-5{height:2rem!important}.h-6{height:3rem!important}.h-7{height:5rem!important}.h-8{height:8rem!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:3rem!important}.m-7{margin:5rem!important}.m-8{margin:8rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:2rem!important;margin-right:2rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.mx-7{margin-left:5rem!important;margin-right:5rem!important}.mx-8{margin-left:8rem!important;margin-right:8rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:3rem!important}.mt-7{margin-top:5rem!important}.mt-8{margin-top:8rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:2rem!important}.me-6{margin-left:3rem!important}.me-7{margin-left:5rem!important}.me-8{margin-left:8rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:3rem!important}.mb-7{margin-bottom:5rem!important}.mb-8{margin-bottom:8rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:2rem!important}.ms-6{margin-right:3rem!important}.ms-7{margin-right:5rem!important}.ms-8{margin-right:8rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:3rem!important}.p-7{padding:5rem!important}.p-8{padding:8rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:2rem!important;padding-right:2rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.px-7{padding-left:5rem!important;padding-right:5rem!important}.px-8{padding-left:8rem!important;padding-right:8rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:3rem!important}.pt-7{padding-top:5rem!important}.pt-8{padding-top:8rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:2rem!important}.pe-6{padding-left:3rem!important}.pe-7{padding-left:5rem!important}.pe-8{padding-left:8rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:3rem!important}.pb-7{padding-bottom:5rem!important}.pb-8{padding-bottom:8rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:2rem!important}.ps-6{padding-right:3rem!important}.ps-7{padding-right:5rem!important}.ps-8{padding-right:8rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:3rem!important}.gap-7{gap:5rem!important}.gap-8{gap:8rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:3rem!important}.row-gap-7{row-gap:5rem!important}.row-gap-8{row-gap:8rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!important}.text-start{text-align:right!important}.text-end{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity:1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity:1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--tblr-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity:1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity:1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity:1;color:inherit!important}.text-opacity-25{--tblr-text-opacity:0.25}.text-opacity-50{--tblr-text-opacity:0.5}.text-opacity-75{--tblr-text-opacity:0.75}.text-opacity-100{--tblr-text-opacity:1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10{--tblr-link-opacity:0.1}.link-opacity-10-hover:hover{--tblr-link-opacity:0.1}.link-opacity-25{--tblr-link-opacity:0.25}.link-opacity-25-hover:hover{--tblr-link-opacity:0.25}.link-opacity-50{--tblr-link-opacity:0.5}.link-opacity-50-hover:hover{--tblr-link-opacity:0.5}.link-opacity-75{--tblr-link-opacity:0.75}.link-opacity-75-hover:hover{--tblr-link-opacity:0.75}.link-opacity-100{--tblr-link-opacity:1}.link-opacity-100-hover:hover{--tblr-link-opacity:1}.link-offset-1{text-underline-offset:.125em!important}.link-offset-1-hover:hover{text-underline-offset:.125em!important}.link-offset-2{text-underline-offset:.25em!important}.link-offset-2-hover:hover{text-underline-offset:.25em!important}.link-offset-3{text-underline-offset:.375em!important}.link-offset-3-hover:hover{text-underline-offset:.375em!important}.link-underline-primary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-facebook{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-twitter{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-linkedin{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-google{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-youtube{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vimeo{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dribbble{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-github{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-instagram{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pinterest{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vk{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-rss{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-flickr{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-bitbucket{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-tabler{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important;text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-underline-opacity-0{--tblr-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity:0}.link-underline-opacity-10{--tblr-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity:0.1}.link-underline-opacity-25{--tblr-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity:0.25}.link-underline-opacity-50{--tblr-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity:0.5}.link-underline-opacity-75{--tblr-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity:0.75}.link-underline-opacity-100{--tblr-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity:1}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity:0.1}.bg-opacity-25{--tblr-bg-opacity:0.25}.bg-opacity-50{--tblr-bg-opacity:0.5}.bg-opacity-75{--tblr-bg-opacity:0.75}.bg-opacity-100{--tblr-bg-opacity:1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-right-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-top-0{border-top-right-radius:0!important;border-top-left-radius:0!important}.rounded-top-1{border-top-right-radius:var(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-right-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-top-circle{border-top-right-radius:50%!important;border-top-left-radius:50%!important}.rounded-top-pill{border-top-right-radius:var(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-left-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-end-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.rounded-end-1{border-top-left-radius:var(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-left-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-end-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-end-pill{border-top-left-radius:var(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-left-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-bottom-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-bottom-1{border-bottom-left-radius:var(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-bottom-pill{border-bottom-left-radius:var(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-right-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-start-0{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.rounded-start-1{border-bottom-right-radius:var(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-start-circle{border-bottom-right-radius:50%!important;border-top-right-radius:50%!important}.rounded-start-pill{border-bottom-right-radius:var(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}.object-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-scale-down{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-none{-o-object-fit:none!important;object-fit:none!important}.tracking-tight{letter-spacing:-.05em!important}.tracking-normal{letter-spacing:0!important}.tracking-wide{letter-spacing:.05em!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:-webkit-grab!important;cursor:grab!important}.cursor-grabbing{cursor:-webkit-grabbing!important;cursor:grabbing!important}.border-x{border-right:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-left:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-wide{border-right:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-left:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-x-0{border-right:0!important;border-left:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-wide{border-top:2px var(--tblr-border-style) rgba(4,32,69,.14)!important;border-bottom:2px var(--tblr-border-style) rgba(4,32,69,.14)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{-moz-columns:2!important;columns:2!important}.columns-3{-moz-columns:3!important;columns:3!important}.columns-4{-moz-columns:4!important;columns:4!important}@media (min-width:576px){.float-sm-start{float:right!important}.float-sm-end{float:left!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:3rem!important}.m-sm-7{margin:5rem!important}.m-sm-8{margin:8rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:2rem!important;margin-right:2rem!important}.mx-sm-6{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-7{margin-left:5rem!important;margin-right:5rem!important}.mx-sm-8{margin-left:8rem!important;margin-right:8rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-sm-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:3rem!important}.mt-sm-7{margin-top:5rem!important}.mt-sm-8{margin-top:8rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:2rem!important}.me-sm-6{margin-left:3rem!important}.me-sm-7{margin-left:5rem!important}.me-sm-8{margin-left:8rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:3rem!important}.mb-sm-7{margin-bottom:5rem!important}.mb-sm-8{margin-bottom:8rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:2rem!important}.ms-sm-6{margin-right:3rem!important}.ms-sm-7{margin-right:5rem!important}.ms-sm-8{margin-right:8rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:3rem!important}.p-sm-7{padding:5rem!important}.p-sm-8{padding:8rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:2rem!important;padding-right:2rem!important}.px-sm-6{padding-left:3rem!important;padding-right:3rem!important}.px-sm-7{padding-left:5rem!important;padding-right:5rem!important}.px-sm-8{padding-left:8rem!important;padding-right:8rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-sm-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-sm-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:3rem!important}.pt-sm-7{padding-top:5rem!important}.pt-sm-8{padding-top:8rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:2rem!important}.pe-sm-6{padding-left:3rem!important}.pe-sm-7{padding-left:5rem!important}.pe-sm-8{padding-left:8rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:3rem!important}.pb-sm-7{padding-bottom:5rem!important}.pb-sm-8{padding-bottom:8rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:2rem!important}.ps-sm-6{padding-right:3rem!important}.ps-sm-7{padding-right:5rem!important}.ps-sm-8{padding-right:8rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:3rem!important}.gap-sm-7{gap:5rem!important}.gap-sm-8{gap:8rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:3rem!important}.row-gap-sm-7{row-gap:5rem!important}.row-gap-sm-8{row-gap:8rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-sm-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-sm-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-sm-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-sm-start{text-align:right!important}.text-sm-end{text-align:left!important}.text-sm-center{text-align:center!important}.columns-sm-2{-moz-columns:2!important;columns:2!important}.columns-sm-3{-moz-columns:3!important;columns:3!important}.columns-sm-4{-moz-columns:4!important;columns:4!important}}@media (min-width:768px){.float-md-start{float:right!important}.float-md-end{float:left!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:3rem!important}.m-md-7{margin:5rem!important}.m-md-8{margin:8rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:2rem!important;margin-right:2rem!important}.mx-md-6{margin-left:3rem!important;margin-right:3rem!important}.mx-md-7{margin-left:5rem!important;margin-right:5rem!important}.mx-md-8{margin-left:8rem!important;margin-right:8rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-md-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:3rem!important}.mt-md-7{margin-top:5rem!important}.mt-md-8{margin-top:8rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:2rem!important}.me-md-6{margin-left:3rem!important}.me-md-7{margin-left:5rem!important}.me-md-8{margin-left:8rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:3rem!important}.mb-md-7{margin-bottom:5rem!important}.mb-md-8{margin-bottom:8rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:2rem!important}.ms-md-6{margin-right:3rem!important}.ms-md-7{margin-right:5rem!important}.ms-md-8{margin-right:8rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:3rem!important}.p-md-7{padding:5rem!important}.p-md-8{padding:8rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:2rem!important;padding-right:2rem!important}.px-md-6{padding-left:3rem!important;padding-right:3rem!important}.px-md-7{padding-left:5rem!important;padding-right:5rem!important}.px-md-8{padding-left:8rem!important;padding-right:8rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-md-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-md-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:3rem!important}.pt-md-7{padding-top:5rem!important}.pt-md-8{padding-top:8rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:2rem!important}.pe-md-6{padding-left:3rem!important}.pe-md-7{padding-left:5rem!important}.pe-md-8{padding-left:8rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:3rem!important}.pb-md-7{padding-bottom:5rem!important}.pb-md-8{padding-bottom:8rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:2rem!important}.ps-md-6{padding-right:3rem!important}.ps-md-7{padding-right:5rem!important}.ps-md-8{padding-right:8rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:3rem!important}.gap-md-7{gap:5rem!important}.gap-md-8{gap:8rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:3rem!important}.row-gap-md-7{row-gap:5rem!important}.row-gap-md-8{row-gap:8rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-md-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-md-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-md-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-md-start{text-align:right!important}.text-md-end{text-align:left!important}.text-md-center{text-align:center!important}.columns-md-2{-moz-columns:2!important;columns:2!important}.columns-md-3{-moz-columns:3!important;columns:3!important}.columns-md-4{-moz-columns:4!important;columns:4!important}}@media (min-width:992px){.float-lg-start{float:right!important}.float-lg-end{float:left!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:3rem!important}.m-lg-7{margin:5rem!important}.m-lg-8{margin:8rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:2rem!important;margin-right:2rem!important}.mx-lg-6{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-7{margin-left:5rem!important;margin-right:5rem!important}.mx-lg-8{margin-left:8rem!important;margin-right:8rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-lg-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:3rem!important}.mt-lg-7{margin-top:5rem!important}.mt-lg-8{margin-top:8rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:2rem!important}.me-lg-6{margin-left:3rem!important}.me-lg-7{margin-left:5rem!important}.me-lg-8{margin-left:8rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:3rem!important}.mb-lg-7{margin-bottom:5rem!important}.mb-lg-8{margin-bottom:8rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:2rem!important}.ms-lg-6{margin-right:3rem!important}.ms-lg-7{margin-right:5rem!important}.ms-lg-8{margin-right:8rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:3rem!important}.p-lg-7{padding:5rem!important}.p-lg-8{padding:8rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:2rem!important;padding-right:2rem!important}.px-lg-6{padding-left:3rem!important;padding-right:3rem!important}.px-lg-7{padding-left:5rem!important;padding-right:5rem!important}.px-lg-8{padding-left:8rem!important;padding-right:8rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-lg-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-lg-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:3rem!important}.pt-lg-7{padding-top:5rem!important}.pt-lg-8{padding-top:8rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:2rem!important}.pe-lg-6{padding-left:3rem!important}.pe-lg-7{padding-left:5rem!important}.pe-lg-8{padding-left:8rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:3rem!important}.pb-lg-7{padding-bottom:5rem!important}.pb-lg-8{padding-bottom:8rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:2rem!important}.ps-lg-6{padding-right:3rem!important}.ps-lg-7{padding-right:5rem!important}.ps-lg-8{padding-right:8rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:3rem!important}.gap-lg-7{gap:5rem!important}.gap-lg-8{gap:8rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:3rem!important}.row-gap-lg-7{row-gap:5rem!important}.row-gap-lg-8{row-gap:8rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-lg-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-lg-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-lg-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-lg-start{text-align:right!important}.text-lg-end{text-align:left!important}.text-lg-center{text-align:center!important}.columns-lg-2{-moz-columns:2!important;columns:2!important}.columns-lg-3{-moz-columns:3!important;columns:3!important}.columns-lg-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1200px){.float-xl-start{float:right!important}.float-xl-end{float:left!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:3rem!important}.m-xl-7{margin:5rem!important}.m-xl-8{margin:8rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:2rem!important;margin-right:2rem!important}.mx-xl-6{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-7{margin-left:5rem!important;margin-right:5rem!important}.mx-xl-8{margin-left:8rem!important;margin-right:8rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:3rem!important}.mt-xl-7{margin-top:5rem!important}.mt-xl-8{margin-top:8rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:2rem!important}.me-xl-6{margin-left:3rem!important}.me-xl-7{margin-left:5rem!important}.me-xl-8{margin-left:8rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:3rem!important}.mb-xl-7{margin-bottom:5rem!important}.mb-xl-8{margin-bottom:8rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:2rem!important}.ms-xl-6{margin-right:3rem!important}.ms-xl-7{margin-right:5rem!important}.ms-xl-8{margin-right:8rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:3rem!important}.p-xl-7{padding:5rem!important}.p-xl-8{padding:8rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:2rem!important;padding-right:2rem!important}.px-xl-6{padding-left:3rem!important;padding-right:3rem!important}.px-xl-7{padding-left:5rem!important;padding-right:5rem!important}.px-xl-8{padding-left:8rem!important;padding-right:8rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:3rem!important}.pt-xl-7{padding-top:5rem!important}.pt-xl-8{padding-top:8rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:2rem!important}.pe-xl-6{padding-left:3rem!important}.pe-xl-7{padding-left:5rem!important}.pe-xl-8{padding-left:8rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:3rem!important}.pb-xl-7{padding-bottom:5rem!important}.pb-xl-8{padding-bottom:8rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:2rem!important}.ps-xl-6{padding-right:3rem!important}.ps-xl-7{padding-right:5rem!important}.ps-xl-8{padding-right:8rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:3rem!important}.gap-xl-7{gap:5rem!important}.gap-xl-8{gap:8rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:3rem!important}.row-gap-xl-7{row-gap:5rem!important}.row-gap-xl-8{row-gap:8rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xl-start{text-align:right!important}.text-xl-end{text-align:left!important}.text-xl-center{text-align:center!important}.columns-xl-2{-moz-columns:2!important;columns:2!important}.columns-xl-3{-moz-columns:3!important;columns:3!important}.columns-xl-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1400px){.float-xxl-start{float:right!important}.float-xxl-end{float:left!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:3rem!important}.m-xxl-7{margin:5rem!important}.m-xxl-8{margin:8rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:2rem!important;margin-right:2rem!important}.mx-xxl-6{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-7{margin-left:5rem!important;margin-right:5rem!important}.mx-xxl-8{margin-left:8rem!important;margin-right:8rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-7{margin-top:5rem!important;margin-bottom:5rem!important}.my-xxl-8{margin-top:8rem!important;margin-bottom:8rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:3rem!important}.mt-xxl-7{margin-top:5rem!important}.mt-xxl-8{margin-top:8rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:2rem!important}.me-xxl-6{margin-left:3rem!important}.me-xxl-7{margin-left:5rem!important}.me-xxl-8{margin-left:8rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:3rem!important}.mb-xxl-7{margin-bottom:5rem!important}.mb-xxl-8{margin-bottom:8rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:2rem!important}.ms-xxl-6{margin-right:3rem!important}.ms-xxl-7{margin-right:5rem!important}.ms-xxl-8{margin-right:8rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:3rem!important}.p-xxl-7{padding:5rem!important}.p-xxl-8{padding:8rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:2rem!important;padding-right:2rem!important}.px-xxl-6{padding-left:3rem!important;padding-right:3rem!important}.px-xxl-7{padding-left:5rem!important;padding-right:5rem!important}.px-xxl-8{padding-left:8rem!important;padding-right:8rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:3rem!important;padding-bottom:3rem!important}.py-xxl-7{padding-top:5rem!important;padding-bottom:5rem!important}.py-xxl-8{padding-top:8rem!important;padding-bottom:8rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:3rem!important}.pt-xxl-7{padding-top:5rem!important}.pt-xxl-8{padding-top:8rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:2rem!important}.pe-xxl-6{padding-left:3rem!important}.pe-xxl-7{padding-left:5rem!important}.pe-xxl-8{padding-left:8rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:3rem!important}.pb-xxl-7{padding-bottom:5rem!important}.pb-xxl-8{padding-bottom:8rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:2rem!important}.ps-xxl-6{padding-right:3rem!important}.ps-xxl-7{padding-right:5rem!important}.ps-xxl-8{padding-right:8rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:3rem!important}.gap-xxl-7{gap:5rem!important}.gap-xxl-8{gap:8rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:3rem!important}.row-gap-xxl-7{row-gap:5rem!important}.row-gap-xxl-8{row-gap:8rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xxl-6{-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xxl-7{-moz-column-gap:5rem!important;column-gap:5rem!important}.column-gap-xxl-8{-moz-column-gap:8rem!important;column-gap:8rem!important}.text-xxl-start{text-align:right!important}.text-xxl-end{text-align:left!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{-moz-columns:2!important;columns:2!important}.columns-xxl-3{-moz-columns:3!important;columns:3!important}.columns-xxl-4{-moz-columns:4!important;columns:4!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:host,:root{font-size:16px;height:100%}:host,:root,[data-bs-theme=light]{--tblr-primary:#0054a6;--tblr-primary-rgb:0,84,166;--tblr-primary-fg:var(--tblr-light);--tblr-primary-darken:#004c95;--tblr-primary-lt:#e6eef6;--tblr-primary-lt-rgb:230,238,246;--tblr-secondary:#667382;--tblr-secondary-rgb:102,115,130;--tblr-secondary-fg:var(--tblr-light);--tblr-secondary-darken:#5c6875;--tblr-secondary-lt:#f0f1f3;--tblr-secondary-lt-rgb:240,241,243;--tblr-success:#2fb344;--tblr-success-rgb:47,179,68;--tblr-success-fg:var(--tblr-light);--tblr-success-darken:#2aa13d;--tblr-success-lt:#eaf7ec;--tblr-success-lt-rgb:234,247,236;--tblr-info:#4299e1;--tblr-info-rgb:66,153,225;--tblr-info-fg:var(--tblr-light);--tblr-info-darken:#3b8acb;--tblr-info-lt:#ecf5fc;--tblr-info-lt-rgb:236,245,252;--tblr-warning:#f76707;--tblr-warning-rgb:247,103,7;--tblr-warning-fg:var(--tblr-light);--tblr-warning-darken:#de5d06;--tblr-warning-lt:#fef0e6;--tblr-warning-lt-rgb:254,240,230;--tblr-danger:#d63939;--tblr-danger-rgb:214,57,57;--tblr-danger-fg:var(--tblr-light);--tblr-danger-darken:#c13333;--tblr-danger-lt:#fbebeb;--tblr-danger-lt-rgb:251,235,235;--tblr-light:#fcfdfe;--tblr-light-rgb:252,253,254;--tblr-light-fg:var(--tblr-dark);--tblr-light-darken:#e3e4e5;--tblr-light-lt:white;--tblr-light-lt-rgb:255,255,255;--tblr-dark:#182433;--tblr-dark-rgb:24,36,51;--tblr-dark-fg:var(--tblr-light);--tblr-dark-darken:#16202e;--tblr-dark-lt:#e8e9eb;--tblr-dark-lt-rgb:232,233,235;--tblr-muted:#667382;--tblr-muted-rgb:102,115,130;--tblr-muted-fg:var(--tblr-light);--tblr-muted-darken:#5c6875;--tblr-muted-lt:#f0f1f3;--tblr-muted-lt-rgb:240,241,243;--tblr-blue:#0054a6;--tblr-blue-rgb:0,84,166;--tblr-blue-fg:var(--tblr-light);--tblr-blue-darken:#004c95;--tblr-blue-lt:#e6eef6;--tblr-blue-lt-rgb:230,238,246;--tblr-azure:#4299e1;--tblr-azure-rgb:66,153,225;--tblr-azure-fg:var(--tblr-light);--tblr-azure-darken:#3b8acb;--tblr-azure-lt:#ecf5fc;--tblr-azure-lt-rgb:236,245,252;--tblr-indigo:#4263eb;--tblr-indigo-rgb:66,99,235;--tblr-indigo-fg:var(--tblr-light);--tblr-indigo-darken:#3b59d4;--tblr-indigo-lt:#eceffd;--tblr-indigo-lt-rgb:236,239,253;--tblr-purple:#ae3ec9;--tblr-purple-rgb:174,62,201;--tblr-purple-fg:var(--tblr-light);--tblr-purple-darken:#9d38b5;--tblr-purple-lt:#f7ecfa;--tblr-purple-lt-rgb:247,236,250;--tblr-pink:#d6336c;--tblr-pink-rgb:214,51,108;--tblr-pink-fg:var(--tblr-light);--tblr-pink-darken:#c12e61;--tblr-pink-lt:#fbebf0;--tblr-pink-lt-rgb:251,235,240;--tblr-red:#d63939;--tblr-red-rgb:214,57,57;--tblr-red-fg:var(--tblr-light);--tblr-red-darken:#c13333;--tblr-red-lt:#fbebeb;--tblr-red-lt-rgb:251,235,235;--tblr-orange:#f76707;--tblr-orange-rgb:247,103,7;--tblr-orange-fg:var(--tblr-light);--tblr-orange-darken:#de5d06;--tblr-orange-lt:#fef0e6;--tblr-orange-lt-rgb:254,240,230;--tblr-yellow:#f59f00;--tblr-yellow-rgb:245,159,0;--tblr-yellow-fg:var(--tblr-light);--tblr-yellow-darken:#dd8f00;--tblr-yellow-lt:#fef5e6;--tblr-yellow-lt-rgb:254,245,230;--tblr-lime:#74b816;--tblr-lime-rgb:116,184,22;--tblr-lime-fg:var(--tblr-light);--tblr-lime-darken:#68a614;--tblr-lime-lt:#f1f8e8;--tblr-lime-lt-rgb:241,248,232;--tblr-green:#2fb344;--tblr-green-rgb:47,179,68;--tblr-green-fg:var(--tblr-light);--tblr-green-darken:#2aa13d;--tblr-green-lt:#eaf7ec;--tblr-green-lt-rgb:234,247,236;--tblr-teal:#0ca678;--tblr-teal-rgb:12,166,120;--tblr-teal-fg:var(--tblr-light);--tblr-teal-darken:#0b956c;--tblr-teal-lt:#e7f6f2;--tblr-teal-lt-rgb:231,246,242;--tblr-cyan:#17a2b8;--tblr-cyan-rgb:23,162,184;--tblr-cyan-fg:var(--tblr-light);--tblr-cyan-darken:#1592a6;--tblr-cyan-lt:#e8f6f8;--tblr-cyan-lt-rgb:232,246,248;--tblr-facebook:#1877f2;--tblr-facebook-rgb:24,119,242;--tblr-facebook-fg:var(--tblr-light);--tblr-facebook-darken:#166bda;--tblr-facebook-lt:#e8f1fe;--tblr-facebook-lt-rgb:232,241,254;--tblr-twitter:#1da1f2;--tblr-twitter-rgb:29,161,242;--tblr-twitter-fg:var(--tblr-light);--tblr-twitter-darken:#1a91da;--tblr-twitter-lt:#e8f6fe;--tblr-twitter-lt-rgb:232,246,254;--tblr-linkedin:#0a66c2;--tblr-linkedin-rgb:10,102,194;--tblr-linkedin-fg:var(--tblr-light);--tblr-linkedin-darken:#095caf;--tblr-linkedin-lt:#e7f0f9;--tblr-linkedin-lt-rgb:231,240,249;--tblr-google:#dc4e41;--tblr-google-rgb:220,78,65;--tblr-google-fg:var(--tblr-light);--tblr-google-darken:#c6463b;--tblr-google-lt:#fcedec;--tblr-google-lt-rgb:252,237,236;--tblr-youtube:#ff0000;--tblr-youtube-rgb:255,0,0;--tblr-youtube-fg:var(--tblr-light);--tblr-youtube-darken:#e60000;--tblr-youtube-lt:#ffe6e6;--tblr-youtube-lt-rgb:255,230,230;--tblr-vimeo:#1ab7ea;--tblr-vimeo-rgb:26,183,234;--tblr-vimeo-fg:var(--tblr-light);--tblr-vimeo-darken:#17a5d3;--tblr-vimeo-lt:#e8f8fd;--tblr-vimeo-lt-rgb:232,248,253;--tblr-dribbble:#ea4c89;--tblr-dribbble-rgb:234,76,137;--tblr-dribbble-fg:var(--tblr-light);--tblr-dribbble-darken:#d3447b;--tblr-dribbble-lt:#fdedf3;--tblr-dribbble-lt-rgb:253,237,243;--tblr-github:#181717;--tblr-github-rgb:24,23,23;--tblr-github-fg:var(--tblr-light);--tblr-github-darken:#161515;--tblr-github-lt:#e8e8e8;--tblr-github-lt-rgb:232,232,232;--tblr-instagram:#e4405f;--tblr-instagram-rgb:228,64,95;--tblr-instagram-fg:var(--tblr-light);--tblr-instagram-darken:#cd3a56;--tblr-instagram-lt:#fcecef;--tblr-instagram-lt-rgb:252,236,239;--tblr-pinterest:#bd081c;--tblr-pinterest-rgb:189,8,28;--tblr-pinterest-fg:var(--tblr-light);--tblr-pinterest-darken:#aa0719;--tblr-pinterest-lt:#f8e6e8;--tblr-pinterest-lt-rgb:248,230,232;--tblr-vk:#6383a8;--tblr-vk-rgb:99,131,168;--tblr-vk-fg:var(--tblr-light);--tblr-vk-darken:#597697;--tblr-vk-lt:#eff3f6;--tblr-vk-lt-rgb:239,243,246;--tblr-rss:#ffa500;--tblr-rss-rgb:255,165,0;--tblr-rss-fg:var(--tblr-light);--tblr-rss-darken:#e69500;--tblr-rss-lt:#fff6e6;--tblr-rss-lt-rgb:255,246,230;--tblr-flickr:#0063dc;--tblr-flickr-rgb:0,99,220;--tblr-flickr-fg:var(--tblr-light);--tblr-flickr-darken:#0059c6;--tblr-flickr-lt:#e6effc;--tblr-flickr-lt-rgb:230,239,252;--tblr-bitbucket:#0052cc;--tblr-bitbucket-rgb:0,82,204;--tblr-bitbucket-fg:var(--tblr-light);--tblr-bitbucket-darken:#004ab8;--tblr-bitbucket-lt:#e6eefa;--tblr-bitbucket-lt-rgb:230,238,250;--tblr-tabler:#0054a6;--tblr-tabler-rgb:0,84,166;--tblr-tabler-fg:var(--tblr-light);--tblr-tabler-darken:#004c95;--tblr-tabler-lt:#e6eef6;--tblr-tabler-lt-rgb:230,238,246;--tblr-gray-50:#fcfdfe;--tblr-gray-50-rgb:252,253,254;--tblr-gray-50-fg:var(--tblr-dark);--tblr-gray-50-darken:#e3e4e5;--tblr-gray-50-lt:white;--tblr-gray-50-lt-rgb:255,255,255;--tblr-gray-100:#f6f8fb;--tblr-gray-100-rgb:246,248,251;--tblr-gray-100-fg:var(--tblr-dark);--tblr-gray-100-darken:#dddfe2;--tblr-gray-100-lt:#fefeff;--tblr-gray-100-lt-rgb:254,254,255;--tblr-gray-200:#eef1f4;--tblr-gray-200-rgb:238,241,244;--tblr-gray-200-fg:var(--tblr-dark);--tblr-gray-200-darken:#d6d9dc;--tblr-gray-200-lt:#fdfefe;--tblr-gray-200-lt-rgb:253,254,254;--tblr-gray-300:#dadfe5;--tblr-gray-300-rgb:218,223,229;--tblr-gray-300-fg:var(--tblr-dark);--tblr-gray-300-darken:#c4c9ce;--tblr-gray-300-lt:#fbfcfc;--tblr-gray-300-lt-rgb:251,252,252;--tblr-gray-400:#bbc3cd;--tblr-gray-400-rgb:187,195,205;--tblr-gray-400-fg:var(--tblr-light);--tblr-gray-400-darken:#a8b0b9;--tblr-gray-400-lt:#f8f9fa;--tblr-gray-400-lt-rgb:248,249,250;--tblr-gray-500:#929dab;--tblr-gray-500-rgb:146,157,171;--tblr-gray-500-fg:var(--tblr-light);--tblr-gray-500-darken:#838d9a;--tblr-gray-500-lt:#f4f5f7;--tblr-gray-500-lt-rgb:244,245,247;--tblr-gray-600:#667382;--tblr-gray-600-rgb:102,115,130;--tblr-gray-600-fg:var(--tblr-light);--tblr-gray-600-darken:#5c6875;--tblr-gray-600-lt:#f0f1f3;--tblr-gray-600-lt-rgb:240,241,243;--tblr-gray-700:#3a4859;--tblr-gray-700-rgb:58,72,89;--tblr-gray-700-fg:var(--tblr-light);--tblr-gray-700-darken:#344150;--tblr-gray-700-lt:#ebedee;--tblr-gray-700-lt-rgb:235,237,238;--tblr-gray-800:#182433;--tblr-gray-800-rgb:24,36,51;--tblr-gray-800-fg:var(--tblr-light);--tblr-gray-800-darken:#16202e;--tblr-gray-800-lt:#e8e9eb;--tblr-gray-800-lt-rgb:232,233,235;--tblr-gray-900:#040a11;--tblr-gray-900-rgb:4,10,17;--tblr-gray-900-fg:var(--tblr-light);--tblr-gray-900-darken:#04090f;--tblr-gray-900-lt:#e6e7e7;--tblr-gray-900-lt-rgb:230,231,231;--tblr-spacer-0:0;--tblr-spacer-1:0.25rem;--tblr-spacer-2:0.5rem;--tblr-spacer-3:1rem;--tblr-spacer-4:1.5rem;--tblr-spacer-5:2rem;--tblr-spacer-6:3rem;--tblr-spacer-7:5rem;--tblr-spacer-8:8rem;--tblr-spacer:1rem;--tblr-bg-surface:var(--tblr-white);--tblr-bg-surface-secondary:var(--tblr-gray-100);--tblr-bg-surface-tertiary:var(--tblr-gray-50);--tblr-bg-surface-dark:var(--tblr-dark);--tblr-bg-forms:var(--tblr-bg-surface);--tblr-border-color:#dadfe5;--tblr-border-color-translucent:rgba(4, 32, 69, 0.14);--tblr-border-dark-color:#bbc3cd;--tblr-border-dark-color-translucent:rgba(4, 32, 69, 0.27);--tblr-border-active-color:#b6bcc3;--tblr-icon-color:var(--tblr-gray-500);--tblr-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-disabled-bg:var(--tblr-bg-surface-secondary);--tblr-disabled-color:var(--tblr-gray-300);--tblr-code-color:var(--tblr-gray-600);--tblr-code-bg:var(--tblr-bg-surface-secondary);--tblr-dark-mode-border-color:#1f2e41;--tblr-dark-mode-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-dark-mode-border-color-active:#2c415d;--tblr-dark-mode-border-dark-color:#1f2e41;--tblr-page-padding:var(--tblr-spacer-3);--tblr-page-padding-y:var(--tblr-spacer-4);--tblr-font-weight-light:300;--tblr-font-weight-normal:400;--tblr-font-weight-medium:500;--tblr-font-weight-bold:600;--tblr-font-weight-headings:var(--tblr-font-weight-bold);--tblr-font-size-h1:1.5rem;--tblr-font-size-h2:1.25rem;--tblr-font-size-h3:1rem;--tblr-font-size-h4:0.875rem;--tblr-font-size-h5:0.75rem;--tblr-font-size-h6:0.625rem;--tblr-line-height-h1:2rem;--tblr-line-height-h2:1.75rem;--tblr-line-height-h3:1.5rem;--tblr-line-height-h4:1.25rem;--tblr-line-height-h5:1rem;--tblr-line-height-h6:1rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-border:inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-box-shadow-transparent:0 0 0 0 transparent;--tblr-box-shadow-input:0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06);--tblr-box-shadow-card:0 0 4px rgba(var(--tblr-body-color-rgb), 0.04);--tblr-box-shadow-card-hover:rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0;--tblr-box-shadow-dropdown:0 16px 24px 2px rgba(0, 0, 0, 0.07),0 6px 30px 5px rgba(0, 0, 0, 0.06),0 8px 10px -5px rgba(0, 0, 0, 0.1)}@media (max-width:991.98px){:host,:root,[data-bs-theme=light]{--tblr-page-padding:var(--tblr-spacer-2)}}@keyframes pulse{from{opacity:1;transform:scale3d(.8,.8,.8)}50%{transform:scale3d(1,1,1);opacity:1}to{opacity:1;transform:scale3d(.8,.8,.8)}}@keyframes tada{0%{transform:scale3d(1,1,1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}50%{transform:scale3d(1,1,1)}}@keyframes rotate-360{from{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes blink{from{opacity:0}50%{opacity:1}to{opacity:0}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0;position:relative;min-height:100%;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:0 0}}*{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){::-webkit-scrollbar{-webkit-transition:none;transition:none}}::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}::-webkit-scrollbar-track{background:0 0}:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}::-webkit-scrollbar-corner{background:0 0}.layout-fluid .container,.layout-fluid [class*=" container-"],.layout-fluid [class^=container-]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius:0;--tblr-theme-boxed-width:1320px}@media (min-width:768px){.layout-boxed{background:#182433 linear-gradient(to left,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius:4px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media (min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-right-radius:var(--tblr-theme-boxed-border-radius);border-top-left-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg:var(--tblr-bg-surface);--tblr-navbar-border-width:var(--tblr-border-width);--tblr-navbar-active-border-color:var(--tblr-primary);--tblr-navbar-active-bg:rgba(0, 0, 0, 0.06);--tblr-navbar-color:var(--tblr-body-color);--tblr-navbar-border-color:var(--tblr-border-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2rem;min-height:2rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;left:.375rem;transform:translate(-50%,-50%)}.navbar-nav{margin:0;padding:0}@media (max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}@media (max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active:after{content:"";position:absolute;right:0;left:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1*(-1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right{box-shadow:inset calc(-1*(1 * var(--tblr-navbar-border-width))) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-right:15rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper{margin-right:0;margin-left:15rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s;position:relative}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon:after,.navbar-toggler-icon:before{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;right:0;transition:inherit}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon:after,.navbar-toggler-icon:before{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(-45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media (prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color:transparent!important;background:0 0!important}.navbar-nav{align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media (min-width:576px){.navbar-vertical.navbar-expand-sm{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:576px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media (min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-right:15rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-vertical.navbar-expand-md{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media (min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-right:15rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:992px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-right:15rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1200px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-right:15rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1400px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-right:15rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:15rem;position:fixed;top:0;right:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}@media (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand.navbar-right{right:auto;left:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-right:15rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-right:1.5rem;padding-left:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page{padding-right:0;padding-left:15rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-right:0;margin-left:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-right:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-right:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-right-width:3px;left:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;right:0;left:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center .container{margin-top:auto;margin-bottom:auto}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y)}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media (min-width:768px){.page-cover{min-height:12rem}}@media (min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;top:0;right:0;left:0;bottom:0;background-image:linear-gradient(-180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h4);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-left:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur:20px;--tblr-page-cover-padding:1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur,0));right:calc(-2 * var(--tblr-page-cover-blur,0));left:calc(-2 * var(--tblr-page-cover-blur,0));bottom:calc(-2 * var(--tblr-page-cover-blur,0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:#fff;padding:2rem 0;color:var(--tblr-secondary);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}body.theme-dark .hide-theme-dark,body[data-bs-theme=dark] .hide-theme-dark{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-body-color:#fcfdfe;--tblr-body-color-rgb:252,253,254;--tblr-muted:#3a4859;--tblr-body-bg:#151f2c;--tblr-body-bg-rgb:21,31,44;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-bg-forms:#151f2c;--tblr-bg-surface:#182433;--tblr-bg-surface-dark:#151f2c;--tblr-bg-surface-secondary:#1b293a;--tblr-bg-surface-tertiary:#151f2c;--tblr-link-color:#0069cf;--tblr-link-hover-color:#0054a6;--tblr-active-bg:#1b293a;--tblr-disabled-color:var(--tblr-gray-700);--tblr-border-color:var(--tblr-dark-mode-border-color);--tblr-border-color-translucent:var( + --tblr-dark-mode-border-color-translucent + );--tblr-border-dark-color:var(--tblr-dark-mode-border-dark-color);--tblr-border-color-active:var( + --tblr-dark-mode-border-color-active + );--tblr-btn-color:#151f2c;--tblr-code-color:var(--tblr-body-color);--tblr-code-bg:#1f2e41;--tblr-primary-lt:#16293f;--tblr-primary-lt-rgb:22,41,63;--tblr-secondary-lt:#202c3b;--tblr-secondary-lt-rgb:32,44,59;--tblr-success-lt:#1a3235;--tblr-success-lt-rgb:26,50,53;--tblr-info-lt:#1c3044;--tblr-info-lt-rgb:28,48,68;--tblr-warning-lt:#2e2b2f;--tblr-warning-lt-rgb:46,43,47;--tblr-danger-lt:#2b2634;--tblr-danger-lt-rgb:43,38,52;--tblr-light-lt:#2f3a47;--tblr-light-lt-rgb:47,58,71;--tblr-dark-lt:#182433;--tblr-dark-lt-rgb:24,36,51;--tblr-muted-lt:#202c3b;--tblr-muted-lt-rgb:32,44,59;--tblr-blue-lt:#16293f;--tblr-blue-lt-rgb:22,41,63;--tblr-azure-lt:#1c3044;--tblr-azure-lt-rgb:28,48,68;--tblr-indigo-lt:#1c2a45;--tblr-indigo-lt-rgb:28,42,69;--tblr-purple-lt:#272742;--tblr-purple-lt-rgb:39,39,66;--tblr-pink-lt:#2b2639;--tblr-pink-lt-rgb:43,38,57;--tblr-red-lt:#2b2634;--tblr-red-lt-rgb:43,38,52;--tblr-orange-lt:#2e2b2f;--tblr-orange-lt-rgb:46,43,47;--tblr-yellow-lt:#2e302e;--tblr-yellow-lt-rgb:46,48,46;--tblr-lime-lt:#213330;--tblr-lime-lt-rgb:33,51,48;--tblr-green-lt:#1a3235;--tblr-green-lt-rgb:26,50,53;--tblr-teal-lt:#17313a;--tblr-teal-lt-rgb:23,49,58;--tblr-cyan-lt:#183140;--tblr-cyan-lt-rgb:24,49,64;--tblr-facebook-lt:#182c46;--tblr-facebook-lt-rgb:24,44,70;--tblr-twitter-lt:#193146;--tblr-twitter-lt-rgb:25,49,70;--tblr-linkedin-lt:#172b41;--tblr-linkedin-lt-rgb:23,43,65;--tblr-google-lt:#2c2834;--tblr-google-lt-rgb:44,40,52;--tblr-youtube-lt:#2f202e;--tblr-youtube-lt-rgb:47,32,46;--tblr-vimeo-lt:#183345;--tblr-vimeo-lt-rgb:24,51,69;--tblr-dribbble-lt:#2d283c;--tblr-dribbble-lt-rgb:45,40,60;--tblr-github-lt:#182330;--tblr-github-lt-rgb:24,35,48;--tblr-instagram-lt:#2c2737;--tblr-instagram-lt-rgb:44,39,55;--tblr-pinterest-lt:#292131;--tblr-pinterest-lt-rgb:41,33,49;--tblr-vk-lt:#202e3f;--tblr-vk-lt-rgb:32,46,63;--tblr-rss-lt:#2f312e;--tblr-rss-lt-rgb:47,49,46;--tblr-flickr-lt:#162a44;--tblr-flickr-lt-rgb:22,42,68;--tblr-bitbucket-lt:#162942;--tblr-bitbucket-lt-rgb:22,41,66;--tblr-tabler-lt:#16293f;--tblr-tabler-lt-rgb:22,41,63}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color:var(--tblr-body-color)}.accordion-button:focus:not(:focus-visible){outline:0;box-shadow:none}.accordion-button:after{opacity:.7}.accordion-button:not(.collapsed){font-weight:var(--tblr-font-weight-bold);border-bottom-color:transparent;box-shadow:none}.accordion-button:not(.collapsed):after{opacity:1}.alert{--tblr-alert-color:var(--tblr-secondary);--tblr-alert-bg:var(--tblr-surface);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-right:.25rem var(--tblr-border-style) var(--tblr-alert-color);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.alert>:last-child{margin-bottom:0}.alert-important{border-color:transparent;background:var(--tblr-alert-color);color:#fff}.alert-important .alert-icon,.alert-important .alert-link,.alert-important .alert-title{color:inherit}.alert-important .alert-link:hover{color:inherit}.alert-important .btn-close{filter:var(--tblr-btn-close-white-filter)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-primary{--tblr-alert-color:var(--tblr-primary)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary)}.alert-success{--tblr-alert-color:var(--tblr-success)}.alert-info{--tblr-alert-color:var(--tblr-info)}.alert-warning{--tblr-alert-color:var(--tblr-warning)}.alert-danger{--tblr-alert-color:var(--tblr-danger)}.alert-light{--tblr-alert-color:var(--tblr-light)}.alert-dark{--tblr-alert-color:var(--tblr-dark)}.alert-muted{--tblr-alert-color:var(--tblr-muted)}.alert-blue{--tblr-alert-color:var(--tblr-blue)}.alert-azure{--tblr-alert-color:var(--tblr-azure)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo)}.alert-purple{--tblr-alert-color:var(--tblr-purple)}.alert-pink{--tblr-alert-color:var(--tblr-pink)}.alert-red{--tblr-alert-color:var(--tblr-red)}.alert-orange{--tblr-alert-color:var(--tblr-orange)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow)}.alert-lime{--tblr-alert-color:var(--tblr-lime)}.alert-green{--tblr-alert-color:var(--tblr-green)}.alert-teal{--tblr-alert-color:var(--tblr-teal)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin)}.alert-google{--tblr-alert-color:var(--tblr-google)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble)}.alert-github{--tblr-alert-color:var(--tblr-github)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest)}.alert-vk{--tblr-alert-color:var(--tblr-vk)}.alert-rss{--tblr-alert-color:var(--tblr-rss)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler)}.alert-icon{color:var(--tblr-alert-color);width:1.5rem!important;height:1.5rem!important;margin:-.125rem 0 -.125rem 1rem}.alert-title{font-size:.875rem;line-height:1.25rem;font-weight:var(--tblr-font-weight-bold);margin-bottom:.25rem;color:var(--tblr-alert-color)}.avatar{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-bg:var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow:var(--tblr-box-shadow-border);--tblr-avatar-font-size:1rem;--tblr-avatar-icon-size:1.5rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow)}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;left:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size)/ 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size:1rem;--tblr-avatar-status-size:0.25rem;--tblr-avatar-font-size:0.5rem;--tblr-avatar-icon-size:0.75rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size:1.25rem;--tblr-avatar-status-size:0.375rem;--tblr-avatar-font-size:0.625rem;--tblr-avatar-icon-size:1rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size:2rem;--tblr-avatar-status-size:0.5rem;--tblr-avatar-font-size:0.75rem;--tblr-avatar-icon-size:1.25rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:0.875rem;--tblr-avatar-icon-size:1.5rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size:3rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:1.25rem;--tblr-avatar-icon-size:2rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size:5rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:2rem;--tblr-avatar-icon-size:3rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size:7rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:3rem;--tblr-avatar-icon-size:5rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap:0}.avatar-list-stacked .avatar{margin-left:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-cap-bg,var(--tblr-card-bg,var(--tblr-bg-surface)))}.avatar-upload{width:4rem;height:4rem;border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);flex-direction:column;transition:color .3s,background-color .3s}@media (prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-body-bg))}.badge{justify-content:center;align-items:center;background:var(--tblr-bg-surface-secondary);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;min-width:1.35714285em;font-weight:var(--tblr-font-weight-bold);letter-spacing:.04em;vertical-align:bottom}a.badge{color:var(--tblr-bg-surface)}.badge .avatar{box-sizing:content-box;width:1.25rem;height:1.25rem;margin:0 -.5rem 0 .5rem}.badge .icon{width:1em;height:1em;font-size:1rem;stroke-width:2}.badge-empty,.badge:empty{display:inline-block;width:.5rem;height:.5rem;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;left:0!important;transform:translate(-50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.breadcrumb{--tblr-breadcrumb-item-active-font-weight:var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color:var(--tblr-disabled-color);--tblr-breadcrumb-link-color:var(--tblr-link-color);padding:0;margin:0;background:0 0}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color:var(--tblr-secondary)}.breadcrumb-item.active{font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-dots{--tblr-breadcrumb-divider:"·"}.breadcrumb-arrows{--tblr-breadcrumb-divider:"›"}.breadcrumb-bullets{--tblr-breadcrumb-divider:"•"}.btn{--tblr-btn-icon-size:1.25rem;--tblr-btn-bg:var(--tblr-bg-surface);--tblr-btn-color:var(--tblr-body-color);--tblr-btn-border-color:var(--tblr-border-color);--tblr-btn-hover-bg:var(--tblr-btn-bg);--tblr-btn-hover-border-color:var(--tblr-border-color-active);--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-active-color:var(--tblr-primary);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-btn-active-border-color:var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow)}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2);vertical-align:bottom;color:inherit}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2)}.btn .icon-right{margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#0054a6;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#004385;border-color:transparent}.btn-primary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-primary-fg);--tblr-btn-bg:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-border-color:var(--tblr-primary)}.btn-secondary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-secondary-fg);--tblr-btn-bg:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:rgba(var(--tblr-secondary-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-border-color:var(--tblr-secondary)}.btn-success{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-success-fg);--tblr-btn-bg:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:rgba(var(--tblr-success-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-border-color:var(--tblr-success)}.btn-info{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-info-fg);--tblr-btn-bg:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:rgba(var(--tblr-info-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-border-color:var(--tblr-info)}.btn-warning{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-warning-fg);--tblr-btn-bg:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:rgba(var(--tblr-warning-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-border-color:var(--tblr-warning)}.btn-danger{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-danger-fg);--tblr-btn-bg:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:rgba(var(--tblr-danger-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-border-color:var(--tblr-danger)}.btn-light{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-light-fg);--tblr-btn-bg:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:rgba(var(--tblr-light-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-border-color:var(--tblr-light)}.btn-dark{--tblr-btn-border-color:var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-active-border-color:var(--tblr-dark-mode-border-color-active);--tblr-btn-color:var(--tblr-dark-fg);--tblr-btn-bg:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:rgba(var(--tblr-dark-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-border-color:var(--tblr-dark)}.btn-muted{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-muted-fg);--tblr-btn-bg:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:rgba(var(--tblr-muted-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-border-color:var(--tblr-muted)}.btn-blue{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-blue-fg);--tblr-btn-bg:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:rgba(var(--tblr-blue-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-border-color:var(--tblr-blue)}.btn-azure{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-azure-fg);--tblr-btn-bg:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:rgba(var(--tblr-azure-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-border-color:var(--tblr-azure)}.btn-indigo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-indigo-fg);--tblr-btn-bg:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:rgba(var(--tblr-indigo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-border-color:var(--tblr-indigo)}.btn-purple{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-purple-fg);--tblr-btn-bg:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:rgba(var(--tblr-purple-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-border-color:var(--tblr-purple)}.btn-pink{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pink-fg);--tblr-btn-bg:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:rgba(var(--tblr-pink-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-border-color:var(--tblr-pink)}.btn-red{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-red-fg);--tblr-btn-bg:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:rgba(var(--tblr-red-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-border-color:var(--tblr-red)}.btn-orange{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-orange-fg);--tblr-btn-bg:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:rgba(var(--tblr-orange-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-border-color:var(--tblr-orange)}.btn-yellow{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-yellow-fg);--tblr-btn-bg:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:rgba(var(--tblr-yellow-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-border-color:var(--tblr-yellow)}.btn-lime{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-lime-fg);--tblr-btn-bg:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:rgba(var(--tblr-lime-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-border-color:var(--tblr-lime)}.btn-green{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-green-fg);--tblr-btn-bg:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:rgba(var(--tblr-green-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-border-color:var(--tblr-green)}.btn-teal{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-teal-fg);--tblr-btn-bg:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:rgba(var(--tblr-teal-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-border-color:var(--tblr-teal)}.btn-cyan{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-cyan-fg);--tblr-btn-bg:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:rgba(var(--tblr-cyan-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-border-color:var(--tblr-cyan)}.btn-facebook{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-facebook-fg);--tblr-btn-bg:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:rgba(var(--tblr-facebook-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-border-color:var(--tblr-facebook)}.btn-twitter{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-twitter-fg);--tblr-btn-bg:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:rgba(var(--tblr-twitter-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-border-color:var(--tblr-twitter)}.btn-linkedin{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-linkedin-fg);--tblr-btn-bg:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:rgba(var(--tblr-linkedin-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-border-color:var(--tblr-linkedin)}.btn-google{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-google-fg);--tblr-btn-bg:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:rgba(var(--tblr-google-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-border-color:var(--tblr-google)}.btn-youtube{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-youtube-fg);--tblr-btn-bg:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:rgba(var(--tblr-youtube-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-border-color:var(--tblr-youtube)}.btn-vimeo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vimeo-fg);--tblr-btn-bg:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:rgba(var(--tblr-vimeo-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-border-color:var(--tblr-vimeo)}.btn-dribbble{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-dribbble-fg);--tblr-btn-bg:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:rgba(var(--tblr-dribbble-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-border-color:var(--tblr-dribbble)}.btn-github{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-github-fg);--tblr-btn-bg:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:rgba(var(--tblr-github-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-border-color:var(--tblr-github)}.btn-instagram{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-instagram-fg);--tblr-btn-bg:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:rgba(var(--tblr-instagram-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-border-color:var(--tblr-instagram)}.btn-pinterest{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pinterest-fg);--tblr-btn-bg:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:rgba(var(--tblr-pinterest-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-border-color:var(--tblr-pinterest)}.btn-vk{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vk-fg);--tblr-btn-bg:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:rgba(var(--tblr-vk-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-border-color:var(--tblr-vk)}.btn-rss{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-rss-fg);--tblr-btn-bg:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:rgba(var(--tblr-rss-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-border-color:var(--tblr-rss)}.btn-flickr{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-flickr-fg);--tblr-btn-bg:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:rgba(var(--tblr-flickr-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-border-color:var(--tblr-flickr)}.btn-bitbucket{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-bitbucket-fg);--tblr-btn-bg:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:rgba(var(--tblr-bitbucket-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-border-color:var(--tblr-bitbucket)}.btn-tabler{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-tabler-fg);--tblr-btn-bg:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:rgba(var(--tblr-tabler-rgb), .8);--tblr-btn-disabled-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-border-color:var(--tblr-tabler)}.btn-ghost-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-hover-border-color:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-hover-border-color:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-hover-border-color:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-hover-border-color:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-hover-border-color:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-hover-border-color:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-hover-border-color:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-hover-border-color:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-hover-border-color:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-hover-border-color:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-hover-border-color:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-hover-border-color:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-hover-border-color:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-hover-border-color:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-hover-border-color:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-hover-border-color:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-hover-border-color:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-hover-border-color:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-hover-border-color:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-hover-border-color:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-hover-border-color:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-hover-border-color:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-hover-border-color:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-hover-border-color:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-hover-border-color:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-hover-border-color:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-hover-border-color:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-hover-border-color:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-hover-border-color:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-hover-border-color:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-hover-border-color:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-hover-border-color:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-hover-border-color:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-hover-border-color:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-hover-border-color:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-hover-border-color:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-group-sm>.btn,.btn-sm{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:.75rem}.btn-group-lg>.btn,.btn-lg{--tblr-btn-line-height:1.5;--tblr-btn-icon-size:2rem}.btn-pill{padding-left:1.5em;padding-right:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon{min-width:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);padding-right:0;padding-left:0}.btn-icon .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1.5rem;left:1.5rem;border-radius:100rem}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-left-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);right:calc(50% - var(--tblr-btn-icon-size)/ 2);top:calc(50% - var(--tblr-btn-icon-size)/ 2);animation:spinner-border .75s linear infinite}.btn-action{padding:0;border:0;color:var(--tblr-secondary);display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:var(--tblr-border-radius);background:0 0}.btn-action:after{content:none}.btn-action:focus{outline:0;box-shadow:none}.btn-action.show,.btn-action:hover{color:var(--tblr-body-color);background:var(--tblr-active-bg)}.btn-action.show{color:var(--tblr-primary)}.btn-action .icon{margin:0;width:1.25rem;height:1.25rem;font-size:1.25rem;stroke-width:1}.btn-actions{display:flex}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-box-shadow-input)}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group>.btn-check:checked+.btn,.btn-group>.btn.active,.btn-group>.btn:active{z-index:5}.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.next-month,.calendar-date.prev-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:100% 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media (prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;left:0;right:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-end .date-item,.calendar-range.range-start .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{right:50%}.calendar-range.range-end:before{left:50%}.carousel-indicators-vertical{right:auto;top:0;margin:0 0 0 1rem;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0 3px;width:3px;height:30px;border:0;border-right:10px var(--tblr-border-style) transparent;border-left:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0;margin:0 3px;opacity:.75}@media (min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio,100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;right:0;left:0;bottom:0;height:90%;background:linear-gradient(0deg,rgba(24,36,51,.9),rgba(24,36,51,0))}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media (prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px 0}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-footer,.card-borderless .card-header{border-color:transparent}.card-stamp{--tblr-stamp-size:7rem;position:absolute;top:0;left:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-left-radius:4px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size:13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg,var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);left:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(-10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(-180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color:var(--tblr-primary);--tblr-card-bg:var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.25rem;text-align:center;transition:background .3s;border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}@media (prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset:.25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));left:var(--tblr-card-stacked-offset);right:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1.25rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;top:0;left:0;bottom:0;right:0;content:"";background:rgba(24,36,51,.48)}.card-cover:first-child,.card-cover:first-child:before{border-radius:4px 4px 0 0}.card-cover-blurred:before{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.card-actions{margin:-.5rem auto -.5rem -.5rem;padding-right:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:0 0}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left{transform:rotate(1.5deg)}.card-rotate-right{transform:rotate(-1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px 0 rgba(0,0,0,.08)}.card-link-rotate:hover{transform:rotate(-1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:0 0;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 .25rem 0 0;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media (min-width:768px){.card-md>.card-body{padding:2.5rem}}@media (min-width:768px){.card-lg>.card-body{padding:2rem}}@media (min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;left:.75rem;display:flex;margin-right:auto}.card-options-link{display:inline-block;min-width:1rem;margin-right:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;left:0;right:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;left:auto;bottom:0;width:2px;height:100%;border-radius:0 var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-right:1.25rem;border-right:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-left:1.25rem;border-left:0}.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child{border-top:0}.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th,.card-table thead tr:first-child td,.card-table thead tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-right:auto;margin-left:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-left:1.25rem;padding-right:1.25rem;border-left:0;border-right:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg,var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-right:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius) var(--tblr-border-radius)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-right-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-left-radius:0}.card-tabs .card{border-bottom-right-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-right-radius:var(--tblr-card-border-radius);border-top-right-radius:0}.card-note{--tblr-card-bg:#fff7dd;--tblr-card-border-color:#fff1c9}.btn-close{cursor:pointer}.btn-close:focus{outline:0}.dropdown-menu{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-left:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-left:.5rem;margin-right:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 .25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;right:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0,9px,9px,0)}.dropdown-menu-arrow.dropdown-menu-end:before{left:.75rem;right:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-right:-.25rem}.dropend .dropdown-toggle:after{margin-right:auto}.dropdown-menu-card{padding:0}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding:1.5rem;--tblr-datagrid-item-width:15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media (min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-img img{height:8rem;width:auto}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-subtitle,.empty-title{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto;max-width:16rem}.container-tight{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto;max-width:30rem}.container-narrow{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-left:calc(var(--tblr-gutter-x) * .5);padding-right:calc(var(--tblr-gutter-x) * .5);margin-left:auto;margin-right:auto;max-width:45rem}.row-0{margin-left:0;margin-right:0}.row-0>.col,.row-0>[class*=col-]{padding-left:0;padding-right:0}.row-0 .card{margin-bottom:0}.row-sm{margin-left:-.375rem;margin-right:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-left:.375rem;padding-right:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-left:-1.5rem;margin-right:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-left:1.5rem;padding-right:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-left:-3rem;margin-right:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-left:3rem;padding-right:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:3rem}.space-x-6{display:flex;gap:3rem}.space-y-7{display:flex;flex-direction:column;gap:5rem}.space-x-7{display:flex;gap:5rem}.space-y-8{display:flex;flex-direction:column;gap:8rem}.space-x-8{display:flex;gap:8rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-right:1rem!important}.divide-x>:not(template):not(:last-child){padding-left:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-right:0!important}.divide-x-0>:not(template):not(:last-child){padding-left:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-right:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-left:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-right:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-left:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-right:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-left:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-right:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-left:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-right:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-left:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:3rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:3rem!important}.divide-x-6>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-right:3rem!important}.divide-x-6>:not(template):not(:last-child){padding-left:3rem!important}.divide-y-7>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-7>:not(template):not(:first-child){padding-top:5rem!important}.divide-y-7>:not(template):not(:last-child){padding-bottom:5rem!important}.divide-x-7>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-7>:not(template):not(:first-child){padding-right:5rem!important}.divide-x-7>:not(template):not(:last-child){padding-left:5rem!important}.divide-y-8>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-8>:not(template):not(:first-child){padding-top:8rem!important}.divide-y-8>:not(template):not(:last-child){padding-bottom:8rem!important}.divide-x-8>:not(template)~:not(template){border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-8>:not(template):not(:first-child){padding-right:8rem!important}.divide-x-8>:not(template):not(:last-child){padding-left:8rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size:1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size:1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size:1rem;stroke-width:1}.icon-md{--tblr-icon-size:2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size:3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio:75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y)/ 2)}.img-responsive-1x1{--tblr-img-responsive-ratio:100%}.img-responsive-2x1{--tblr-img-responsive-ratio:50%}.img-responsive-1x2{--tblr-img-responsive-ratio:200%}.img-responsive-3x1{--tblr-img-responsive-ratio:33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio:300%}.img-responsive-4x3{--tblr-img-responsive-ratio:75%}.img-responsive-3x4{--tblr-img-responsive-ratio:133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio:56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio:177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio:42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio:233.3333333333%}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-right:.25rem;color:#d63939}.form-label-description{float:left;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-secondary)}.form-hint{display:block;color:var(--tblr-secondary)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.form-control+.form-hint,.form-select+.form-hint,.input-group+.form-hint{margin-top:.5rem}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-body-bg) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control.disabled,.form-control:disabled{color:var(--tblr-secondary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:rgba(0,0,0,.1);color:#fff;border-color:transparent}.form-control-dark:focus{background-color:rgba(0,0,0,.1);box-shadow:none;border-color:rgba(255,255,255,.24)}.form-control-dark::-webkit-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark:-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::-ms-input-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::placeholder{color:rgba(255,255,255,.6)}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:0 0!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-body-bg);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-secondary);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-box-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .btn,.input-group .form-control{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#80aad3!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-left:0}.input-group-flat .form-control:not(:first-child){border-right:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-left:0}.input-group-flat .input-group-text:last-child{padding-right:0}.form-file-button{margin-right:0;border-right:0}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;right:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{left:0;right:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:3px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.form-colorinput-color:before{position:absolute;top:0;right:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;right:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.form-imagecheck-image:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck:hover .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck:hover .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 0 -.5rem -.5rem;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 0 .5rem .5rem}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;right:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.4285714286em + 1.125rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.5625rem .75rem;font-size:.875rem;line-height:1.4285714286;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px;box-shadow:var(--tblr-box-shadow-input);transition:border-color .3s,background .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-box-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.5625rem;left:.5625rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:right;padding:1.25rem 1.25rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-check{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0;box-shadow:var(--tblr-box-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-right:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single{margin:0}.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0}.form-switch-lg{padding-right:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-right:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-control.is-invalid-lite,.form-control.is-valid-lite,.form-select.is-invalid-lite,.form-select.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size:0.75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-right:0;margin-left:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-secondary);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-text-secondary-rgb),.04);border-right-color:#0054a6;border-right-width:2px}.list-group-item:active,.list-group-item:focus,.list-group-item:hover{background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-group-item.disabled,.list-group-item:disabled{color:#929dab;background-color:rgba(var(--tblr-text-secondary-rgb),.04)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item-actions.show,.list-group-hoverable .list-group-item:hover .list-group-item-actions{opacity:1}.list-group-transparent{--tblr-list-group-border-radius:0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:0 0;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated-item{padding:1rem 0}.list-separated-item:first-child{padding-top:0}.list-separated-item:last-child{padding-bottom:0}.list-separated-item+.list-separated-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-inline-item:not(:last-child){margin-left:auto;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" · ";-webkit-margin-end:.5rem;margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#0054a6;vertical-align:middle}.loader:after{position:absolute;top:0;right:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-right-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;left:0;right:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translateX(100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content .btn-close{position:absolute;top:0;left:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16) transparent}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{-webkit-transition:none;transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.modal-body::-webkit-scrollbar-track{background:0 0}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.modal-body::-webkit-scrollbar-corner{background:0 0}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;right:0;left:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:0 0;padding:0 1.5rem 0 3.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-right:1.25rem;border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-right:.5rem}.nav-vertical .nav-item.show .nav-link,.nav-vertical .nav-link.active{font-weight:var(--tblr-font-weight-bold)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-right:1.25rem}.nav-bordered .nav-link{padding-right:0;padding-left:0;margin:0 0 -var(--tblr-border-width);border:0;border-bottom:2px var(--tblr-border-style) transparent;color:var(--tblr-secondary)}.nav-bordered .nav-item.show .nav-link,.nav-bordered .nav-link.active{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-link{display:flex;transition:color .3s;align-items:center}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link-toggle{margin-right:auto;padding:0 .25rem;transition:transform .3s}@media (prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-right:1px var(--tblr-border-style);margin-left:.1em;margin-right:.4em;transform:rotate(45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(-180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-left:.5rem;color:var(--tblr-icon-color)}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#bbc3cd;font-size:.75rem}.stars .star:not(:first-child){margin-right:.25rem}.pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.page-link{min-width:1.75rem;border-radius:var(--tblr-border-radius)}.page-item{text-align:center}.page-item:not(.active) .page-link:hover{background:0 0}.page-item.page-next,.page-item.page-prev{flex:0 0 50%;text-align:right}.page-item.page-next{margin-right:auto;text-align:left}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#0054a6}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}@keyframes progress-indeterminate{0%{left:100%;right:-35%}100%,60%{left:-90%;right:100%}}.progress{position:relative;width:100%;line-height:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;right:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg,var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;top:0;left:0;bottom:0;right:0;z-index:0;height:100%;background:0 0;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-right:auto;padding-right:2rem}.ribbon{--tblr-ribbon-margin:0.25rem;--tblr-ribbon-border-radius:var(--tblr-border-radius);position:absolute;top:.75rem;left:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;left:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));left:.75rem;width:2rem;padding:.5rem 0;border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;left:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon-top.ribbon-start{left:auto;right:.75rem}.ribbon-top.ribbon-start:before{top:0;left:100%;right:auto}.ribbon-start{left:auto;right:calc(-1 * var(--tblr-ribbon-margin))}.ribbon-start:before{top:auto;bottom:100%;right:0;border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-right:.25rem;border-radius:0 0 0 var(--tblr-ribbon-border-radius)}.ribbon-bookmark:after{position:absolute;top:0;left:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-left-width:0;border-right-color:transparent;border-right-width:.5rem}.ribbon-bookmark.ribbon-left{padding-left:.5rem}.ribbon-bookmark.ribbon-left:after{left:auto;right:100%;border-left-color:transparent;border-left-width:.5rem;border-right-width:0}.ribbon-bookmark.ribbon-top{padding-left:0;padding-bottom:.25rem;padding-right:0;border-radius:var(--tblr-ribbon-border-radius) 0 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;left:0;right:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:1.7142857143}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media (min-width:768px){.markdown>.hr,.markdown>hr{margin-top:3em;margin-bottom:3em}}.markdown>.h1,.markdown>.h2,.markdown>.h3,.markdown>.h4,.markdown>.h5,.markdown>.h6,.markdown>h1,.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{font-weight:var(--tblr-font-weight-bold)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img{border-radius:var(--tblr-border-radius)}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.steps{--tblr-steps-color:var(--tblr-primary);--tblr-steps-inactive-color:var(--tblr-border-color);--tblr-steps-dot-size:.5rem;--tblr-steps-border-width:2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color:var(--tblr-blue)}.steps-azure{--tblr-steps-color:var(--tblr-azure)}.steps-indigo{--tblr-steps-color:var(--tblr-indigo)}.steps-purple{--tblr-steps-color:var(--tblr-purple)}.steps-pink{--tblr-steps-color:var(--tblr-pink)}.steps-red{--tblr-steps-color:var(--tblr-red)}.steps-orange{--tblr-steps-color:var(--tblr-orange)}.steps-yellow{--tblr-steps-color:var(--tblr-yellow)}.steps-lime{--tblr-steps-color:var(--tblr-lime)}.steps-green{--tblr-steps-color:var(--tblr-green)}.steps-teal{--tblr-steps-color:var(--tblr-teal)}.steps-cyan{--tblr-steps-color:var(--tblr-cyan)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;right:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;right:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translateX(50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size:1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset:6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset:-2px}.steps-vertical .step-item{text-align:right;padding-top:0;padding-right:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);right:0;transform:translate(0,0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translateX(50%);top:var(--tblr-steps-dot-offset);right:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25,1.25)}60%{transform:scale(1.25,1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1,1)}30%{transform:scale(3,3)}80%{transform:scale(3,3)}100%{transform:scale(1,1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1,1)}80%{transform:scale(3,3);opacity:0}100%{transform:scale(3,3);opacity:0}}.status{--tblr-status-height:1.5rem;--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:0 0!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-secondary{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-success{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-info{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-warning{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-danger{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-light{--tblr-status-color:#fcfdfe;--tblr-status-color-rgb:252,253,254}.status-dark{--tblr-status-color:#182433;--tblr-status-color-rgb:24,36,51}.status-muted{--tblr-status-color:#667382;--tblr-status-color-rgb:102,115,130}.status-blue{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-azure{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-indigo{--tblr-status-color:#4263eb;--tblr-status-color-rgb:66,99,235}.status-purple{--tblr-status-color:#ae3ec9;--tblr-status-color-rgb:174,62,201}.status-pink{--tblr-status-color:#d6336c;--tblr-status-color-rgb:214,51,108}.status-red{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-orange{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-yellow{--tblr-status-color:#f59f00;--tblr-status-color-rgb:245,159,0}.status-lime{--tblr-status-color:#74b816;--tblr-status-color-rgb:116,184,22}.status-green{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-teal{--tblr-status-color:#0ca678;--tblr-status-color-rgb:12,166,120}.status-cyan{--tblr-status-color:#17a2b8;--tblr-status-color-rgb:23,162,184}.status-facebook{--tblr-status-color:#1877f2;--tblr-status-color-rgb:24,119,242}.status-twitter{--tblr-status-color:#1da1f2;--tblr-status-color-rgb:29,161,242}.status-linkedin{--tblr-status-color:#0a66c2;--tblr-status-color-rgb:10,102,194}.status-google{--tblr-status-color:#dc4e41;--tblr-status-color-rgb:220,78,65}.status-youtube{--tblr-status-color:#ff0000;--tblr-status-color-rgb:255,0,0}.status-vimeo{--tblr-status-color:#1ab7ea;--tblr-status-color-rgb:26,183,234}.status-dribbble{--tblr-status-color:#ea4c89;--tblr-status-color-rgb:234,76,137}.status-github{--tblr-status-color:#181717;--tblr-status-color-rgb:24,23,23}.status-instagram{--tblr-status-color:#e4405f;--tblr-status-color-rgb:228,64,95}.status-pinterest{--tblr-status-color:#bd081c;--tblr-status-color-rgb:189,8,28}.status-vk{--tblr-status-color:#6383a8;--tblr-status-color-rgb:99,131,168}.status-rss{--tblr-status-color:#ffa500;--tblr-status-color-rgb:255,165,0}.status-flickr{--tblr-status-color:#0063dc;--tblr-status-color-rgb:0,99,220}.status-bitbucket{--tblr-status-color:#0052cc;--tblr-status-color-rgb:0,82,204}.status-tabler{--tblr-status-color:#0054a6;--tblr-status-color-rgb:0,84,166}.status-dot{--tblr-status-dot-color:var(--tblr-status-color, #667382);--tblr-status-size:0.5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size:2.5rem;--tblr-status-indicator-color:var(--tblr-status-color, #667382);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size:.75rem;position:absolute;right:50%;top:50%;margin:calc(var(--tblr-status-circle-size)/ -2) calc(var(--tblr-status-circle-size)/ -2) 0 0;width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:nth-child(1){z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:nth-child(1){animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:0 0;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:0}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;right:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media (prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media (prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-down,.switch-icon-slide-left,.switch-icon-slide-right,.switch-icon-slide-up{overflow:hidden}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:opacity .3s,transform .3s}@media (prefers-reduced-motion:reduce){.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:none}}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-up .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-up.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-up.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-right .switch-icon-a{transform:translateX(0)}.switch-icon-slide-left .switch-icon-b{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-a{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-left .switch-icon-a{transform:translateX(0)}.switch-icon-slide-right .switch-icon-b{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-a{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.markdown>table thead th,.table thead th{color:var(--tblr-secondary);background:var(--tblr-bg-surface-tertiary);font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.markdown>table thead th,.table thead th{background:0 0}}.table-responsive .markdown>table,.table-responsive .table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:0 0}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media (max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media (max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media (max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media (max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media (max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s;margin:-.5rem -.75rem;padding:.5rem .75rem}@media (prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort.asc,.table-sort.desc,.table-sort:hover{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,");background:currentColor;margin-right:.25rem}.table-sort.asc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:0 0}.tag{--tblr-tag-height:1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-box-shadow-input);gap:.5rem}.tag .btn-close{margin-left:-.25rem;margin-right:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size:0.625rem;--tblr-badge-padding-x:.25rem;--tblr-badge-padding-y:.125rem;margin-left:-.25rem}.tag-avatar,.tag-check,.tag-flag,.tag-icon,.tag-payment{margin-right:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-left:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{background:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.toast .toast-header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.toast button[data-bs-dismiss=toast]{outline:0}.toast-primary{--tblr-toast-color:#0054a6}.toast-secondary{--tblr-toast-color:#667382}.toast-success{--tblr-toast-color:#2fb344}.toast-info{--tblr-toast-color:#4299e1}.toast-warning{--tblr-toast-color:#f76707}.toast-danger{--tblr-toast-color:#d63939}.toast-light{--tblr-toast-color:#fcfdfe}.toast-dark{--tblr-toast-color:#182433}.toast-muted{--tblr-toast-color:#667382}.toast-blue{--tblr-toast-color:#0054a6}.toast-azure{--tblr-toast-color:#4299e1}.toast-indigo{--tblr-toast-color:#4263eb}.toast-purple{--tblr-toast-color:#ae3ec9}.toast-pink{--tblr-toast-color:#d6336c}.toast-red{--tblr-toast-color:#d63939}.toast-orange{--tblr-toast-color:#f76707}.toast-yellow{--tblr-toast-color:#f59f00}.toast-lime{--tblr-toast-color:#74b816}.toast-green{--tblr-toast-color:#2fb344}.toast-teal{--tblr-toast-color:#0ca678}.toast-cyan{--tblr-toast-color:#17a2b8}.toast-facebook{--tblr-toast-color:#1877f2}.toast-twitter{--tblr-toast-color:#1da1f2}.toast-linkedin{--tblr-toast-color:#0a66c2}.toast-google{--tblr-toast-color:#dc4e41}.toast-youtube{--tblr-toast-color:#ff0000}.toast-vimeo{--tblr-toast-color:#1ab7ea}.toast-dribbble{--tblr-toast-color:#ea4c89}.toast-github{--tblr-toast-color:#181717}.toast-instagram{--tblr-toast-color:#e4405f}.toast-pinterest{--tblr-toast-color:#bd081c}.toast-vk{--tblr-toast-color:#6383a8}.toast-rss{--tblr-toast-color:#ffa500}.toast-flickr{--tblr-toast-color:#0063dc}.toast-bitbucket{--tblr-toast-color:#0052cc}.toast-tabler{--tblr-toast-color:#0054a6}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height:1.5rem;--tblr-tracking-gap-width:0.125rem;--tblr-tracking-block-border-radius:var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius:var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size:2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);right:calc(var(--tblr-timeline-icon-size)/ 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size,2.5rem);height:var(--tblr-timeline-icon-size,2.5rem);background:var(--tblr-gray-200);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-right:calc(var(--tblr-timeline-icon-size,2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-right:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-left:.5rem}.hr-text:after{content:"";margin-right:.5rem}.hr-text>:first-child{padding-left:.5rem;padding-right:0;color:var(--tblr-secondary)}.hr-text.hr-text-right:before{content:none}.hr-text.hr-text-left>:first-child{padding-left:.5rem;padding-right:.5rem}.hr-text.hr-text-left:before{content:""}.hr-text.hr-text-left:after{content:none}.hr-text.hr-text-right>:first-child{padding-left:0;padding-right:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{line-height:1.4}a{-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:inherit}.h1,h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}.h2,h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}.h3,h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}.h4,h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}.h5,h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}.h6,h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.strong,b,strong{font-weight:var(--tblr-font-weight-bold)}blockquote{padding-right:1rem;border-right:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:left}blockquote cite:before{content:"— "}ol,ul{padding-right:1.5rem}.hr,hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius)}pre code{background:0 0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}.kbd,kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%}.list-unstyled{margin-right:0}::-moz-selection{background-color:rgba(var(--tblr-primary-rgb),.16)}::selection{background-color:rgba(var(--tblr-primary-rgb),.16)}[class*=" link-"].disabled,[class^=link-].disabled{color:var(--tblr-disabled-color);pointer-events:none}.subheader{font-size:.625rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.14)}.offcanvas-footer{padding:1.5rem 1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>:last-child{margin-bottom:0}.bg-white-overlay{color:#fff;background-color:rgba(252,253,254,.24)}.bg-dark-overlay{color:#fff;background-color:rgba(24,36,51,.24)}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-primary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-primary-lt-rgb),var(--tblr-bg-opacity))!important}.border-primary{border-color:#0054a6!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-secondary-lt-rgb),var(--tblr-bg-opacity))!important}.border-secondary{border-color:#667382!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-success-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-success-lt-rgb),var(--tblr-bg-opacity))!important}.border-success{border-color:#2fb344!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-info-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-info-lt-rgb),var(--tblr-bg-opacity))!important}.border-info{border-color:#4299e1!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-warning-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-warning-lt-rgb),var(--tblr-bg-opacity))!important}.border-warning{border-color:#f76707!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-danger-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-danger-lt-rgb),var(--tblr-bg-opacity))!important}.border-danger{border-color:#d63939!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-light-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-light-lt-rgb),var(--tblr-bg-opacity))!important}.border-light{border-color:#fcfdfe!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-dark-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dark-lt-rgb),var(--tblr-bg-opacity))!important}.border-dark{border-color:#182433!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-muted-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-muted-lt-rgb),var(--tblr-bg-opacity))!important}.border-muted{border-color:#667382!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-blue-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-blue-lt-rgb),var(--tblr-bg-opacity))!important}.border-blue{border-color:#0054a6!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-azure-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-azure-lt-rgb),var(--tblr-bg-opacity))!important}.border-azure{border-color:#4299e1!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-indigo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-indigo-lt-rgb),var(--tblr-bg-opacity))!important}.border-indigo{border-color:#4263eb!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-purple-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-purple-lt-rgb),var(--tblr-bg-opacity))!important}.border-purple{border-color:#ae3ec9!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-pink-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pink-lt-rgb),var(--tblr-bg-opacity))!important}.border-pink{border-color:#d6336c!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-red-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-red-lt-rgb),var(--tblr-bg-opacity))!important}.border-red{border-color:#d63939!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-orange-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-orange-lt-rgb),var(--tblr-bg-opacity))!important}.border-orange{border-color:#f76707!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-yellow-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-yellow-lt-rgb),var(--tblr-bg-opacity))!important}.border-yellow{border-color:#f59f00!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-lime-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-lime-lt-rgb),var(--tblr-bg-opacity))!important}.border-lime{border-color:#74b816!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-green-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-green-lt-rgb),var(--tblr-bg-opacity))!important}.border-green{border-color:#2fb344!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-teal-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-teal-lt-rgb),var(--tblr-bg-opacity))!important}.border-teal{border-color:#0ca678!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-cyan-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-cyan-lt-rgb),var(--tblr-bg-opacity))!important}.border-cyan{border-color:#17a2b8!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-facebook-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-facebook-lt-rgb),var(--tblr-bg-opacity))!important}.border-facebook{border-color:#1877f2!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-twitter-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-twitter-lt-rgb),var(--tblr-bg-opacity))!important}.border-twitter{border-color:#1da1f2!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-linkedin-lt-rgb),var(--tblr-bg-opacity))!important}.border-linkedin{border-color:#0a66c2!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-google-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-google-lt-rgb),var(--tblr-bg-opacity))!important}.border-google{border-color:#dc4e41!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-youtube-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-youtube-lt-rgb),var(--tblr-bg-opacity))!important}.border-youtube{border-color:red!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vimeo-lt-rgb),var(--tblr-bg-opacity))!important}.border-vimeo{border-color:#1ab7ea!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dribbble-lt-rgb),var(--tblr-bg-opacity))!important}.border-dribbble{border-color:#ea4c89!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-github-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-github-lt-rgb),var(--tblr-bg-opacity))!important}.border-github{border-color:#181717!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-instagram-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-instagram-lt-rgb),var(--tblr-bg-opacity))!important}.border-instagram{border-color:#e4405f!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pinterest-lt-rgb),var(--tblr-bg-opacity))!important}.border-pinterest{border-color:#bd081c!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-vk-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vk-lt-rgb),var(--tblr-bg-opacity))!important}.border-vk{border-color:#6383a8!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-rss-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-rss-lt-rgb),var(--tblr-bg-opacity))!important}.border-rss{border-color:orange!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-flickr-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-flickr-lt-rgb),var(--tblr-bg-opacity))!important}.border-flickr{border-color:#0063dc!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-bitbucket-lt-rgb),var(--tblr-bg-opacity))!important}.border-bitbucket{border-color:#0052cc!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-tabler-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-tabler-lt-rgb),var(--tblr-bg-opacity))!important}.border-tabler{border-color:#0054a6!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-white-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-white-lt-rgb),var(--tblr-bg-opacity))!important}.border-white{border-color:#fff!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-google-fg{color:var(--tblr-google-fg)!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-github-fg{color:var(--tblr-github-fg)!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-gray-50{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-50-rgb),var(--tblr-bg-opacity))!important}.text-gray-50-fg{color:#182433!important}.bg-gray-100{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-100-rgb),var(--tblr-bg-opacity))!important}.text-gray-100-fg{color:#182433!important}.bg-gray-200{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-200-rgb),var(--tblr-bg-opacity))!important}.text-gray-200-fg{color:#182433!important}.bg-gray-300{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-300-rgb),var(--tblr-bg-opacity))!important}.text-gray-300-fg{color:#182433!important}.bg-gray-400{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-400-rgb),var(--tblr-bg-opacity))!important}.text-gray-400-fg{color:#fcfdfe!important}.bg-gray-500{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-500-rgb),var(--tblr-bg-opacity))!important}.text-gray-500-fg{color:#fcfdfe!important}.bg-gray-600{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-600-rgb),var(--tblr-bg-opacity))!important}.text-gray-600-fg{color:#fcfdfe!important}.bg-gray-700{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-700-rgb),var(--tblr-bg-opacity))!important}.text-gray-700-fg{color:#fcfdfe!important}.bg-gray-800{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-800-rgb),var(--tblr-bg-opacity))!important}.text-gray-800-fg{color:#fcfdfe!important}.bg-gray-900{--tblr-bg-opacity:.1;background-color:rgba(var(--tblr-gray-900-rgb),var(--tblr-bg-opacity))!important}.text-gray-900-fg{color:#fcfdfe!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:active,.scrollable.hover:focus,.scrollable.hover:hover{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:3rem!important}.h-6{height:3rem!important}.w-7{width:5rem!important}.h-7{height:5rem!important}.w-8{width:8rem!important}.h-8{height:8rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:0!important}.opacity-5{opacity:.05!important}.opacity-10{opacity:.1!important}.opacity-15{opacity:.15!important}.opacity-20{opacity:.2!important}.opacity-25{opacity:.25!important}.opacity-30{opacity:.3!important}.opacity-35{opacity:.35!important}.opacity-40{opacity:.4!important}.opacity-45{opacity:.45!important}.opacity-50{opacity:.5!important}.opacity-55{opacity:.55!important}.opacity-60{opacity:.6!important}.opacity-65{opacity:.65!important}.opacity-70{opacity:.7!important}.opacity-75{opacity:.75!important}.opacity-80{opacity:.8!important}.opacity-85{opacity:.85!important}.opacity-90{opacity:.9!important}.opacity-95{opacity:.95!important}.opacity-100{opacity:1!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto} \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ad.svg b/gin_ops/static/dist/img/flags/ad.svg new file mode 100644 index 0000000..7c1ddd5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ad.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ae.svg b/gin_ops/static/dist/img/flags/ae.svg new file mode 100644 index 0000000..27522b6 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ae.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/af.svg b/gin_ops/static/dist/img/flags/af.svg new file mode 100644 index 0000000..7a92e09 --- /dev/null +++ b/gin_ops/static/dist/img/flags/af.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/afrun.svg b/gin_ops/static/dist/img/flags/afrun.svg new file mode 100644 index 0000000..a06429d --- /dev/null +++ b/gin_ops/static/dist/img/flags/afrun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ag.svg b/gin_ops/static/dist/img/flags/ag.svg new file mode 100644 index 0000000..f21ccaa --- /dev/null +++ b/gin_ops/static/dist/img/flags/ag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ai.svg b/gin_ops/static/dist/img/flags/ai.svg new file mode 100644 index 0000000..b3b05fa --- /dev/null +++ b/gin_ops/static/dist/img/flags/ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/al.svg b/gin_ops/static/dist/img/flags/al.svg new file mode 100644 index 0000000..0ca81b2 --- /dev/null +++ b/gin_ops/static/dist/img/flags/al.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/am.svg b/gin_ops/static/dist/img/flags/am.svg new file mode 100644 index 0000000..3f51f3b --- /dev/null +++ b/gin_ops/static/dist/img/flags/am.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ao.svg b/gin_ops/static/dist/img/flags/ao.svg new file mode 100644 index 0000000..5ea5b8c --- /dev/null +++ b/gin_ops/static/dist/img/flags/ao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/aq.svg b/gin_ops/static/dist/img/flags/aq.svg new file mode 100644 index 0000000..007014c --- /dev/null +++ b/gin_ops/static/dist/img/flags/aq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ar.svg b/gin_ops/static/dist/img/flags/ar.svg new file mode 100644 index 0000000..91fd50e --- /dev/null +++ b/gin_ops/static/dist/img/flags/ar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/as.svg b/gin_ops/static/dist/img/flags/as.svg new file mode 100644 index 0000000..5e84cbe --- /dev/null +++ b/gin_ops/static/dist/img/flags/as.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/at.svg b/gin_ops/static/dist/img/flags/at.svg new file mode 100644 index 0000000..1b0a74c --- /dev/null +++ b/gin_ops/static/dist/img/flags/at.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/au.svg b/gin_ops/static/dist/img/flags/au.svg new file mode 100644 index 0000000..5fde1e1 --- /dev/null +++ b/gin_ops/static/dist/img/flags/au.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/aw.svg b/gin_ops/static/dist/img/flags/aw.svg new file mode 100644 index 0000000..487f076 --- /dev/null +++ b/gin_ops/static/dist/img/flags/aw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ax.svg b/gin_ops/static/dist/img/flags/ax.svg new file mode 100644 index 0000000..5106cd7 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/az.svg b/gin_ops/static/dist/img/flags/az.svg new file mode 100644 index 0000000..0146afe --- /dev/null +++ b/gin_ops/static/dist/img/flags/az.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ba.svg b/gin_ops/static/dist/img/flags/ba.svg new file mode 100644 index 0000000..00e7ffe --- /dev/null +++ b/gin_ops/static/dist/img/flags/ba.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bb.svg b/gin_ops/static/dist/img/flags/bb.svg new file mode 100644 index 0000000..a040f82 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bd.svg b/gin_ops/static/dist/img/flags/bd.svg new file mode 100644 index 0000000..18c306c --- /dev/null +++ b/gin_ops/static/dist/img/flags/bd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/be.svg b/gin_ops/static/dist/img/flags/be.svg new file mode 100644 index 0000000..d75b999 --- /dev/null +++ b/gin_ops/static/dist/img/flags/be.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bf.svg b/gin_ops/static/dist/img/flags/bf.svg new file mode 100644 index 0000000..1416a0f --- /dev/null +++ b/gin_ops/static/dist/img/flags/bf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bg.svg b/gin_ops/static/dist/img/flags/bg.svg new file mode 100644 index 0000000..0225570 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bh.svg b/gin_ops/static/dist/img/flags/bh.svg new file mode 100644 index 0000000..7c11b73 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bi.svg b/gin_ops/static/dist/img/flags/bi.svg new file mode 100644 index 0000000..2ca6bb4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bj.svg b/gin_ops/static/dist/img/flags/bj.svg new file mode 100644 index 0000000..8b401d4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bl.svg b/gin_ops/static/dist/img/flags/bl.svg new file mode 100644 index 0000000..6881b7c --- /dev/null +++ b/gin_ops/static/dist/img/flags/bl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bm.svg b/gin_ops/static/dist/img/flags/bm.svg new file mode 100644 index 0000000..0b6b5fe --- /dev/null +++ b/gin_ops/static/dist/img/flags/bm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bn.svg b/gin_ops/static/dist/img/flags/bn.svg new file mode 100644 index 0000000..759193b --- /dev/null +++ b/gin_ops/static/dist/img/flags/bn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bo.svg b/gin_ops/static/dist/img/flags/bo.svg new file mode 100644 index 0000000..8b86bc3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bq-bo.svg b/gin_ops/static/dist/img/flags/bq-bo.svg new file mode 100644 index 0000000..5133ed0 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bq-bo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bq-sa.svg b/gin_ops/static/dist/img/flags/bq-sa.svg new file mode 100644 index 0000000..4820e08 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bq-sa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bq-se.svg b/gin_ops/static/dist/img/flags/bq-se.svg new file mode 100644 index 0000000..6d6a8f3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bq-se.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/br.svg b/gin_ops/static/dist/img/flags/br.svg new file mode 100644 index 0000000..d0b4597 --- /dev/null +++ b/gin_ops/static/dist/img/flags/br.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bs.svg b/gin_ops/static/dist/img/flags/bs.svg new file mode 100644 index 0000000..3040c9e --- /dev/null +++ b/gin_ops/static/dist/img/flags/bs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bt.svg b/gin_ops/static/dist/img/flags/bt.svg new file mode 100644 index 0000000..5597c66 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bv.svg b/gin_ops/static/dist/img/flags/bv.svg new file mode 100644 index 0000000..6d4faf9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bw.svg b/gin_ops/static/dist/img/flags/bw.svg new file mode 100644 index 0000000..14c7fda --- /dev/null +++ b/gin_ops/static/dist/img/flags/bw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/by.svg b/gin_ops/static/dist/img/flags/by.svg new file mode 100644 index 0000000..9185d24 --- /dev/null +++ b/gin_ops/static/dist/img/flags/by.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/bz.svg b/gin_ops/static/dist/img/flags/bz.svg new file mode 100644 index 0000000..78710e2 --- /dev/null +++ b/gin_ops/static/dist/img/flags/bz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ca.svg b/gin_ops/static/dist/img/flags/ca.svg new file mode 100644 index 0000000..d7a2e11 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ca.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cc.svg b/gin_ops/static/dist/img/flags/cc.svg new file mode 100644 index 0000000..81acff5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cd.svg b/gin_ops/static/dist/img/flags/cd.svg new file mode 100644 index 0000000..6852016 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cf.svg b/gin_ops/static/dist/img/flags/cf.svg new file mode 100644 index 0000000..f2af88b --- /dev/null +++ b/gin_ops/static/dist/img/flags/cf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cg.svg b/gin_ops/static/dist/img/flags/cg.svg new file mode 100644 index 0000000..437b393 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ch.svg b/gin_ops/static/dist/img/flags/ch.svg new file mode 100644 index 0000000..269bed5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ci.svg b/gin_ops/static/dist/img/flags/ci.svg new file mode 100644 index 0000000..c19bdfc --- /dev/null +++ b/gin_ops/static/dist/img/flags/ci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ck.svg b/gin_ops/static/dist/img/flags/ck.svg new file mode 100644 index 0000000..80504f5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cl.svg b/gin_ops/static/dist/img/flags/cl.svg new file mode 100644 index 0000000..4cce97c --- /dev/null +++ b/gin_ops/static/dist/img/flags/cl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cm.svg b/gin_ops/static/dist/img/flags/cm.svg new file mode 100644 index 0000000..94cdc2a --- /dev/null +++ b/gin_ops/static/dist/img/flags/cm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cn.svg b/gin_ops/static/dist/img/flags/cn.svg new file mode 100644 index 0000000..6948df7 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/co.svg b/gin_ops/static/dist/img/flags/co.svg new file mode 100644 index 0000000..f46bb73 --- /dev/null +++ b/gin_ops/static/dist/img/flags/co.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cr.svg b/gin_ops/static/dist/img/flags/cr.svg new file mode 100644 index 0000000..80ec0ad --- /dev/null +++ b/gin_ops/static/dist/img/flags/cr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cu.svg b/gin_ops/static/dist/img/flags/cu.svg new file mode 100644 index 0000000..25e7551 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cv.svg b/gin_ops/static/dist/img/flags/cv.svg new file mode 100644 index 0000000..45c39ad --- /dev/null +++ b/gin_ops/static/dist/img/flags/cv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cw.svg b/gin_ops/static/dist/img/flags/cw.svg new file mode 100644 index 0000000..9c9a173 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cx.svg b/gin_ops/static/dist/img/flags/cx.svg new file mode 100644 index 0000000..5506a42 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cy.svg b/gin_ops/static/dist/img/flags/cy.svg new file mode 100644 index 0000000..1216d72 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/cz.svg b/gin_ops/static/dist/img/flags/cz.svg new file mode 100644 index 0000000..7af9050 --- /dev/null +++ b/gin_ops/static/dist/img/flags/cz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/de.svg b/gin_ops/static/dist/img/flags/de.svg new file mode 100644 index 0000000..52c3eed --- /dev/null +++ b/gin_ops/static/dist/img/flags/de.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/dj.svg b/gin_ops/static/dist/img/flags/dj.svg new file mode 100644 index 0000000..c220f37 --- /dev/null +++ b/gin_ops/static/dist/img/flags/dj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/dk.svg b/gin_ops/static/dist/img/flags/dk.svg new file mode 100644 index 0000000..0f8da4c --- /dev/null +++ b/gin_ops/static/dist/img/flags/dk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/dm.svg b/gin_ops/static/dist/img/flags/dm.svg new file mode 100644 index 0000000..ffb6ec5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/dm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/do.svg b/gin_ops/static/dist/img/flags/do.svg new file mode 100644 index 0000000..dff0276 --- /dev/null +++ b/gin_ops/static/dist/img/flags/do.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/dz.svg b/gin_ops/static/dist/img/flags/dz.svg new file mode 100644 index 0000000..a739267 --- /dev/null +++ b/gin_ops/static/dist/img/flags/dz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ec.svg b/gin_ops/static/dist/img/flags/ec.svg new file mode 100644 index 0000000..8473f72 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ec.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ee.svg b/gin_ops/static/dist/img/flags/ee.svg new file mode 100644 index 0000000..511d5df --- /dev/null +++ b/gin_ops/static/dist/img/flags/ee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/eg.svg b/gin_ops/static/dist/img/flags/eg.svg new file mode 100644 index 0000000..bcddb32 --- /dev/null +++ b/gin_ops/static/dist/img/flags/eg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/eh.svg b/gin_ops/static/dist/img/flags/eh.svg new file mode 100644 index 0000000..2cdf9de --- /dev/null +++ b/gin_ops/static/dist/img/flags/eh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/er.svg b/gin_ops/static/dist/img/flags/er.svg new file mode 100644 index 0000000..52fb4d0 --- /dev/null +++ b/gin_ops/static/dist/img/flags/er.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/es.svg b/gin_ops/static/dist/img/flags/es.svg new file mode 100644 index 0000000..b893aee --- /dev/null +++ b/gin_ops/static/dist/img/flags/es.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/et.svg b/gin_ops/static/dist/img/flags/et.svg new file mode 100644 index 0000000..5eb0c7e --- /dev/null +++ b/gin_ops/static/dist/img/flags/et.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/eu.svg b/gin_ops/static/dist/img/flags/eu.svg new file mode 100644 index 0000000..0568a02 --- /dev/null +++ b/gin_ops/static/dist/img/flags/eu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/fi.svg b/gin_ops/static/dist/img/flags/fi.svg new file mode 100644 index 0000000..14619f0 --- /dev/null +++ b/gin_ops/static/dist/img/flags/fi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/fj.svg b/gin_ops/static/dist/img/flags/fj.svg new file mode 100644 index 0000000..e3a4c9e --- /dev/null +++ b/gin_ops/static/dist/img/flags/fj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/fk.svg b/gin_ops/static/dist/img/flags/fk.svg new file mode 100644 index 0000000..16bc814 --- /dev/null +++ b/gin_ops/static/dist/img/flags/fk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/fm.svg b/gin_ops/static/dist/img/flags/fm.svg new file mode 100644 index 0000000..b9a52e8 --- /dev/null +++ b/gin_ops/static/dist/img/flags/fm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/fo.svg b/gin_ops/static/dist/img/flags/fo.svg new file mode 100644 index 0000000..c92eab9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/fo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/fr.svg b/gin_ops/static/dist/img/flags/fr.svg new file mode 100644 index 0000000..12ff2a0 --- /dev/null +++ b/gin_ops/static/dist/img/flags/fr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ga.svg b/gin_ops/static/dist/img/flags/ga.svg new file mode 100644 index 0000000..b4bdba2 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ga.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gb-eng.svg b/gin_ops/static/dist/img/flags/gb-eng.svg new file mode 100644 index 0000000..22b3eca --- /dev/null +++ b/gin_ops/static/dist/img/flags/gb-eng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gb-nir.svg b/gin_ops/static/dist/img/flags/gb-nir.svg new file mode 100644 index 0000000..728be23 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gb-nir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gb-sct.svg b/gin_ops/static/dist/img/flags/gb-sct.svg new file mode 100644 index 0000000..0f16004 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gb-sct.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gb-wls.svg b/gin_ops/static/dist/img/flags/gb-wls.svg new file mode 100644 index 0000000..4fc4318 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gb-wls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gb.svg b/gin_ops/static/dist/img/flags/gb.svg new file mode 100644 index 0000000..728be23 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gd.svg b/gin_ops/static/dist/img/flags/gd.svg new file mode 100644 index 0000000..dbb78dc --- /dev/null +++ b/gin_ops/static/dist/img/flags/gd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ge.svg b/gin_ops/static/dist/img/flags/ge.svg new file mode 100644 index 0000000..9854e3f --- /dev/null +++ b/gin_ops/static/dist/img/flags/ge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gf.svg b/gin_ops/static/dist/img/flags/gf.svg new file mode 100644 index 0000000..13ede47 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gg.svg b/gin_ops/static/dist/img/flags/gg.svg new file mode 100644 index 0000000..4eb5122 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gh.svg b/gin_ops/static/dist/img/flags/gh.svg new file mode 100644 index 0000000..a1b7eaa --- /dev/null +++ b/gin_ops/static/dist/img/flags/gh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gi.svg b/gin_ops/static/dist/img/flags/gi.svg new file mode 100644 index 0000000..f21a4cf --- /dev/null +++ b/gin_ops/static/dist/img/flags/gi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gl.svg b/gin_ops/static/dist/img/flags/gl.svg new file mode 100644 index 0000000..4185697 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gm.svg b/gin_ops/static/dist/img/flags/gm.svg new file mode 100644 index 0000000..b66aa51 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gn.svg b/gin_ops/static/dist/img/flags/gn.svg new file mode 100644 index 0000000..0818470 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gp.svg b/gin_ops/static/dist/img/flags/gp.svg new file mode 100644 index 0000000..011da93 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gq.svg b/gin_ops/static/dist/img/flags/gq.svg new file mode 100644 index 0000000..a0623e3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gr.svg b/gin_ops/static/dist/img/flags/gr.svg new file mode 100644 index 0000000..cac914d --- /dev/null +++ b/gin_ops/static/dist/img/flags/gr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gs.svg b/gin_ops/static/dist/img/flags/gs.svg new file mode 100644 index 0000000..b175a13 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gt.svg b/gin_ops/static/dist/img/flags/gt.svg new file mode 100644 index 0000000..e18f550 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gu.svg b/gin_ops/static/dist/img/flags/gu.svg new file mode 100644 index 0000000..05a2201 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gw.svg b/gin_ops/static/dist/img/flags/gw.svg new file mode 100644 index 0000000..19522a3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/gy.svg b/gin_ops/static/dist/img/flags/gy.svg new file mode 100644 index 0000000..b4ffb90 --- /dev/null +++ b/gin_ops/static/dist/img/flags/gy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/hk.svg b/gin_ops/static/dist/img/flags/hk.svg new file mode 100644 index 0000000..ee7228d --- /dev/null +++ b/gin_ops/static/dist/img/flags/hk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/hm.svg b/gin_ops/static/dist/img/flags/hm.svg new file mode 100644 index 0000000..62b45f8 --- /dev/null +++ b/gin_ops/static/dist/img/flags/hm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/hn.svg b/gin_ops/static/dist/img/flags/hn.svg new file mode 100644 index 0000000..7f07a39 --- /dev/null +++ b/gin_ops/static/dist/img/flags/hn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/hr.svg b/gin_ops/static/dist/img/flags/hr.svg new file mode 100644 index 0000000..44c6a6d --- /dev/null +++ b/gin_ops/static/dist/img/flags/hr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ht.svg b/gin_ops/static/dist/img/flags/ht.svg new file mode 100644 index 0000000..68e9fe9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ht.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/hu.svg b/gin_ops/static/dist/img/flags/hu.svg new file mode 100644 index 0000000..b2a9e06 --- /dev/null +++ b/gin_ops/static/dist/img/flags/hu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/id.svg b/gin_ops/static/dist/img/flags/id.svg new file mode 100644 index 0000000..d234257 --- /dev/null +++ b/gin_ops/static/dist/img/flags/id.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ie.svg b/gin_ops/static/dist/img/flags/ie.svg new file mode 100644 index 0000000..2e908f5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/il.svg b/gin_ops/static/dist/img/flags/il.svg new file mode 100644 index 0000000..f1006ed --- /dev/null +++ b/gin_ops/static/dist/img/flags/il.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/im.svg b/gin_ops/static/dist/img/flags/im.svg new file mode 100644 index 0000000..63005ae --- /dev/null +++ b/gin_ops/static/dist/img/flags/im.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/in.svg b/gin_ops/static/dist/img/flags/in.svg new file mode 100644 index 0000000..266eb3b --- /dev/null +++ b/gin_ops/static/dist/img/flags/in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/io.svg b/gin_ops/static/dist/img/flags/io.svg new file mode 100644 index 0000000..35e5eb0 --- /dev/null +++ b/gin_ops/static/dist/img/flags/io.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/iq.svg b/gin_ops/static/dist/img/flags/iq.svg new file mode 100644 index 0000000..a7a1a74 --- /dev/null +++ b/gin_ops/static/dist/img/flags/iq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ir.svg b/gin_ops/static/dist/img/flags/ir.svg new file mode 100644 index 0000000..07f0864 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/is.svg b/gin_ops/static/dist/img/flags/is.svg new file mode 100644 index 0000000..7368b43 --- /dev/null +++ b/gin_ops/static/dist/img/flags/is.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/it.svg b/gin_ops/static/dist/img/flags/it.svg new file mode 100644 index 0000000..ab85165 --- /dev/null +++ b/gin_ops/static/dist/img/flags/it.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/je.svg b/gin_ops/static/dist/img/flags/je.svg new file mode 100644 index 0000000..2ab9ffb --- /dev/null +++ b/gin_ops/static/dist/img/flags/je.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/jm.svg b/gin_ops/static/dist/img/flags/jm.svg new file mode 100644 index 0000000..d964844 --- /dev/null +++ b/gin_ops/static/dist/img/flags/jm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/jo.svg b/gin_ops/static/dist/img/flags/jo.svg new file mode 100644 index 0000000..48ec583 --- /dev/null +++ b/gin_ops/static/dist/img/flags/jo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/jp.svg b/gin_ops/static/dist/img/flags/jp.svg new file mode 100644 index 0000000..0caf9f4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/jp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ke.svg b/gin_ops/static/dist/img/flags/ke.svg new file mode 100644 index 0000000..3fafa60 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ke.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kg.svg b/gin_ops/static/dist/img/flags/kg.svg new file mode 100644 index 0000000..cca438b --- /dev/null +++ b/gin_ops/static/dist/img/flags/kg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kh.svg b/gin_ops/static/dist/img/flags/kh.svg new file mode 100644 index 0000000..dd580fb --- /dev/null +++ b/gin_ops/static/dist/img/flags/kh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ki.svg b/gin_ops/static/dist/img/flags/ki.svg new file mode 100644 index 0000000..4bb2fea --- /dev/null +++ b/gin_ops/static/dist/img/flags/ki.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/km.svg b/gin_ops/static/dist/img/flags/km.svg new file mode 100644 index 0000000..9230212 --- /dev/null +++ b/gin_ops/static/dist/img/flags/km.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kn-sk.svg b/gin_ops/static/dist/img/flags/kn-sk.svg new file mode 100644 index 0000000..529c095 --- /dev/null +++ b/gin_ops/static/dist/img/flags/kn-sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kn.svg b/gin_ops/static/dist/img/flags/kn.svg new file mode 100644 index 0000000..1a650b5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/kn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kp.svg b/gin_ops/static/dist/img/flags/kp.svg new file mode 100644 index 0000000..08f08d9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/kp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kr.svg b/gin_ops/static/dist/img/flags/kr.svg new file mode 100644 index 0000000..31ea40c --- /dev/null +++ b/gin_ops/static/dist/img/flags/kr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kw.svg b/gin_ops/static/dist/img/flags/kw.svg new file mode 100644 index 0000000..a403cf5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/kw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ky.svg b/gin_ops/static/dist/img/flags/ky.svg new file mode 100644 index 0000000..f46758d --- /dev/null +++ b/gin_ops/static/dist/img/flags/ky.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/kz.svg b/gin_ops/static/dist/img/flags/kz.svg new file mode 100644 index 0000000..81f2601 --- /dev/null +++ b/gin_ops/static/dist/img/flags/kz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/la.svg b/gin_ops/static/dist/img/flags/la.svg new file mode 100644 index 0000000..660e7a4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/la.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lb.svg b/gin_ops/static/dist/img/flags/lb.svg new file mode 100644 index 0000000..77b13ba --- /dev/null +++ b/gin_ops/static/dist/img/flags/lb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lc.svg b/gin_ops/static/dist/img/flags/lc.svg new file mode 100644 index 0000000..15760e3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/lc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/li.svg b/gin_ops/static/dist/img/flags/li.svg new file mode 100644 index 0000000..4c1d791 --- /dev/null +++ b/gin_ops/static/dist/img/flags/li.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lk.svg b/gin_ops/static/dist/img/flags/lk.svg new file mode 100644 index 0000000..5169a95 --- /dev/null +++ b/gin_ops/static/dist/img/flags/lk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lr.svg b/gin_ops/static/dist/img/flags/lr.svg new file mode 100644 index 0000000..5fee8a3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/lr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ls.svg b/gin_ops/static/dist/img/flags/ls.svg new file mode 100644 index 0000000..9e31189 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lt.svg b/gin_ops/static/dist/img/flags/lt.svg new file mode 100644 index 0000000..a9b08dd --- /dev/null +++ b/gin_ops/static/dist/img/flags/lt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lu.svg b/gin_ops/static/dist/img/flags/lu.svg new file mode 100644 index 0000000..2a7ffb3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/lu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/lv.svg b/gin_ops/static/dist/img/flags/lv.svg new file mode 100644 index 0000000..b3a6abc --- /dev/null +++ b/gin_ops/static/dist/img/flags/lv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ly.svg b/gin_ops/static/dist/img/flags/ly.svg new file mode 100644 index 0000000..5c67728 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ma.svg b/gin_ops/static/dist/img/flags/ma.svg new file mode 100644 index 0000000..a45e3fa --- /dev/null +++ b/gin_ops/static/dist/img/flags/ma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mc.svg b/gin_ops/static/dist/img/flags/mc.svg new file mode 100644 index 0000000..c3c1596 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/md.svg b/gin_ops/static/dist/img/flags/md.svg new file mode 100644 index 0000000..8200a3d --- /dev/null +++ b/gin_ops/static/dist/img/flags/md.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/me.svg b/gin_ops/static/dist/img/flags/me.svg new file mode 100644 index 0000000..bf5cb2c --- /dev/null +++ b/gin_ops/static/dist/img/flags/me.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mf.svg b/gin_ops/static/dist/img/flags/mf.svg new file mode 100644 index 0000000..9492ed4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mg.svg b/gin_ops/static/dist/img/flags/mg.svg new file mode 100644 index 0000000..2be6f08 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mh.svg b/gin_ops/static/dist/img/flags/mh.svg new file mode 100644 index 0000000..588ded3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mk.svg b/gin_ops/static/dist/img/flags/mk.svg new file mode 100644 index 0000000..78edfdf --- /dev/null +++ b/gin_ops/static/dist/img/flags/mk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ml.svg b/gin_ops/static/dist/img/flags/ml.svg new file mode 100644 index 0000000..7ed885e --- /dev/null +++ b/gin_ops/static/dist/img/flags/ml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mm.svg b/gin_ops/static/dist/img/flags/mm.svg new file mode 100644 index 0000000..dbbb742 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mn.svg b/gin_ops/static/dist/img/flags/mn.svg new file mode 100644 index 0000000..a50e502 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mo.svg b/gin_ops/static/dist/img/flags/mo.svg new file mode 100644 index 0000000..9b085c2 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mp.svg b/gin_ops/static/dist/img/flags/mp.svg new file mode 100644 index 0000000..2e1d5e7 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mq.svg b/gin_ops/static/dist/img/flags/mq.svg new file mode 100644 index 0000000..12dc503 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mr.svg b/gin_ops/static/dist/img/flags/mr.svg new file mode 100644 index 0000000..038ba6d --- /dev/null +++ b/gin_ops/static/dist/img/flags/mr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ms.svg b/gin_ops/static/dist/img/flags/ms.svg new file mode 100644 index 0000000..d2f91a9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mt.svg b/gin_ops/static/dist/img/flags/mt.svg new file mode 100644 index 0000000..702e661 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mu.svg b/gin_ops/static/dist/img/flags/mu.svg new file mode 100644 index 0000000..68075a5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mv.svg b/gin_ops/static/dist/img/flags/mv.svg new file mode 100644 index 0000000..615c87d --- /dev/null +++ b/gin_ops/static/dist/img/flags/mv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mw.svg b/gin_ops/static/dist/img/flags/mw.svg new file mode 100644 index 0000000..f885db2 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mx.svg b/gin_ops/static/dist/img/flags/mx.svg new file mode 100644 index 0000000..769490d --- /dev/null +++ b/gin_ops/static/dist/img/flags/mx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/my.svg b/gin_ops/static/dist/img/flags/my.svg new file mode 100644 index 0000000..68d37da --- /dev/null +++ b/gin_ops/static/dist/img/flags/my.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/mz.svg b/gin_ops/static/dist/img/flags/mz.svg new file mode 100644 index 0000000..e832408 --- /dev/null +++ b/gin_ops/static/dist/img/flags/mz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/na.svg b/gin_ops/static/dist/img/flags/na.svg new file mode 100644 index 0000000..d64a2ae --- /dev/null +++ b/gin_ops/static/dist/img/flags/na.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/nc.svg b/gin_ops/static/dist/img/flags/nc.svg new file mode 100644 index 0000000..a0b5882 --- /dev/null +++ b/gin_ops/static/dist/img/flags/nc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ne.svg b/gin_ops/static/dist/img/flags/ne.svg new file mode 100644 index 0000000..70f0e23 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ne.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/nf.svg b/gin_ops/static/dist/img/flags/nf.svg new file mode 100644 index 0000000..58c3307 --- /dev/null +++ b/gin_ops/static/dist/img/flags/nf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ng.svg b/gin_ops/static/dist/img/flags/ng.svg new file mode 100644 index 0000000..963115d --- /dev/null +++ b/gin_ops/static/dist/img/flags/ng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ni.svg b/gin_ops/static/dist/img/flags/ni.svg new file mode 100644 index 0000000..d7bacce --- /dev/null +++ b/gin_ops/static/dist/img/flags/ni.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/nl.svg b/gin_ops/static/dist/img/flags/nl.svg new file mode 100644 index 0000000..e256f8e --- /dev/null +++ b/gin_ops/static/dist/img/flags/nl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/no.svg b/gin_ops/static/dist/img/flags/no.svg new file mode 100644 index 0000000..6d4faf9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/no.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/np.svg b/gin_ops/static/dist/img/flags/np.svg new file mode 100644 index 0000000..43bcd83 --- /dev/null +++ b/gin_ops/static/dist/img/flags/np.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/nr.svg b/gin_ops/static/dist/img/flags/nr.svg new file mode 100644 index 0000000..bd13696 --- /dev/null +++ b/gin_ops/static/dist/img/flags/nr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/nu.svg b/gin_ops/static/dist/img/flags/nu.svg new file mode 100644 index 0000000..73c41c1 --- /dev/null +++ b/gin_ops/static/dist/img/flags/nu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/nz.svg b/gin_ops/static/dist/img/flags/nz.svg new file mode 100644 index 0000000..5ec3f1c --- /dev/null +++ b/gin_ops/static/dist/img/flags/nz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/om.svg b/gin_ops/static/dist/img/flags/om.svg new file mode 100644 index 0000000..14f6008 --- /dev/null +++ b/gin_ops/static/dist/img/flags/om.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pa.svg b/gin_ops/static/dist/img/flags/pa.svg new file mode 100644 index 0000000..c2ca90e --- /dev/null +++ b/gin_ops/static/dist/img/flags/pa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pe.svg b/gin_ops/static/dist/img/flags/pe.svg new file mode 100644 index 0000000..c90fe2c --- /dev/null +++ b/gin_ops/static/dist/img/flags/pe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pf.svg b/gin_ops/static/dist/img/flags/pf.svg new file mode 100644 index 0000000..d242e68 --- /dev/null +++ b/gin_ops/static/dist/img/flags/pf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pg.svg b/gin_ops/static/dist/img/flags/pg.svg new file mode 100644 index 0000000..c98accf --- /dev/null +++ b/gin_ops/static/dist/img/flags/pg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ph.svg b/gin_ops/static/dist/img/flags/ph.svg new file mode 100644 index 0000000..0cd5c35 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pk.svg b/gin_ops/static/dist/img/flags/pk.svg new file mode 100644 index 0000000..d27d530 --- /dev/null +++ b/gin_ops/static/dist/img/flags/pk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pl.svg b/gin_ops/static/dist/img/flags/pl.svg new file mode 100644 index 0000000..077938e --- /dev/null +++ b/gin_ops/static/dist/img/flags/pl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pm.svg b/gin_ops/static/dist/img/flags/pm.svg new file mode 100644 index 0000000..272710f --- /dev/null +++ b/gin_ops/static/dist/img/flags/pm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pn.svg b/gin_ops/static/dist/img/flags/pn.svg new file mode 100644 index 0000000..fd861ef --- /dev/null +++ b/gin_ops/static/dist/img/flags/pn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pr.svg b/gin_ops/static/dist/img/flags/pr.svg new file mode 100644 index 0000000..436b4c3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/pr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ps.svg b/gin_ops/static/dist/img/flags/ps.svg new file mode 100644 index 0000000..88ed381 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pt.svg b/gin_ops/static/dist/img/flags/pt.svg new file mode 100644 index 0000000..66b0d30 --- /dev/null +++ b/gin_ops/static/dist/img/flags/pt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/pw.svg b/gin_ops/static/dist/img/flags/pw.svg new file mode 100644 index 0000000..30665c8 --- /dev/null +++ b/gin_ops/static/dist/img/flags/pw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/py.svg b/gin_ops/static/dist/img/flags/py.svg new file mode 100644 index 0000000..37df168 --- /dev/null +++ b/gin_ops/static/dist/img/flags/py.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/qa.svg b/gin_ops/static/dist/img/flags/qa.svg new file mode 100644 index 0000000..b673de7 --- /dev/null +++ b/gin_ops/static/dist/img/flags/qa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/rainbow.svg b/gin_ops/static/dist/img/flags/rainbow.svg new file mode 100644 index 0000000..088bf09 --- /dev/null +++ b/gin_ops/static/dist/img/flags/rainbow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/re.svg b/gin_ops/static/dist/img/flags/re.svg new file mode 100644 index 0000000..a0b5882 --- /dev/null +++ b/gin_ops/static/dist/img/flags/re.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ro.svg b/gin_ops/static/dist/img/flags/ro.svg new file mode 100644 index 0000000..890b443 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/rs.svg b/gin_ops/static/dist/img/flags/rs.svg new file mode 100644 index 0000000..f55241a --- /dev/null +++ b/gin_ops/static/dist/img/flags/rs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ru.svg b/gin_ops/static/dist/img/flags/ru.svg new file mode 100644 index 0000000..f4a21e9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ru.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/rw.svg b/gin_ops/static/dist/img/flags/rw.svg new file mode 100644 index 0000000..26d6283 --- /dev/null +++ b/gin_ops/static/dist/img/flags/rw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sa.svg b/gin_ops/static/dist/img/flags/sa.svg new file mode 100644 index 0000000..9d864ff --- /dev/null +++ b/gin_ops/static/dist/img/flags/sa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sb.svg b/gin_ops/static/dist/img/flags/sb.svg new file mode 100644 index 0000000..414a72c --- /dev/null +++ b/gin_ops/static/dist/img/flags/sb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sc.svg b/gin_ops/static/dist/img/flags/sc.svg new file mode 100644 index 0000000..3856843 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sd.svg b/gin_ops/static/dist/img/flags/sd.svg new file mode 100644 index 0000000..b004520 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/se.svg b/gin_ops/static/dist/img/flags/se.svg new file mode 100644 index 0000000..50381b3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/se.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sg.svg b/gin_ops/static/dist/img/flags/sg.svg new file mode 100644 index 0000000..dbf6da3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sh.svg b/gin_ops/static/dist/img/flags/sh.svg new file mode 100644 index 0000000..83973cf --- /dev/null +++ b/gin_ops/static/dist/img/flags/sh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/si.svg b/gin_ops/static/dist/img/flags/si.svg new file mode 100644 index 0000000..f9741c4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/si.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sj.svg b/gin_ops/static/dist/img/flags/sj.svg new file mode 100644 index 0000000..6d4faf9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sk.svg b/gin_ops/static/dist/img/flags/sk.svg new file mode 100644 index 0000000..13f3a4b --- /dev/null +++ b/gin_ops/static/dist/img/flags/sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sl.svg b/gin_ops/static/dist/img/flags/sl.svg new file mode 100644 index 0000000..a2e1611 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sm.svg b/gin_ops/static/dist/img/flags/sm.svg new file mode 100644 index 0000000..ebbae2d --- /dev/null +++ b/gin_ops/static/dist/img/flags/sm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sn.svg b/gin_ops/static/dist/img/flags/sn.svg new file mode 100644 index 0000000..b4afe8b --- /dev/null +++ b/gin_ops/static/dist/img/flags/sn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/so.svg b/gin_ops/static/dist/img/flags/so.svg new file mode 100644 index 0000000..4ffd813 --- /dev/null +++ b/gin_ops/static/dist/img/flags/so.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sr.svg b/gin_ops/static/dist/img/flags/sr.svg new file mode 100644 index 0000000..899057a --- /dev/null +++ b/gin_ops/static/dist/img/flags/sr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ss.svg b/gin_ops/static/dist/img/flags/ss.svg new file mode 100644 index 0000000..7699206 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/st.svg b/gin_ops/static/dist/img/flags/st.svg new file mode 100644 index 0000000..222cab4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sv.svg b/gin_ops/static/dist/img/flags/sv.svg new file mode 100644 index 0000000..468d3ca --- /dev/null +++ b/gin_ops/static/dist/img/flags/sv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sx.svg b/gin_ops/static/dist/img/flags/sx.svg new file mode 100644 index 0000000..b4b4180 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sy.svg b/gin_ops/static/dist/img/flags/sy.svg new file mode 100644 index 0000000..d79e890 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/sz.svg b/gin_ops/static/dist/img/flags/sz.svg new file mode 100644 index 0000000..bf9a2b5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/sz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tc.svg b/gin_ops/static/dist/img/flags/tc.svg new file mode 100644 index 0000000..570ff3b --- /dev/null +++ b/gin_ops/static/dist/img/flags/tc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/td.svg b/gin_ops/static/dist/img/flags/td.svg new file mode 100644 index 0000000..342f2a8 --- /dev/null +++ b/gin_ops/static/dist/img/flags/td.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tf.svg b/gin_ops/static/dist/img/flags/tf.svg new file mode 100644 index 0000000..74e3b82 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tg.svg b/gin_ops/static/dist/img/flags/tg.svg new file mode 100644 index 0000000..5edd58b --- /dev/null +++ b/gin_ops/static/dist/img/flags/tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/th.svg b/gin_ops/static/dist/img/flags/th.svg new file mode 100644 index 0000000..64f970f --- /dev/null +++ b/gin_ops/static/dist/img/flags/th.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tj.svg b/gin_ops/static/dist/img/flags/tj.svg new file mode 100644 index 0000000..c935f21 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tk.svg b/gin_ops/static/dist/img/flags/tk.svg new file mode 100644 index 0000000..4f17c64 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tl.svg b/gin_ops/static/dist/img/flags/tl.svg new file mode 100644 index 0000000..5737e34 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tm.svg b/gin_ops/static/dist/img/flags/tm.svg new file mode 100644 index 0000000..af6eee5 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tn.svg b/gin_ops/static/dist/img/flags/tn.svg new file mode 100644 index 0000000..2a9814d --- /dev/null +++ b/gin_ops/static/dist/img/flags/tn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/to.svg b/gin_ops/static/dist/img/flags/to.svg new file mode 100644 index 0000000..de7ede4 --- /dev/null +++ b/gin_ops/static/dist/img/flags/to.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tr.svg b/gin_ops/static/dist/img/flags/tr.svg new file mode 100644 index 0000000..7aa86ae --- /dev/null +++ b/gin_ops/static/dist/img/flags/tr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tt.svg b/gin_ops/static/dist/img/flags/tt.svg new file mode 100644 index 0000000..fcbaf71 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tv.svg b/gin_ops/static/dist/img/flags/tv.svg new file mode 100644 index 0000000..925154f --- /dev/null +++ b/gin_ops/static/dist/img/flags/tv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tw.svg b/gin_ops/static/dist/img/flags/tw.svg new file mode 100644 index 0000000..6a27803 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/tz.svg b/gin_ops/static/dist/img/flags/tz.svg new file mode 100644 index 0000000..f637a01 --- /dev/null +++ b/gin_ops/static/dist/img/flags/tz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ua.svg b/gin_ops/static/dist/img/flags/ua.svg new file mode 100644 index 0000000..e34a89f --- /dev/null +++ b/gin_ops/static/dist/img/flags/ua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ug.svg b/gin_ops/static/dist/img/flags/ug.svg new file mode 100644 index 0000000..c05790f --- /dev/null +++ b/gin_ops/static/dist/img/flags/ug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/um.svg b/gin_ops/static/dist/img/flags/um.svg new file mode 100644 index 0000000..652dc40 --- /dev/null +++ b/gin_ops/static/dist/img/flags/um.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/unasur.svg b/gin_ops/static/dist/img/flags/unasur.svg new file mode 100644 index 0000000..0e97962 --- /dev/null +++ b/gin_ops/static/dist/img/flags/unasur.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/us.svg b/gin_ops/static/dist/img/flags/us.svg new file mode 100644 index 0000000..652dc40 --- /dev/null +++ b/gin_ops/static/dist/img/flags/us.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/uy.svg b/gin_ops/static/dist/img/flags/uy.svg new file mode 100644 index 0000000..33db154 --- /dev/null +++ b/gin_ops/static/dist/img/flags/uy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/uz.svg b/gin_ops/static/dist/img/flags/uz.svg new file mode 100644 index 0000000..239f01e --- /dev/null +++ b/gin_ops/static/dist/img/flags/uz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/va.svg b/gin_ops/static/dist/img/flags/va.svg new file mode 100644 index 0000000..e93ff55 --- /dev/null +++ b/gin_ops/static/dist/img/flags/va.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/vc.svg b/gin_ops/static/dist/img/flags/vc.svg new file mode 100644 index 0000000..44cf879 --- /dev/null +++ b/gin_ops/static/dist/img/flags/vc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ve.svg b/gin_ops/static/dist/img/flags/ve.svg new file mode 100644 index 0000000..3057685 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/vg.svg b/gin_ops/static/dist/img/flags/vg.svg new file mode 100644 index 0000000..e365306 --- /dev/null +++ b/gin_ops/static/dist/img/flags/vg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/vi.svg b/gin_ops/static/dist/img/flags/vi.svg new file mode 100644 index 0000000..52db69b --- /dev/null +++ b/gin_ops/static/dist/img/flags/vi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/vn.svg b/gin_ops/static/dist/img/flags/vn.svg new file mode 100644 index 0000000..996c2d3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/vn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/vu.svg b/gin_ops/static/dist/img/flags/vu.svg new file mode 100644 index 0000000..2a9ad50 --- /dev/null +++ b/gin_ops/static/dist/img/flags/vu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/wf.svg b/gin_ops/static/dist/img/flags/wf.svg new file mode 100644 index 0000000..16b4e9c --- /dev/null +++ b/gin_ops/static/dist/img/flags/wf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ws.svg b/gin_ops/static/dist/img/flags/ws.svg new file mode 100644 index 0000000..fd4a8a9 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ws.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/ye.svg b/gin_ops/static/dist/img/flags/ye.svg new file mode 100644 index 0000000..11e6a56 --- /dev/null +++ b/gin_ops/static/dist/img/flags/ye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/yt.svg b/gin_ops/static/dist/img/flags/yt.svg new file mode 100644 index 0000000..9120272 --- /dev/null +++ b/gin_ops/static/dist/img/flags/yt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/za.svg b/gin_ops/static/dist/img/flags/za.svg new file mode 100644 index 0000000..867bfe3 --- /dev/null +++ b/gin_ops/static/dist/img/flags/za.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/zm.svg b/gin_ops/static/dist/img/flags/zm.svg new file mode 100644 index 0000000..a0484ab --- /dev/null +++ b/gin_ops/static/dist/img/flags/zm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/flags/zw.svg b/gin_ops/static/dist/img/flags/zw.svg new file mode 100644 index 0000000..47e5efe --- /dev/null +++ b/gin_ops/static/dist/img/flags/zw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/2checkout-dark.svg b/gin_ops/static/dist/img/payments/2checkout-dark.svg new file mode 100644 index 0000000..55fa29a --- /dev/null +++ b/gin_ops/static/dist/img/payments/2checkout-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/2checkout.svg b/gin_ops/static/dist/img/payments/2checkout.svg new file mode 100644 index 0000000..c9bedf5 --- /dev/null +++ b/gin_ops/static/dist/img/payments/2checkout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/alipay-dark.svg b/gin_ops/static/dist/img/payments/alipay-dark.svg new file mode 100644 index 0000000..75c4cb8 --- /dev/null +++ b/gin_ops/static/dist/img/payments/alipay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/alipay.svg b/gin_ops/static/dist/img/payments/alipay.svg new file mode 100644 index 0000000..9b14e57 --- /dev/null +++ b/gin_ops/static/dist/img/payments/alipay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/amazon-dark.svg b/gin_ops/static/dist/img/payments/amazon-dark.svg new file mode 100644 index 0000000..c0f5761 --- /dev/null +++ b/gin_ops/static/dist/img/payments/amazon-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/amazon.svg b/gin_ops/static/dist/img/payments/amazon.svg new file mode 100644 index 0000000..0560260 --- /dev/null +++ b/gin_ops/static/dist/img/payments/amazon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/americanexpress-dark.svg b/gin_ops/static/dist/img/payments/americanexpress-dark.svg new file mode 100644 index 0000000..9372150 --- /dev/null +++ b/gin_ops/static/dist/img/payments/americanexpress-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/americanexpress.svg b/gin_ops/static/dist/img/payments/americanexpress.svg new file mode 100644 index 0000000..9d1da2e --- /dev/null +++ b/gin_ops/static/dist/img/payments/americanexpress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/applepay-dark.svg b/gin_ops/static/dist/img/payments/applepay-dark.svg new file mode 100644 index 0000000..45313fc --- /dev/null +++ b/gin_ops/static/dist/img/payments/applepay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/applepay.svg b/gin_ops/static/dist/img/payments/applepay.svg new file mode 100644 index 0000000..447de26 --- /dev/null +++ b/gin_ops/static/dist/img/payments/applepay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/bancontact-dark.svg b/gin_ops/static/dist/img/payments/bancontact-dark.svg new file mode 100644 index 0000000..0209208 --- /dev/null +++ b/gin_ops/static/dist/img/payments/bancontact-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/bancontact.svg b/gin_ops/static/dist/img/payments/bancontact.svg new file mode 100644 index 0000000..da4d41f --- /dev/null +++ b/gin_ops/static/dist/img/payments/bancontact.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/bitcoin-dark.svg b/gin_ops/static/dist/img/payments/bitcoin-dark.svg new file mode 100644 index 0000000..f0e63fa --- /dev/null +++ b/gin_ops/static/dist/img/payments/bitcoin-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/bitcoin.svg b/gin_ops/static/dist/img/payments/bitcoin.svg new file mode 100644 index 0000000..ee8fa45 --- /dev/null +++ b/gin_ops/static/dist/img/payments/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/bitpay-dark.svg b/gin_ops/static/dist/img/payments/bitpay-dark.svg new file mode 100644 index 0000000..d775dfb --- /dev/null +++ b/gin_ops/static/dist/img/payments/bitpay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/bitpay.svg b/gin_ops/static/dist/img/payments/bitpay.svg new file mode 100644 index 0000000..3720819 --- /dev/null +++ b/gin_ops/static/dist/img/payments/bitpay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/blik-dark.svg b/gin_ops/static/dist/img/payments/blik-dark.svg new file mode 100644 index 0000000..ec6e110 --- /dev/null +++ b/gin_ops/static/dist/img/payments/blik-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/blik.svg b/gin_ops/static/dist/img/payments/blik.svg new file mode 100644 index 0000000..b44c11d --- /dev/null +++ b/gin_ops/static/dist/img/payments/blik.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/cirrus-dark.svg b/gin_ops/static/dist/img/payments/cirrus-dark.svg new file mode 100644 index 0000000..b000f12 --- /dev/null +++ b/gin_ops/static/dist/img/payments/cirrus-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/cirrus.svg b/gin_ops/static/dist/img/payments/cirrus.svg new file mode 100644 index 0000000..f3848c8 --- /dev/null +++ b/gin_ops/static/dist/img/payments/cirrus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/clickandbuy-dark.svg b/gin_ops/static/dist/img/payments/clickandbuy-dark.svg new file mode 100644 index 0000000..d813c7e --- /dev/null +++ b/gin_ops/static/dist/img/payments/clickandbuy-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/clickandbuy.svg b/gin_ops/static/dist/img/payments/clickandbuy.svg new file mode 100644 index 0000000..58d0ba9 --- /dev/null +++ b/gin_ops/static/dist/img/payments/clickandbuy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/coinkite-dark.svg b/gin_ops/static/dist/img/payments/coinkite-dark.svg new file mode 100644 index 0000000..885ca6e --- /dev/null +++ b/gin_ops/static/dist/img/payments/coinkite-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/coinkite.svg b/gin_ops/static/dist/img/payments/coinkite.svg new file mode 100644 index 0000000..cbe194e --- /dev/null +++ b/gin_ops/static/dist/img/payments/coinkite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/dinersclub-dark.svg b/gin_ops/static/dist/img/payments/dinersclub-dark.svg new file mode 100644 index 0000000..5d26f69 --- /dev/null +++ b/gin_ops/static/dist/img/payments/dinersclub-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/dinersclub.svg b/gin_ops/static/dist/img/payments/dinersclub.svg new file mode 100644 index 0000000..e1e0a55 --- /dev/null +++ b/gin_ops/static/dist/img/payments/dinersclub.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/directdebit-dark.svg b/gin_ops/static/dist/img/payments/directdebit-dark.svg new file mode 100644 index 0000000..c5091ee --- /dev/null +++ b/gin_ops/static/dist/img/payments/directdebit-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/directdebit.svg b/gin_ops/static/dist/img/payments/directdebit.svg new file mode 100644 index 0000000..e3edb0c --- /dev/null +++ b/gin_ops/static/dist/img/payments/directdebit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/discover-dark.svg b/gin_ops/static/dist/img/payments/discover-dark.svg new file mode 100644 index 0000000..d6a51f0 --- /dev/null +++ b/gin_ops/static/dist/img/payments/discover-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/discover.svg b/gin_ops/static/dist/img/payments/discover.svg new file mode 100644 index 0000000..cf8fdb1 --- /dev/null +++ b/gin_ops/static/dist/img/payments/discover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/dotpay-dark.svg b/gin_ops/static/dist/img/payments/dotpay-dark.svg new file mode 100644 index 0000000..2e350d4 --- /dev/null +++ b/gin_ops/static/dist/img/payments/dotpay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/dotpay.svg b/gin_ops/static/dist/img/payments/dotpay.svg new file mode 100644 index 0000000..75cd670 --- /dev/null +++ b/gin_ops/static/dist/img/payments/dotpay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/dwolla-dark.svg b/gin_ops/static/dist/img/payments/dwolla-dark.svg new file mode 100644 index 0000000..63fee0e --- /dev/null +++ b/gin_ops/static/dist/img/payments/dwolla-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/dwolla.svg b/gin_ops/static/dist/img/payments/dwolla.svg new file mode 100644 index 0000000..f8088ed --- /dev/null +++ b/gin_ops/static/dist/img/payments/dwolla.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ebay-dark.svg b/gin_ops/static/dist/img/payments/ebay-dark.svg new file mode 100644 index 0000000..eac7a2d --- /dev/null +++ b/gin_ops/static/dist/img/payments/ebay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ebay.svg b/gin_ops/static/dist/img/payments/ebay.svg new file mode 100644 index 0000000..1a457a3 --- /dev/null +++ b/gin_ops/static/dist/img/payments/ebay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/epayco-dark.svg b/gin_ops/static/dist/img/payments/epayco-dark.svg new file mode 100644 index 0000000..fa1a57f --- /dev/null +++ b/gin_ops/static/dist/img/payments/epayco-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/epayco.svg b/gin_ops/static/dist/img/payments/epayco.svg new file mode 100644 index 0000000..f6bd40f --- /dev/null +++ b/gin_ops/static/dist/img/payments/epayco.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/eway-dark.svg b/gin_ops/static/dist/img/payments/eway-dark.svg new file mode 100644 index 0000000..d98f441 --- /dev/null +++ b/gin_ops/static/dist/img/payments/eway-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/eway.svg b/gin_ops/static/dist/img/payments/eway.svg new file mode 100644 index 0000000..a81bc7a --- /dev/null +++ b/gin_ops/static/dist/img/payments/eway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/giropay-dark.svg b/gin_ops/static/dist/img/payments/giropay-dark.svg new file mode 100644 index 0000000..4c78284 --- /dev/null +++ b/gin_ops/static/dist/img/payments/giropay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/giropay.svg b/gin_ops/static/dist/img/payments/giropay.svg new file mode 100644 index 0000000..61223fd --- /dev/null +++ b/gin_ops/static/dist/img/payments/giropay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/googlewallet-dark.svg b/gin_ops/static/dist/img/payments/googlewallet-dark.svg new file mode 100644 index 0000000..032c9b6 --- /dev/null +++ b/gin_ops/static/dist/img/payments/googlewallet-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/googlewallet.svg b/gin_ops/static/dist/img/payments/googlewallet.svg new file mode 100644 index 0000000..bad376e --- /dev/null +++ b/gin_ops/static/dist/img/payments/googlewallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ingenico-dark.svg b/gin_ops/static/dist/img/payments/ingenico-dark.svg new file mode 100644 index 0000000..af3b577 --- /dev/null +++ b/gin_ops/static/dist/img/payments/ingenico-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ingenico.svg b/gin_ops/static/dist/img/payments/ingenico.svg new file mode 100644 index 0000000..7a7f306 --- /dev/null +++ b/gin_ops/static/dist/img/payments/ingenico.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/jcb-dark.svg b/gin_ops/static/dist/img/payments/jcb-dark.svg new file mode 100644 index 0000000..7b503b9 --- /dev/null +++ b/gin_ops/static/dist/img/payments/jcb-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/jcb.svg b/gin_ops/static/dist/img/payments/jcb.svg new file mode 100644 index 0000000..5bdf388 --- /dev/null +++ b/gin_ops/static/dist/img/payments/jcb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/klarna-dark.svg b/gin_ops/static/dist/img/payments/klarna-dark.svg new file mode 100644 index 0000000..119037f --- /dev/null +++ b/gin_ops/static/dist/img/payments/klarna-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/klarna.svg b/gin_ops/static/dist/img/payments/klarna.svg new file mode 100644 index 0000000..b9c913b --- /dev/null +++ b/gin_ops/static/dist/img/payments/klarna.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/laser-dark.svg b/gin_ops/static/dist/img/payments/laser-dark.svg new file mode 100644 index 0000000..93095a6 --- /dev/null +++ b/gin_ops/static/dist/img/payments/laser-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/laser.svg b/gin_ops/static/dist/img/payments/laser.svg new file mode 100644 index 0000000..f34555c --- /dev/null +++ b/gin_ops/static/dist/img/payments/laser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/maestro-dark.svg b/gin_ops/static/dist/img/payments/maestro-dark.svg new file mode 100644 index 0000000..c88d14d --- /dev/null +++ b/gin_ops/static/dist/img/payments/maestro-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/maestro.svg b/gin_ops/static/dist/img/payments/maestro.svg new file mode 100644 index 0000000..fe6480e --- /dev/null +++ b/gin_ops/static/dist/img/payments/maestro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/mastercard-dark.svg b/gin_ops/static/dist/img/payments/mastercard-dark.svg new file mode 100644 index 0000000..76ad1ef --- /dev/null +++ b/gin_ops/static/dist/img/payments/mastercard-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/mastercard.svg b/gin_ops/static/dist/img/payments/mastercard.svg new file mode 100644 index 0000000..4b4fc5f --- /dev/null +++ b/gin_ops/static/dist/img/payments/mastercard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/mir-dark.svg b/gin_ops/static/dist/img/payments/mir-dark.svg new file mode 100644 index 0000000..971cadc --- /dev/null +++ b/gin_ops/static/dist/img/payments/mir-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/mir.svg b/gin_ops/static/dist/img/payments/mir.svg new file mode 100644 index 0000000..c55bff9 --- /dev/null +++ b/gin_ops/static/dist/img/payments/mir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/monero-dark.svg b/gin_ops/static/dist/img/payments/monero-dark.svg new file mode 100644 index 0000000..6c54579 --- /dev/null +++ b/gin_ops/static/dist/img/payments/monero-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/monero.svg b/gin_ops/static/dist/img/payments/monero.svg new file mode 100644 index 0000000..b5af0df --- /dev/null +++ b/gin_ops/static/dist/img/payments/monero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/neteller-dark.svg b/gin_ops/static/dist/img/payments/neteller-dark.svg new file mode 100644 index 0000000..7a63a79 --- /dev/null +++ b/gin_ops/static/dist/img/payments/neteller-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/neteller.svg b/gin_ops/static/dist/img/payments/neteller.svg new file mode 100644 index 0000000..965059a --- /dev/null +++ b/gin_ops/static/dist/img/payments/neteller.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ogone-dark.svg b/gin_ops/static/dist/img/payments/ogone-dark.svg new file mode 100644 index 0000000..dd09a9a --- /dev/null +++ b/gin_ops/static/dist/img/payments/ogone-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ogone.svg b/gin_ops/static/dist/img/payments/ogone.svg new file mode 100644 index 0000000..b970c4f --- /dev/null +++ b/gin_ops/static/dist/img/payments/ogone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/okpay-dark.svg b/gin_ops/static/dist/img/payments/okpay-dark.svg new file mode 100644 index 0000000..c09dcca --- /dev/null +++ b/gin_ops/static/dist/img/payments/okpay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/okpay.svg b/gin_ops/static/dist/img/payments/okpay.svg new file mode 100644 index 0000000..f811d50 --- /dev/null +++ b/gin_ops/static/dist/img/payments/okpay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paybox-dark.svg b/gin_ops/static/dist/img/payments/paybox-dark.svg new file mode 100644 index 0000000..f624622 --- /dev/null +++ b/gin_ops/static/dist/img/payments/paybox-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paybox.svg b/gin_ops/static/dist/img/payments/paybox.svg new file mode 100644 index 0000000..d75a447 --- /dev/null +++ b/gin_ops/static/dist/img/payments/paybox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paymill-dark.svg b/gin_ops/static/dist/img/payments/paymill-dark.svg new file mode 100644 index 0000000..f3651ac --- /dev/null +++ b/gin_ops/static/dist/img/payments/paymill-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paymill.svg b/gin_ops/static/dist/img/payments/paymill.svg new file mode 100644 index 0000000..4a2c07f --- /dev/null +++ b/gin_ops/static/dist/img/payments/paymill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payone-dark.svg b/gin_ops/static/dist/img/payments/payone-dark.svg new file mode 100644 index 0000000..a0d3f8e --- /dev/null +++ b/gin_ops/static/dist/img/payments/payone-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payone.svg b/gin_ops/static/dist/img/payments/payone.svg new file mode 100644 index 0000000..d88bbc6 --- /dev/null +++ b/gin_ops/static/dist/img/payments/payone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payoneer-dark.svg b/gin_ops/static/dist/img/payments/payoneer-dark.svg new file mode 100644 index 0000000..9a168ec --- /dev/null +++ b/gin_ops/static/dist/img/payments/payoneer-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payoneer.svg b/gin_ops/static/dist/img/payments/payoneer.svg new file mode 100644 index 0000000..206cc3a --- /dev/null +++ b/gin_ops/static/dist/img/payments/payoneer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paypal-dark.svg b/gin_ops/static/dist/img/payments/paypal-dark.svg new file mode 100644 index 0000000..a905f56 --- /dev/null +++ b/gin_ops/static/dist/img/payments/paypal-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paypal.svg b/gin_ops/static/dist/img/payments/paypal.svg new file mode 100644 index 0000000..12b3852 --- /dev/null +++ b/gin_ops/static/dist/img/payments/paypal.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paysafecard-dark.svg b/gin_ops/static/dist/img/payments/paysafecard-dark.svg new file mode 100644 index 0000000..06b94e9 --- /dev/null +++ b/gin_ops/static/dist/img/payments/paysafecard-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/paysafecard.svg b/gin_ops/static/dist/img/payments/paysafecard.svg new file mode 100644 index 0000000..05672f2 --- /dev/null +++ b/gin_ops/static/dist/img/payments/paysafecard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payu-dark.svg b/gin_ops/static/dist/img/payments/payu-dark.svg new file mode 100644 index 0000000..d745119 --- /dev/null +++ b/gin_ops/static/dist/img/payments/payu-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payu.svg b/gin_ops/static/dist/img/payments/payu.svg new file mode 100644 index 0000000..1b9e5b9 --- /dev/null +++ b/gin_ops/static/dist/img/payments/payu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payza-dark.svg b/gin_ops/static/dist/img/payments/payza-dark.svg new file mode 100644 index 0000000..ba3018d --- /dev/null +++ b/gin_ops/static/dist/img/payments/payza-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/payza.svg b/gin_ops/static/dist/img/payments/payza.svg new file mode 100644 index 0000000..5e92b4b --- /dev/null +++ b/gin_ops/static/dist/img/payments/payza.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/przelewy24-dark.svg b/gin_ops/static/dist/img/payments/przelewy24-dark.svg new file mode 100644 index 0000000..6a2a308 --- /dev/null +++ b/gin_ops/static/dist/img/payments/przelewy24-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/przelewy24.svg b/gin_ops/static/dist/img/payments/przelewy24.svg new file mode 100644 index 0000000..23b079c --- /dev/null +++ b/gin_ops/static/dist/img/payments/przelewy24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ripple-dark.svg b/gin_ops/static/dist/img/payments/ripple-dark.svg new file mode 100644 index 0000000..a5caec0 --- /dev/null +++ b/gin_ops/static/dist/img/payments/ripple-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ripple.svg b/gin_ops/static/dist/img/payments/ripple.svg new file mode 100644 index 0000000..63acd39 --- /dev/null +++ b/gin_ops/static/dist/img/payments/ripple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/sage-dark.svg b/gin_ops/static/dist/img/payments/sage-dark.svg new file mode 100644 index 0000000..22eab06 --- /dev/null +++ b/gin_ops/static/dist/img/payments/sage-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/sage.svg b/gin_ops/static/dist/img/payments/sage.svg new file mode 100644 index 0000000..a3e9fb1 --- /dev/null +++ b/gin_ops/static/dist/img/payments/sage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/sepa-dark.svg b/gin_ops/static/dist/img/payments/sepa-dark.svg new file mode 100644 index 0000000..ee173e2 --- /dev/null +++ b/gin_ops/static/dist/img/payments/sepa-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/sepa.svg b/gin_ops/static/dist/img/payments/sepa.svg new file mode 100644 index 0000000..809e647 --- /dev/null +++ b/gin_ops/static/dist/img/payments/sepa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/shopify-dark.svg b/gin_ops/static/dist/img/payments/shopify-dark.svg new file mode 100644 index 0000000..9393699 --- /dev/null +++ b/gin_ops/static/dist/img/payments/shopify-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/shopify.svg b/gin_ops/static/dist/img/payments/shopify.svg new file mode 100644 index 0000000..d4b096e --- /dev/null +++ b/gin_ops/static/dist/img/payments/shopify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/skrill-dark.svg b/gin_ops/static/dist/img/payments/skrill-dark.svg new file mode 100644 index 0000000..47e1ad7 --- /dev/null +++ b/gin_ops/static/dist/img/payments/skrill-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/skrill.svg b/gin_ops/static/dist/img/payments/skrill.svg new file mode 100644 index 0000000..bf8a67f --- /dev/null +++ b/gin_ops/static/dist/img/payments/skrill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/solo-dark.svg b/gin_ops/static/dist/img/payments/solo-dark.svg new file mode 100644 index 0000000..a973d20 --- /dev/null +++ b/gin_ops/static/dist/img/payments/solo-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/solo.svg b/gin_ops/static/dist/img/payments/solo.svg new file mode 100644 index 0000000..bdfa28c --- /dev/null +++ b/gin_ops/static/dist/img/payments/solo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/square-dark.svg b/gin_ops/static/dist/img/payments/square-dark.svg new file mode 100644 index 0000000..7edf435 --- /dev/null +++ b/gin_ops/static/dist/img/payments/square-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/square.svg b/gin_ops/static/dist/img/payments/square.svg new file mode 100644 index 0000000..db0821a --- /dev/null +++ b/gin_ops/static/dist/img/payments/square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/stripe-dark.svg b/gin_ops/static/dist/img/payments/stripe-dark.svg new file mode 100644 index 0000000..de6183d --- /dev/null +++ b/gin_ops/static/dist/img/payments/stripe-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/stripe.svg b/gin_ops/static/dist/img/payments/stripe.svg new file mode 100644 index 0000000..4c42d8e --- /dev/null +++ b/gin_ops/static/dist/img/payments/stripe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/switch-dark.svg b/gin_ops/static/dist/img/payments/switch-dark.svg new file mode 100644 index 0000000..41a2a9a --- /dev/null +++ b/gin_ops/static/dist/img/payments/switch-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/switch.svg b/gin_ops/static/dist/img/payments/switch.svg new file mode 100644 index 0000000..4d64823 --- /dev/null +++ b/gin_ops/static/dist/img/payments/switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/tpay-dark.svg b/gin_ops/static/dist/img/payments/tpay-dark.svg new file mode 100644 index 0000000..0b20da0 --- /dev/null +++ b/gin_ops/static/dist/img/payments/tpay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/tpay.svg b/gin_ops/static/dist/img/payments/tpay.svg new file mode 100644 index 0000000..540e69b --- /dev/null +++ b/gin_ops/static/dist/img/payments/tpay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ukash-dark.svg b/gin_ops/static/dist/img/payments/ukash-dark.svg new file mode 100644 index 0000000..d2ed42e --- /dev/null +++ b/gin_ops/static/dist/img/payments/ukash-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/ukash.svg b/gin_ops/static/dist/img/payments/ukash.svg new file mode 100644 index 0000000..1a89e5a --- /dev/null +++ b/gin_ops/static/dist/img/payments/ukash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/unionpay-dark.svg b/gin_ops/static/dist/img/payments/unionpay-dark.svg new file mode 100644 index 0000000..b9e7eab --- /dev/null +++ b/gin_ops/static/dist/img/payments/unionpay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/unionpay.svg b/gin_ops/static/dist/img/payments/unionpay.svg new file mode 100644 index 0000000..3014168 --- /dev/null +++ b/gin_ops/static/dist/img/payments/unionpay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/verifone-dark.svg b/gin_ops/static/dist/img/payments/verifone-dark.svg new file mode 100644 index 0000000..1281081 --- /dev/null +++ b/gin_ops/static/dist/img/payments/verifone-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/verifone.svg b/gin_ops/static/dist/img/payments/verifone.svg new file mode 100644 index 0000000..a5033a6 --- /dev/null +++ b/gin_ops/static/dist/img/payments/verifone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/verisign-dark.svg b/gin_ops/static/dist/img/payments/verisign-dark.svg new file mode 100644 index 0000000..2ccfd5e --- /dev/null +++ b/gin_ops/static/dist/img/payments/verisign-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/verisign.svg b/gin_ops/static/dist/img/payments/verisign.svg new file mode 100644 index 0000000..645cf12 --- /dev/null +++ b/gin_ops/static/dist/img/payments/verisign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/visa-dark.svg b/gin_ops/static/dist/img/payments/visa-dark.svg new file mode 100644 index 0000000..5839bc2 --- /dev/null +++ b/gin_ops/static/dist/img/payments/visa-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/visa.svg b/gin_ops/static/dist/img/payments/visa.svg new file mode 100644 index 0000000..efaafc3 --- /dev/null +++ b/gin_ops/static/dist/img/payments/visa.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/webmoney-dark.svg b/gin_ops/static/dist/img/payments/webmoney-dark.svg new file mode 100644 index 0000000..568fc93 --- /dev/null +++ b/gin_ops/static/dist/img/payments/webmoney-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/webmoney.svg b/gin_ops/static/dist/img/payments/webmoney.svg new file mode 100644 index 0000000..d5c36f7 --- /dev/null +++ b/gin_ops/static/dist/img/payments/webmoney.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/westernunion-dark.svg b/gin_ops/static/dist/img/payments/westernunion-dark.svg new file mode 100644 index 0000000..433bd7d --- /dev/null +++ b/gin_ops/static/dist/img/payments/westernunion-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/westernunion.svg b/gin_ops/static/dist/img/payments/westernunion.svg new file mode 100644 index 0000000..5a1c97c --- /dev/null +++ b/gin_ops/static/dist/img/payments/westernunion.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/worldpay-dark.svg b/gin_ops/static/dist/img/payments/worldpay-dark.svg new file mode 100644 index 0000000..24a6abb --- /dev/null +++ b/gin_ops/static/dist/img/payments/worldpay-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/img/payments/worldpay.svg b/gin_ops/static/dist/img/payments/worldpay.svg new file mode 100644 index 0000000..858f629 --- /dev/null +++ b/gin_ops/static/dist/img/payments/worldpay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gin_ops/static/dist/js/axios.min.js b/gin_ops/static/dist/js/axios.min.js new file mode 100644 index 0000000..f78c2d6 --- /dev/null +++ b/gin_ops/static/dist/js/axios.min.js @@ -0,0 +1,3 @@ +/*! Axios v1.8.4 Copyright (c) 2025 Matt Zabriskie and contributors */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),s=a.value,u=s instanceof t;Promise.resolve(u?s.v:s).then((function(t){if(u){var n="return"===r?"return":"next";if(!s.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var s={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=s:(r=n=s,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(t){return function(){return new e(t.apply(this,arguments))}}function p(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){p(i,n,o,a,s,"next",e)}function s(e){p(i,n,o,a,s,"throw",e)}a(void 0)}))}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),N(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Z=function(e){return!_(e)&&e!==Q};var ee,te=(ee="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return ee&&e instanceof ee}),re=P("HTMLFormElement"),ne=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),oe=P("RegExp"),ie=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};$(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)};var ae,se,ue,ce,fe=P("AsyncFunction"),le=(ae="function"==typeof setImmediate,se=F(Q.postMessage),ae?setImmediate:se?(ue="axios@".concat(Math.random()),ce=[],Q.addEventListener("message",(function(e){var t=e.source,r=e.data;t===Q&&r===ue&&ce.length&&ce.shift()()}),!1),function(e){ce.push(e),Q.postMessage(ue,"*")}):function(e){return setTimeout(e)}),pe="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Q):"undefined"!=typeof process&&process.nextTick||le,he={isArray:N,isArrayBuffer:C,isBuffer:function(e){return null!==e&&!_(e)&&null!==e.constructor&&!_(e.constructor)&&F(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||F(e.append)&&("formdata"===(t=A(e))||"object"===t&&F(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&C(e.buffer)},isString:U,isNumber:B,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:q,isReadableStream:K,isRequest:V,isResponse:G,isHeaders:X,isUndefined:_,isDate:I,isFile:M,isBlob:z,isRegExp:oe,isFunction:F,isStream:function(e){return D(e)&&F(e.pipe)},isURLSearchParams:J,isTypedArray:te,isFileList:H,forEach:$,merge:function e(){for(var t=Z(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&Y(n,o)||o;q(n[i])&&q(t)?n[i]=e(n[i],t):q(t)?n[i]=e({},t):N(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return $(t,(function(t,n){r&&F(t)?e[n]=R(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:A,kindOfTest:P,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(N(e))return e;var t=e.length;if(!B(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:re,hasOwnProperty:ne,hasOwnProp:ne,reduceDescriptors:ie,freezeMethods:function(e){ie(e,(function(t,r){if(F(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];F(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return N(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:Y,global:Q,isContextDefined:Z,isSpecCompliantForm:function(e){return!!(e&&F(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=N(r)?[]:{};return $(r,(function(t,r){var i=e(t,n+1);!_(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:fe,isThenable:function(e){return e&&(D(e)||F(e))&&F(e.then)&&F(e.catch)},setImmediate:le,asap:pe};function de(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}he.inherits(de,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:he.toJSONObject(this.config),code:this.code,status:this.status}}});var ve=de.prototype,ye={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){ye[e]={value:e}})),Object.defineProperties(de,ye),Object.defineProperty(ve,"isAxiosError",{value:!0}),de.from=function(e,t,r,n,o,i){var a=Object.create(ve);return he.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),de.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function me(e){return he.isPlainObject(e)||he.isArray(e)}function be(e){return he.endsWith(e,"[]")?e.slice(0,-2):e}function ge(e,t,r){return e?e.concat(t).map((function(e,t){return e=be(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var we=he.toFlatObject(he,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Ee(e,t,r){if(!he.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=he.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!he.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,s=(r.Blob||"undefined"!=typeof Blob&&Blob)&&he.isSpecCompliantForm(t);if(!he.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(he.isDate(e))return e.toISOString();if(!s&&he.isBlob(e))throw new de("Blob is not supported. Use a Buffer instead.");return he.isArrayBuffer(e)||he.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var s=e;if(e&&!o&&"object"===f(e))if(he.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(he.isArray(e)&&function(e){return he.isArray(e)&&!e.some(me)}(e)||(he.isFileList(e)||he.endsWith(r,"[]"))&&(s=he.toArray(e)))return r=be(r),s.forEach((function(e,n){!he.isUndefined(e)&&null!==e&&t.append(!0===a?ge([r],n,i):null===a?r:r+"[]",u(e))})),!1;return!!me(e)||(t.append(ge(o,r,i),u(e)),!1)}var l=[],p=Object.assign(we,{defaultVisitor:c,convertValue:u,isVisitable:me});if(!he.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!he.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),he.forEach(r,(function(r,i){!0===(!(he.isUndefined(r)||null===r)&&o.call(t,r,he.isString(i)?i.trim():i,n,p))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function Oe(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Se(e,t){this._pairs=[],e&&Ee(e,this,t)}var xe=Se.prototype;function Re(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ke(e,t,r){if(!t)return e;var n=r&&r.encode||Re;he.isFunction(r)&&(r={serialize:r});var o,i=r&&r.serialize;if(o=i?i(t,r):he.isURLSearchParams(t)?t.toString():new Se(t,r).toString(n)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}xe.append=function(e,t){this._pairs.push([e,t])},xe.toString=function(e){var t=e?function(t){return e.call(this,t,Oe)}:Oe;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Te=function(){function e(){d(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){he.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),je={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Ae={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Se,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Pe="undefined"!=typeof window&&"undefined"!=typeof document,Le="object"===("undefined"==typeof navigator?"undefined":f(navigator))&&navigator||void 0,Ne=Pe&&(!Le||["ReactNative","NativeScript","NS"].indexOf(Le.product)<0),_e="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Ce=Pe&&window.location.href||"http://localhost",Ue=s(s({},Object.freeze({__proto__:null,hasBrowserEnv:Pe,hasStandardBrowserWebWorkerEnv:_e,hasStandardBrowserEnv:Ne,navigator:Le,origin:Ce})),Ae);function Fe(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&he.isArray(n)?n.length:i,s?(he.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&he.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&he.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=he.isObject(e);if(i&&he.isHTMLForm(e)&&(e=new FormData(e)),he.isFormData(e))return o?JSON.stringify(Fe(e)):e;if(he.isArrayBuffer(e)||he.isBuffer(e)||he.isStream(e)||he.isFile(e)||he.isBlob(e)||he.isReadableStream(e))return e;if(he.isArrayBufferView(e))return e.buffer;if(he.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Ee(e,new Ue.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return Ue.isNode&&he.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=he.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return Ee(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(he.isString(e))try{return(t||JSON.parse)(e),he.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||Be.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(he.isResponse(e)||he.isReadableStream(e))return e;if(e&&he.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw de.from(e,de.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ue.classes.FormData,Blob:Ue.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};he.forEach(["delete","get","head","post","put","patch"],(function(e){Be.headers[e]={}}));var De=Be,qe=he.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Ie=Symbol("internals");function Me(e){return e&&String(e).trim().toLowerCase()}function ze(e){return!1===e||null==e?e:he.isArray(e)?e.map(ze):String(e)}function He(e,t,r,n,o){return he.isFunction(n)?n.call(this,t,r):(o&&(t=r),he.isString(t)?he.isString(n)?-1!==t.indexOf(n):he.isRegExp(n)?n.test(t):void 0:void 0)}var Je=function(e,t){function r(e){d(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Me(t);if(!o)throw new Error("header name must be a non-empty string");var i=he.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=ze(e))}var i=function(e,t){return he.forEach(e,(function(e,r){return o(e,r,t)}))};if(he.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(he.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&qe[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(he.isHeaders(e)){var a,s=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=O(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e.entries());try{for(s.s();!(a=s.n()).done;){var u=b(a.value,2),c=u[0];o(u[1],c,r)}}catch(e){s.e(e)}finally{s.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=Me(e)){var r=he.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(he.isFunction(t))return t.call(this,n,r);if(he.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Me(e)){var r=he.findKey(this,e);return!(!r||void 0===this[r]||t&&!He(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Me(e)){var o=he.findKey(r,e);!o||t&&!He(0,r[o],o,t)||(delete r[o],n=!0)}}return he.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!He(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return he.forEach(this,(function(n,o){var i=he.findKey(r,o);if(i)return t[i]=ze(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=ze(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[function(){for(var e=Date.now(),t=e-o,s=arguments.length,u=new Array(s),c=0;c=i?a(u,e):(r=u,n||(n=setTimeout((function(){n=null,a(r)}),i-t)))},function(){return r&&a(r)}]}he.inherits(Ge,de,{__CANCEL__:!0});var Qe=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=$e(50,250);return Ye((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,s=i-n,u=o(s);n=i;var c=m({loaded:i,total:a,progress:a?i/a:void 0,bytes:s,rate:u||void 0,estimated:u&&a&&i<=a?(a-i)/u:void 0,event:r,lengthComputable:null!=a},t?"download":"upload",!0);e(c)}),r)},Ze=function(e,t){var r=null!=e;return[function(n){return t[0]({lengthComputable:r,total:e,loaded:n})},t[1]]},et=function(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n1?t-1:0),n=1;n1?"since :\n"+s.map(kt).join("\n"):" "+kt(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function At(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ge(null,e)}function Pt(e){return At(e),e.headers=We.from(e.headers),e.data=Ke.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),jt(e.adapter||De.adapter)(e).then((function(t){return At(e),t.data=Ke.call(e,e.transformResponse,t),t.headers=We.from(t.headers),t}),(function(t){return Ve(t)||(At(e),t&&t.response&&(t.response.data=Ke.call(e,e.transformResponse,t.response),t.response.headers=We.from(t.response.headers))),Promise.reject(t)}))}var Lt="1.8.4",Nt={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Nt[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var _t={};Nt.transitional=function(e,t,r){function n(e,t){return"[Axios v1.8.4] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new de(n(o," has been removed"+(t?" in "+t:"")),de.ERR_DEPRECATED);return t&&!_t[o]&&(_t[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},Nt.spelling=function(e){return function(t,r){return console.warn("".concat(r," is likely a misspelling of ").concat(e)),!0}};var Ct={assertOptions:function(e,t,r){if("object"!==f(e))throw new de("options must be an object",de.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var s=e[i],u=void 0===s||a(s,i,e);if(!0!==u)throw new de("option "+i+" must be "+u,de.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new de("Unknown option "+i,de.ERR_BAD_OPTION)}},validators:Nt},Ut=Ct.validators,Ft=function(){function e(t){d(this,e),this.defaults=t,this.interceptors={request:new Te,response:new Te}}var t;return y(e,[{key:"request",value:(t=h(u().mark((function e(t,r){var n,o;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){n={},Error.captureStackTrace?Error.captureStackTrace(n):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=it(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Ct.assertOptions(n,{silentJSONParsing:Ut.transitional(Ut.boolean),forcedJSONParsing:Ut.transitional(Ut.boolean),clarifyTimeoutError:Ut.transitional(Ut.boolean)},!1),null!=o&&(he.isFunction(o)?t.paramsSerializer={serialize:o}:Ct.assertOptions(o,{encode:Ut.function,serialize:Ut.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Ct.assertOptions(t,{baseUrl:Ut.spelling("baseURL"),withXsrfToken:Ut.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&he.merge(i.common,i[t.method]);i&&he.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=We.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,p=0;if(!u){var h=[Pt.bind(this),void 0];for(h.unshift.apply(h,s),h.push.apply(h,f),l=h.length,c=Promise.resolve(t);p0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ge(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var e=this,t=new AbortController,r=function(e){t.abort(e)};return this.subscribe(r),t.signal.unsubscribe=function(){return e.unsubscribe(r)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}(),qt=Dt;var It={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(It).forEach((function(e){var t=b(e,2),r=t[0],n=t[1];It[n]=r}));var Mt=It;var zt=function e(t){var r=new Bt(t),n=R(Bt.prototype.request,r);return he.extend(n,Bt.prototype,r,{allOwnKeys:!0}),he.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(it(t,r))},n}(De);return zt.Axios=Bt,zt.CanceledError=Ge,zt.CancelToken=qt,zt.isCancel=Ve,zt.VERSION=Lt,zt.toFormData=Ee,zt.AxiosError=de,zt.Cancel=zt.CanceledError,zt.all=function(e){return Promise.all(e)},zt.spread=function(e){return function(t){return e.apply(null,t)}},zt.isAxiosError=function(e){return he.isObject(e)&&!0===e.isAxiosError},zt.mergeConfig=it,zt.AxiosHeaders=We,zt.formToJSON=function(e){return Fe(he.isHTMLForm(e)?new FormData(e):e)},zt.getAdapter=jt,zt.HttpStatusCode=Mt,zt.default=zt,zt})); +//# sourceMappingURL=axios.min.js.map diff --git a/gin_ops/static/dist/js/demo-theme.js b/gin_ops/static/dist/js/demo-theme.js new file mode 100644 index 0000000..5379684 --- /dev/null +++ b/gin_ops/static/dist/js/demo-theme.js @@ -0,0 +1,35 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +})((function () { 'use strict'; + + var themeStorageKey = "tablerTheme"; + var defaultTheme = "light"; + var selectedTheme; + var params = new Proxy(new URLSearchParams(window.location.search), { + get: function get(searchParams, prop) { + return searchParams.get(prop); + } + }); + if (!!params.theme) { + localStorage.setItem(themeStorageKey, params.theme); + selectedTheme = params.theme; + } else { + var storedTheme = localStorage.getItem(themeStorageKey); + selectedTheme = storedTheme ? storedTheme : defaultTheme; + } + if (selectedTheme === 'dark') { + document.body.setAttribute("data-bs-theme", selectedTheme); + } else { + document.body.removeAttribute("data-bs-theme"); + } + +})); diff --git a/gin_ops/static/dist/js/demo-theme.min.js b/gin_ops/static/dist/js/demo-theme.min.js new file mode 100644 index 0000000..8d987b9 --- /dev/null +++ b/gin_ops/static/dist/js/demo-theme.min.js @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";var e,t="tablerTheme",a=new Proxy(new URLSearchParams(window.location.search),{get:function(e,t){return e.get(t)}});if(a.theme)localStorage.setItem(t,a.theme),e=a.theme;else{var n=localStorage.getItem(t);e=n||"light"}"dark"===e?document.body.setAttribute("data-bs-theme",e):document.body.removeAttribute("data-bs-theme")})); \ No newline at end of file diff --git a/gin_ops/static/dist/js/demo.js b/gin_ops/static/dist/js/demo.js new file mode 100644 index 0000000..a104ca5 --- /dev/null +++ b/gin_ops/static/dist/js/demo.js @@ -0,0 +1,132 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +})((function () { 'use strict'; + + function _iterableToArrayLimit(arr, i) { + var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; + if (null != _i) { + var _s, + _e, + _x, + _r, + _arr = [], + _n = !0, + _d = !1; + try { + if (_x = (_i = _i.call(arr)).next, 0 === i) { + if (Object(_i) !== _i) return; + _n = !1; + } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); + } catch (err) { + _d = !0, _e = err; + } finally { + try { + if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; + } finally { + if (_d) throw _e; + } + } + return _arr; + } + } + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + var items = { + "menu-position": { + localStorage: "tablerMenuPosition", + default: "top" + }, + "menu-behavior": { + localStorage: "tablerMenuBehavior", + default: "sticky" + }, + "container-layout": { + localStorage: "tablerContainerLayout", + default: "boxed" + } + }; + var config = {}; + for (var _i = 0, _Object$entries = Object.entries(items); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), + key = _Object$entries$_i[0], + params = _Object$entries$_i[1]; + var lsParams = localStorage.getItem(params.localStorage); + config[key] = lsParams ? lsParams : params.default; + } + var parseUrl = function parseUrl() { + var search = window.location.search.substring(1); + var params = search.split("&"); + for (var i = 0; i < params.length; i++) { + var arr = params[i].split("="); + var _key = arr[0]; + var value = arr[1]; + if (!!items[_key]) { + localStorage.setItem(items[_key].localStorage, value); + config[_key] = value; + } + } + }; + var toggleFormControls = function toggleFormControls(form) { + for (var _i2 = 0, _Object$entries2 = Object.entries(items); _i2 < _Object$entries2.length; _i2++) { + var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2), + _key2 = _Object$entries2$_i[0]; + _Object$entries2$_i[1]; + var elem = form.querySelector("[name=\"settings-".concat(_key2, "\"][value=\"").concat(config[_key2], "\"]")); + if (elem) { + elem.checked = true; + } + } + }; + var submitForm = function submitForm(form) { + for (var _i3 = 0, _Object$entries3 = Object.entries(items); _i3 < _Object$entries3.length; _i3++) { + var _Object$entries3$_i = _slicedToArray(_Object$entries3[_i3], 2), + _key3 = _Object$entries3$_i[0], + _params2 = _Object$entries3$_i[1]; + var value = form.querySelector("[name=\"settings-".concat(_key3, "\"]:checked")).value; + localStorage.setItem(_params2.localStorage, value); + config[_key3] = value; + } + window.dispatchEvent(new Event("resize")); + new bootstrap.Offcanvas(form).hide(); + }; + parseUrl(); + var form = document.querySelector("#offcanvasSettings"); + if (form) { + form.addEventListener("submit", function (e) { + e.preventDefault(); + submitForm(form); + }); + toggleFormControls(form); + } + +})); diff --git a/gin_ops/static/dist/js/demo.min.js b/gin_ops/static/dist/js/demo.min.js new file mode 100644 index 0000000..d28f535 --- /dev/null +++ b/gin_ops/static/dist/js/demo.min.js @@ -0,0 +1,9 @@ +/*! +* Tabler v1.0.0-beta20 (https://tabler.io) +* @version 1.0.0-beta20 +* @link https://tabler.io +* Copyright 2018-2023 The Tabler Authors +* Copyright 2018-2023 codecalm.net Paweł Kuna +* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) +*/ +!function(t){"function"==typeof define&&define.amd?define(t):t()}((function(){"use strict";function t(t,r){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,a,l,i=[],c=!0,u=!1;try{if(a=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(i.push(n.value),i.length!==e);c=!0);}catch(t){u=!0,o=t}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw o}}return i}}(t,r)||function(t,r){if(!t)return;if("string"==typeof t)return e(t,r);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(t,r)}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var version = "3.7.1", + + rhtmlSuffix = /HTML$/i, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + + // Retrieve the text value of an array of DOM nodes + text: function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += jQuery.text( node ); + } + } + if ( nodeType === 1 || nodeType === 11 ) { + return elem.textContent; + } + if ( nodeType === 9 ) { + return elem.documentElement.textContent; + } + if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + isXMLDoc: function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Assume HTML when documentElement doesn't yet exist, such as inside + // document fragments. + return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var pop = arr.pop; + + +var sort = arr.sort; + + +var splice = arr.splice; + + +var whitespace = "[\\x20\\t\\r\\n\\f]"; + + +var rtrimCSS = new RegExp( + "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", + "g" +); + + + + +// Note: an element does not contain itself +jQuery.contains = function( a, b ) { + var bup = b && b.parentNode; + + return a === bup || !!( bup && bup.nodeType === 1 && ( + + // Support: IE 9 - 11+ + // IE doesn't have `contains` on SVG. + a.contains ? + a.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); +}; + + + + +// CSS string/identifier serialization +// https://drafts.csswg.org/cssom/#common-serializing-idioms +var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + +function fcssescape( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; +} + +jQuery.escapeSelector = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + + + + +var preferredDoc = document, + pushNative = push; + +( function() { + +var i, + Expr, + outermostContext, + sortInput, + hasDuplicate, + push = pushNative, + + // Local document vars + document, + documentElement, + documentIsHTML, + rbuggyQSA, + matches, + + // Instance-specific data + expando = jQuery.expando, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + + "loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + ID: new RegExp( "^#(" + identifier + ")" ), + CLASS: new RegExp( "^\\.(" + identifier + ")" ), + TAG: new RegExp( "^(" + identifier + "|[*])" ), + ATTR: new RegExp( "^" + attributes ), + PSEUDO: new RegExp( "^" + pseudos ), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + bool: new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + needsContext: new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + if ( nonHex ) { + + // Strip the backslash prefix from a non-hex escape sequence + return nonHex; + } + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + return high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes; see `setDocument`. + // Support: IE 9 - 11+, Edge 12 - 18+ + // Removing the function wrapper causes a "Permission Denied" + // error in IE/Edge. + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && nodeName( elem, "fieldset" ); + }, + { dir: "parentNode", next: "legend" } + ); + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android <=4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { + apply: function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + }, + call: function( target ) { + pushNative.apply( target, slice.call( arguments, 1 ) ); + } + }; +} + +function find( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + push.call( results, elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + find.contains( context, elem ) && + elem.id === m ) { + + push.call( results, elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when + // strict-comparing two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( newContext != context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = jQuery.escapeSelector( nid ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties + // (see https://github.com/jquery/sizzle/issues/157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by jQuery selector module + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + return nodeName( elem, "input" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && + elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11+ + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a jQuery selector context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [node] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +function setDocument( node ) { + var subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + documentElement = document.documentElement; + documentIsHTML = !jQuery.isXMLDoc( document ); + + // Support: iOS 7 only, IE 9 - 11+ + // Older browsers didn't support unprefixed `matches`. + matches = documentElement.matches || + documentElement.webkitMatchesSelector || + documentElement.msMatchesSelector; + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors + // (see trac-13936). + // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, + // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. + if ( documentElement.msMatchesSelector && + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 9 - 11+, Edge 12 - 18+ + subWindow.addEventListener( "unload", unloadHandler ); + } + + // Support: IE <10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + documentElement.appendChild( el ).id = jQuery.expando; + return !document.getElementsByName || + !document.getElementsByName( jQuery.expando ).length; + } ); + + // Support: IE 9 only + // Check to see if it's possible to do matchesSelector + // on a disconnected node. + support.disconnectedMatch = assert( function( el ) { + return matches.call( el, "*" ); + } ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // IE/Edge don't support the :scope pseudo-class. + support.scope = assert( function() { + return document.querySelectorAll( ":scope" ); + } ); + + // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only + // Make sure the `:has()` argument is parsed unforgivingly. + // We include `*` in the test to detect buggy implementations that are + // _selectively_ forgiving (specifically when the list includes at least + // one valid selector). + // Note that we treat complete lack of support for `:has()` as if it were + // spec-compliant support, which is fine because use of `:has()` in such + // environments will fail in the qSA path and fall back to jQuery traversal + // anyway. + support.cssHas = assert( function() { + try { + document.querySelector( ":has(*,:jqfake)" ); + return false; + } catch ( e ) { + return true; + } + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter.ID = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find.ID = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter.ID = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find.ID = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find.TAG = function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else { + return context.querySelectorAll( tag ); + } + }; + + // Class + Expr.find.CLASS = function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + rbuggyQSA = []; + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + documentElement.appendChild( el ).innerHTML = + "" + + ""; + + // Support: iOS <=7 - 8 only + // Boolean attributes and "value" are not treated correctly in some XML documents + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: iOS <=7 - 8 only + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: iOS 8 only + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE 9 - 11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + documentElement.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + } ); + + if ( !support.cssHas ) { + + // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ + // Our regular `try-catch` mechanism fails to detect natively-unsupported + // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) + // in browsers that parse the `:has()` argument as a forgiving selector list. + // https://drafts.csswg.org/selectors/#relational now requires the argument + // to be parsed unforgivingly, but browsers have not yet fully adjusted. + rbuggyQSA.push( ":has" ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a === document || a.ownerDocument == preferredDoc && + find.contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b === document || b.ownerDocument == preferredDoc && + find.contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + }; + + return document; +} + +find.matches = function( expr, elements ) { + return find( expr, null, null, elements ); +}; + +find.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return find( expr, document, null, [ elem ] ).length > 0; +}; + +find.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return jQuery.contains( context, elem ); +}; + + +find.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (see trac-13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + if ( val !== undefined ) { + return val; + } + + return elem.getAttribute( name ); +}; + +find.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +jQuery.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + // + // Support: Android <=4.0+ + // Testing for detecting duplicates is unpredictable so instead assume we can't + // depend on duplicate detection in all browsers without a stable sort. + hasDuplicate = !support.sortStable; + sortInput = !support.sortStable && slice.call( results, 0 ); + sort.call( results, sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + splice.call( results, duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +jQuery.fn.uniqueSort = function() { + return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); +}; + +Expr = jQuery.expr = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + ATTR: function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) + .replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + CHILD: function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + find.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) + ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + find.error( match[ 0 ] ); + } + + return match; + }, + + PSEUDO: function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr.CHILD.test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + TAG: function( nodeNameSelector ) { + var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return nodeName( elem, expectedNodeName ); + }; + }, + + CLASS: function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + ")" + className + + "(" + whitespace + "|$)" ) ) && + classCache( className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + ATTR: function( name, operator, check ) { + return function( elem ) { + var result = find.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + if ( operator === "=" ) { + return result === check; + } + if ( operator === "!=" ) { + return result !== check; + } + if ( operator === "^=" ) { + return check && result.indexOf( check ) === 0; + } + if ( operator === "*=" ) { + return check && result.indexOf( check ) > -1; + } + if ( operator === "$=" ) { + return check && result.slice( -check.length ) === check; + } + if ( operator === "~=" ) { + return ( " " + result.replace( rwhitespace, " " ) + " " ) + .indexOf( check ) > -1; + } + if ( operator === "|=" ) { + return result === check || result.slice( 0, check.length + 1 ) === check + "-"; + } + + return false; + }; + }, + + CHILD: function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + nodeName( node, name ) : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || ( parent[ expando ] = {} ); + cache = outerCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + cache = outerCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + nodeName( node, name ) : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + outerCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + PSEUDO: function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // https://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + find.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as jQuery does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + not: markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrimCSS, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element + // (see https://github.com/jquery/sizzle/issues/299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + has: markFunction( function( selector ) { + return function( elem ) { + return find( selector, elem ).length > 0; + }; + } ), + + contains: markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // https://www.w3.org/TR/selectors/#lang-pseudo + lang: markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + find.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + target: function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + root: function( elem ) { + return elem === documentElement; + }, + + focus: function( elem ) { + return elem === safeActiveElement() && + document.hasFocus() && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + enabled: createDisabledPseudo( false ), + disabled: createDisabledPseudo( true ), + + checked: function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + return ( nodeName( elem, "input" ) && !!elem.checked ) || + ( nodeName( elem, "option" ) && !!elem.selected ); + }, + + selected: function( elem ) { + + // Support: IE <=11+ + // Accessing the selectedIndex property + // forces the browser to treat the default option as + // selected when in an optgroup. + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + empty: function( elem ) { + + // https://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + parent: function( elem ) { + return !Expr.pseudos.empty( elem ); + }, + + // Element/input types + header: function( elem ) { + return rheader.test( elem.nodeName ); + }, + + input: function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + button: function( elem ) { + return nodeName( elem, "input" ) && elem.type === "button" || + nodeName( elem, "button" ); + }, + + text: function( elem ) { + var attr; + return nodeName( elem, "input" ) && elem.type === "text" && + + // Support: IE <10 only + // New HTML5 attribute values (e.g., "search") appear + // with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + first: createPositionalPseudo( function() { + return [ 0 ]; + } ), + + last: createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + even: createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + odd: createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + lt: createPositionalPseudo( function( matchIndexes, length, argument ) { + var i; + + if ( argument < 0 ) { + i = argument + length; + } else if ( argument > length ) { + i = length; + } else { + i = argument; + } + + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + gt: createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos.nth = Expr.pseudos.eq; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rleadingCombinator.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrimCSS, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + if ( parseOnly ) { + return soFar.length; + } + + return soFar ? + find.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + if ( skip && nodeName( elem, skip ) ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = outerCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + outerCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + find( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, matcherOut, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || + multipleContexts( selector || "*", + context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems; + + if ( matcher ) { + + // If we have a postFinder, or filtered seed, or non-seed postFilter + // or preexisting results, + matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results; + + // Find primary matches + matcher( matcherIn, matcherOut, context, xml ); + } else { + matcherOut = matcherIn; + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element + // (see https://github.com/jquery/sizzle/issues/299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrimCSS, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find.TAG( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: iOS <=7 - 9 only + // Tolerate NodeList properties (IE: "length"; Safari: ) matching + // elements by id. (see trac-14142) + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + push.call( results, elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + jQuery.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +function compile( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +} + +/** + * A low-level selection function that works with jQuery's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with jQuery selector compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find.ID( + token.matches[ 0 ].replace( runescape, funescape ), + context + ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && + testContext( context.parentNode ) || context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +} + +// One-time assignments + +// Support: Android <=4.0 - 4.1+ +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Initialize against the default document +setDocument(); + +// Support: Android <=4.0 - 4.1+ +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +jQuery.find = find; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.unique = jQuery.uniqueSort; + +// These have always been private, but they used to be documented as part of +// Sizzle so let's maintain them for now for backwards compatibility purposes. +find.compile = compile; +find.select = select; +find.setDocument = setDocument; +find.tokenize = tokenize; + +find.escape = jQuery.escapeSelector; +find.getText = jQuery.text; +find.isXML = jQuery.isXMLDoc; +find.selectors = jQuery.expr; +find.support = jQuery.support; +find.uniqueSort = jQuery.uniqueSort; + + /* eslint-enable */ + +} )(); + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (trac-9521) + // Strict HTML recognition (trac-11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to jQuery#find + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.error ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the error, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getErrorHook ) { + process.error = jQuery.Deferred.getErrorHook(); + + // The deprecated alias of the above. While the name suggests + // returning the stack, not an error instance, jQuery just passes + // it directly to `console.warn` so both will work; an instance + // just better cooperates with source maps. + } else if ( jQuery.Deferred.getStackHook ) { + process.error = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error +// captured before the async barrier to get the original error cause +// which may otherwise be hidden. +jQuery.Deferred.exceptionHook = function( error, asyncError ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, + error.stack, asyncError ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See trac-6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (trac-9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see trac-8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (trac-14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (trac-11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (trac-14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (trac-13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (trac-12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (trac-13208) + // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (trac-13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", true ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, isSetup ) { + + // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add + if ( !isSetup ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + if ( !saved ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + this[ type ](); + result = dataPriv.get( this, type ); + dataPriv.set( this, type, false ); + + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + return result; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering + // the native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved ) { + + // ...and capture the result + dataPriv.set( this, type, jQuery.event.trigger( + saved[ 0 ], + saved.slice( 1 ), + this + ) ); + + // Abort handling of the native event by all jQuery handlers while allowing + // native handlers on the same element to run. On target, this is achieved + // by stopping immediate propagation just on the jQuery event. However, + // the native event is re-wrapped by a jQuery one on each level of the + // propagation so the only way to stop it for jQuery is to stop it for + // everyone via native `stopPropagation()`. This is not a problem for + // focus/blur which don't bubble, but it does also stop click on checkboxes + // and radios. We accept this limitation. + event.stopPropagation(); + event.isImmediatePropagationStopped = returnTrue; + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (trac-504, trac-13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + + function focusMappedHandler( nativeEvent ) { + if ( document.documentMode ) { + + // Support: IE 11+ + // Attach a single focusin/focusout handler on the document while someone wants + // focus/blur. This is because the former are synchronous in IE while the latter + // are async. In other browsers, all those handlers are invoked synchronously. + + // `handle` from private data would already wrap the event, but we need + // to change the `type` here. + var handle = dataPriv.get( this, "handle" ), + event = jQuery.event.fix( nativeEvent ); + event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; + event.isSimulated = true; + + // First, handle focusin/focusout + handle( nativeEvent ); + + // ...then, handle focus/blur + // + // focus/blur don't bubble while focusin/focusout do; simulate the former by only + // invoking the handler at the lower level. + if ( event.target === event.currentTarget ) { + + // The setup part calls `leverageNative`, which, in turn, calls + // `jQuery.event.add`, so event handle will already have been set + // by this point. + handle( event ); + } + } else { + + // For non-IE browsers, attach a single capturing handler on the document + // while someone wants focusin/focusout. + jQuery.event.simulate( delegateType, nativeEvent.target, + jQuery.event.fix( nativeEvent ) ); + } + } + + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + var attaches; + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, true ); + + if ( document.documentMode ) { + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + attaches = dataPriv.get( this, delegateType ); + if ( !attaches ) { + this.addEventListener( delegateType, focusMappedHandler ); + } + dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); + } else { + + // Return false to allow normal processing in the caller + return false; + } + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + teardown: function() { + var attaches; + + if ( document.documentMode ) { + attaches = dataPriv.get( this, delegateType ) - 1; + if ( !attaches ) { + this.removeEventListener( delegateType, focusMappedHandler ); + dataPriv.remove( this, delegateType ); + } else { + dataPriv.set( this, delegateType, attaches ); + } + } else { + + // Return false to indicate standard teardown should be applied + return false; + } + }, + + // Suppress native focus or blur if we're currently inside + // a leveraged native-event stack + _default: function( event ) { + return dataPriv.get( event.target, type ); + }, + + delegateType: delegateType + }; + + // Support: Firefox <=44 + // Firefox doesn't have focus(in | out) events + // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 + // + // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 + // focus(in | out) events fire after focus & blur events, + // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order + // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 + // + // Support: IE 9 - 11+ + // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, + // attach a single handler for both events in IE. + jQuery.event.special[ delegateType ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get( dataHolder, delegateType ); + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + if ( !attaches ) { + if ( document.documentMode ) { + this.addEventListener( delegateType, focusMappedHandler ); + } else { + doc.addEventListener( type, focusMappedHandler, true ); + } + } + dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get( dataHolder, delegateType ) - 1; + + if ( !attaches ) { + if ( document.documentMode ) { + this.removeEventListener( delegateType, focusMappedHandler ); + } else { + doc.removeEventListener( type, focusMappedHandler, true ); + } + dataPriv.remove( dataHolder, delegateType ); + } else { + dataPriv.set( dataHolder, delegateType, attaches ); + } + } + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (trac-8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Re-enable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + + // Unwrap a CDATA section containing script contents. This shouldn't be + // needed as in XML documents they're already not visible when + // inspecting element contents and in HTML documents they have no + // meaning but we're preserving that logic for backwards compatibility. + // This will be removed completely in 4.0. See gh-4904. + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew jQuery#find here for performance reasons: + // https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var rcustomProp = /^--/; + + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (trac-8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "box-sizing:content-box;border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is `display: block` + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + isCustomProp = rcustomProp.test( name ), + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, trac-12537) + // .css('--customProperty) (gh-3144) + if ( computed ) { + + // Support: IE <=9 - 11+ + // IE only supports `"float"` in `getPropertyValue`; in computed styles + // it's only available as `"cssFloat"`. We no longer modify properties + // sent to `.css()` apart from camelCasing, so we need to check both. + // Normally, this would create difference in behavior: if + // `getPropertyValue` returns an empty string, the value returned + // by `.css()` would be `undefined`. This is usually the case for + // disconnected elements. However, in IE even disconnected elements + // with no styles return `"none"` for `getPropertyValue( "float" )` + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( isCustomProp && ret ) { + + // Support: Firefox 105+, Chrome <=105+ + // Spec requires trimming whitespace for custom properties (gh-4926). + // Firefox only trims leading whitespace. Chrome just collapses + // both leading & trailing whitespace to a single space. + // + // Fall back to `undefined` if empty string returned. + // This collapses a missing definition with property defined + // and set to an empty string but there's no standard API + // allowing us to differentiate them without a performance penalty + // and returning `undefined` aligns with older jQuery. + // + // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED + // as whitespace while CSS does not, but this is not a problem + // because CSS preprocessing replaces them with U+000A LINE FEED + // (which *is* CSS whitespace) + // https://www.w3.org/TR/css-syntax-3/#input-preprocessing + ret = ret.replace( rtrimCSS, "$1" ) || undefined; + } + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0, + marginDelta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + // Count margin delta separately to only add it after scroll gutter adjustment. + // This is needed to make negative margins work with `outerHeight( true )` (gh-3982). + if ( box === "margin" ) { + marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta + marginDelta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + animationIterationCount: true, + aspectRatio: true, + borderImageSlice: true, + columnCount: true, + flexGrow: true, + flexShrink: true, + fontWeight: true, + gridArea: true, + gridColumn: true, + gridColumnEnd: true, + gridColumnStart: true, + gridRow: true, + gridRowEnd: true, + gridRowStart: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + scale: true, + widows: true, + zIndex: true, + zoom: true, + + // SVG-related + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeMiterlimit: true, + strokeOpacity: true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (trac-7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug trac-9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (trac-7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // Use proper attribute retrieval (trac-12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classNames, cur, curValue, className, i, finalValue; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classNames = classesToArray( value ); + + if ( classNames.length ) { + return this.each( function() { + curValue = getClass( this ); + cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + if ( cur.indexOf( " " + className + " " ) < 0 ) { + cur += className + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + this.setAttribute( "class", finalValue ); + } + } + } ); + } + + return this; + }, + + removeClass: function( value ) { + var classNames, cur, curValue, className, i, finalValue; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classNames = classesToArray( value ); + + if ( classNames.length ) { + return this.each( function() { + curValue = getClass( this ); + + // This expression is here for better compressibility (see addClass) + cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + + // Remove *all* instances + while ( cur.indexOf( " " + className + " " ) > -1 ) { + cur = cur.replace( " " + className + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + this.setAttribute( "class", finalValue ); + } + } + } ); + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var classNames, className, i, self, + type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + classNames = classesToArray( value ); + + return this.each( function() { + if ( isValidValue ) { + + // Toggle individual class names + self = jQuery( this ); + + for ( i = 0; i < classNames.length; i++ ) { + className = classNames[ i ]; + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (trac-14686, trac-14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (trac-2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (trac-9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (trac-6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // trac-7653, trac-8125, trac-8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes trac-9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (trac-10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket trac-12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // trac-9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (trac-11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // trac-1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see trac-8605, trac-14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // trac-14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " +``` +### Or, through a package manager. +``` +npm install fslightbox +``` +And import it in your project's JavaScript file, for example through the Node.js "require" function: +``` +require("fslightbox") +``` + +## Basic usage +```html + + Open the first slide (an image) + + + Open the second slide (a YouTube video) + + + Open the third slide (an HTML video) + + + Open the fourth slide (a Vimeo video—a custom source) + + +``` + +## Documentation +Available at: https://fslightbox.com/javascript/documentation. + +## Demo +Available at: https://fslightbox.com/javascript. + +## Browser Compatibility + +| Browser | Works? | +| --- | --- | +| Chrome | Yes | +| Firefox | Yes | +| Opera | Yes | +| Safari | Yes | +| Edge | Yes | +| IE 11 | Yes | diff --git a/gin_ops/static/dist/libs/fslightbox/index.js b/gin_ops/static/dist/libs/fslightbox/index.js new file mode 100644 index 0000000..0db6557 --- /dev/null +++ b/gin_ops/static/dist/libs/fslightbox/index.js @@ -0,0 +1 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var o,i="fslightbox-",r="".concat(i,"styles"),s="".concat(i,"cursor-grabbing"),a="".concat(i,"full-dimension"),c="".concat(i,"flex-centered"),l="".concat(i,"open"),u="".concat(i,"transform-transition"),d="".concat(i,"absoluted"),f="".concat(i,"slide-btn"),p="".concat(f,"-container"),h="".concat(i,"fade-in"),m="".concat(i,"fade-out"),g=h+"-strong",v=m+"-strong",b="".concat(i,"opacity-"),x="".concat(b,"1"),y="".concat(i,"source");function w(e){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function S(e){var t=e.stageIndexes,n=e.core.stageManager,o=e.props.sources.length-1;n.getPreviousSlideIndex=function(){return 0===t.current?o:t.current-1},n.getNextSlideIndex=function(){return t.current===o?0:t.current+1},n.updateStageIndexes=0===o?function(){}:1===o?function(){0===t.current?(t.next=1,delete t.previous):(t.previous=0,delete t.next)}:function(){t.previous=n.getPreviousSlideIndex(),t.next=n.getNextSlideIndex()},n.i=o<=2?function(){return!0}:function(e){var n=t.current;if(0===n&&e===o||n===o&&0===e)return!0;var i=n-e;return-1===i||0===i||1===i}}"object"===("undefined"==typeof document?"undefined":w(document))&&((o=document.createElement("style")).className=r,o.appendChild(document.createTextNode(".fslightbox-absoluted{position:absolute;top:0;left:0}.fslightbox-fade-in{animation:fslightbox-fade-in .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out{animation:fslightbox-fade-out .3s ease}.fslightbox-fade-in-strong{animation:fslightbox-fade-in-strong .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out-strong{animation:fslightbox-fade-out-strong .3s ease}@keyframes fslightbox-fade-in{from{opacity:.65}to{opacity:1}}@keyframes fslightbox-fade-out{from{opacity:.35}to{opacity:0}}@keyframes fslightbox-fade-in-strong{from{opacity:.3}to{opacity:1}}@keyframes fslightbox-fade-out-strong{from{opacity:1}to{opacity:0}}.fslightbox-cursor-grabbing{cursor:grabbing}.fslightbox-full-dimension{width:100%;height:100%}.fslightbox-open{overflow:hidden;height:100%}.fslightbox-flex-centered{display:flex;justify-content:center;align-items:center}.fslightbox-opacity-0{opacity:0!important}.fslightbox-opacity-1{opacity:1!important}.fslightbox-scrollbarfix{padding-right:17px}.fslightbox-transform-transition{transition:transform .3s}.fslightbox-container{font-family:Arial,sans-serif;position:fixed;top:0;left:0;background:linear-gradient(rgba(30,30,30,.9),#000 1810%);touch-action:pinch-zoom;z-index:1000000000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fslightbox-container *{box-sizing:border-box}.fslightbox-svg-path{transition:fill .15s ease;fill:#ddd}.fslightbox-nav{height:45px;width:100%;position:absolute;top:0;left:0}.fslightbox-slide-number-container{display:flex;justify-content:center;align-items:center;position:relative;height:100%;font-size:15px;color:#d7d7d7;z-index:0;max-width:55px;text-align:left}.fslightbox-slide-number-container .fslightbox-flex-centered{height:100%}.fslightbox-slash{display:block;margin:0 5px;width:1px;height:12px;transform:rotate(15deg);background:#fff}.fslightbox-toolbar{position:absolute;z-index:3;right:0;top:0;height:100%;display:flex;background:rgba(35,35,35,.65)}.fslightbox-toolbar-button{height:100%;width:45px;cursor:pointer}.fslightbox-toolbar-button:hover .fslightbox-svg-path{fill:#fff}.fslightbox-slide-btn-container{display:flex;align-items:center;padding:12px 12px 12px 6px;position:absolute;top:50%;cursor:pointer;z-index:3;transform:translateY(-50%)}@media (min-width:476px){.fslightbox-slide-btn-container{padding:22px 22px 22px 6px}}@media (min-width:768px){.fslightbox-slide-btn-container{padding:30px 30px 30px 6px}}.fslightbox-slide-btn-container:hover .fslightbox-svg-path{fill:#f1f1f1}.fslightbox-slide-btn{padding:9px;font-size:26px;background:rgba(35,35,35,.65)}@media (min-width:768px){.fslightbox-slide-btn{padding:10px}}@media (min-width:1600px){.fslightbox-slide-btn{padding:11px}}.fslightbox-slide-btn-container-previous{left:0}@media (max-width:475.99px){.fslightbox-slide-btn-container-previous{padding-left:3px}}.fslightbox-slide-btn-container-next{right:0;padding-left:12px;padding-right:3px}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-left:22px}}@media (min-width:768px){.fslightbox-slide-btn-container-next{padding-left:30px}}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-right:6px}}.fslightbox-down-event-detector{position:absolute;z-index:1}.fslightbox-slide-swiping-hoverer{z-index:4}.fslightbox-invalid-file-wrapper{font-size:22px;color:#eaebeb;margin:auto}.fslightbox-video{object-fit:cover}.fslightbox-youtube-iframe{border:0}.fslightboxl{display:block;margin:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:67px;height:67px}.fslightboxl div{box-sizing:border-box;display:block;position:absolute;width:54px;height:54px;margin:6px;border:5px solid;border-color:#999 transparent transparent transparent;border-radius:50%;animation:fslightboxl 1.2s cubic-bezier(.5,0,.5,1) infinite}.fslightboxl div:nth-child(1){animation-delay:-.45s}.fslightboxl div:nth-child(2){animation-delay:-.3s}.fslightboxl div:nth-child(3){animation-delay:-.15s}@keyframes fslightboxl{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fslightbox-source{position:relative;z-index:2;opacity:0}")),document.head.appendChild(o));function L(e){var t,n=e.props,o=0,i={};this.getSourceTypeFromLocalStorageByUrl=function(e){return t[e]?t[e]:r(e)},this.handleReceivedSourceTypeForUrl=function(e,n){if(!1===i[n]&&(o--,"invalid"!==e?i[n]=e:delete i[n],0===o)){!function(e,t){for(var n in t)e[n]=t[n]}(t,i);try{localStorage.setItem("fslightbox-types",JSON.stringify(t))}catch(e){}}};var r=function(e){o++,i[e]=!1};if(n.disableLocalStorage)this.getSourceTypeFromLocalStorageByUrl=function(){},this.handleReceivedSourceTypeForUrl=function(){};else{try{t=JSON.parse(localStorage.getItem("fslightbox-types"))}catch(e){}t||(t={},this.getSourceTypeFromLocalStorageByUrl=r)}}function A(e,t,n,o){var i=e.data,r=e.elements.sources,s=n/o,a=0;this.adjustSize=function(){if((a=i.maxSourceWidth/s)i.maxSourceHeight?i.maxSourceHeight:o,c()};var c=function(){r[t].style.width=a*s+"px",r[t].style.height=a+"px"}}function C(e,t){var n=this,o=e.collections.sourceSizers,i=e.elements,r=i.sourceAnimationWrappers,s=i.sources,a=e.isl,c=e.resolve;function l(e,n){o[t]=c(A,[t,e,n]),o[t].adjustSize()}this.runActions=function(e,o){a[t]=!0,s[t].classList.add(x),r[t].classList.add(g),r[t].removeChild(r[t].firstChild),l(e,o),n.runActions=l}}function E(e,t){var n,o=this,i=e.elements.sources,r=e.props,s=(0,e.resolve)(C,[t]);this.handleImageLoad=function(e){var t=e.target,n=t.naturalWidth,o=t.naturalHeight;s.runActions(n,o)},this.handleVideoLoad=function(e){var t=e.target,o=t.videoWidth,i=t.videoHeight;n=!0,s.runActions(o,i)},this.handleNotMetaDatedVideoLoad=function(){n||o.handleYoutubeLoad()},this.handleYoutubeLoad=function(){var e=1920,t=1080;r.maxYoutubeDimensions&&(e=r.maxYoutubeDimensions.width,t=r.maxYoutubeDimensions.height),s.runActions(e,t)},this.handleCustomLoad=function(){var e=i[t],n=e.offsetWidth,r=e.offsetHeight;n&&r?s.runActions(n,r):setTimeout(o.handleCustomLoad)}}function F(e,t,n){var o=e.elements.sources,i=e.props.customClasses,r=i[t]?i[t]:"";o[t].className=n+" "+r}function I(e,t){var n=e.elements.sources,o=e.props.customAttributes;for(var i in o[t])n[t].setAttribute(i,o[t][i])}function T(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=document.createElement("img"),F(e,t,y),i[t].src=s[t],i[t].onload=n[t].handleImageLoad,I(e,t),r[t].appendChild(i[t])}function N(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props,a=s.sources,c=s.videosPosters;i[t]=document.createElement("video"),F(e,t,y),i[t].src=a[t],i[t].onloadedmetadata=function(e){n[t].handleVideoLoad(e)},i[t].controls=!0,I(e,t),c[t]&&(i[t].poster=c[t]);var l=document.createElement("source");l.src=a[t],i[t].appendChild(l),setTimeout(n[t].handleNotMetaDatedVideoLoad,3e3),r[t].appendChild(i[t])}function z(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,r=o.sources,s=o.sourceAnimationWrappers,a=e.props.sources;r[t]=document.createElement("iframe"),F(e,t,"".concat(y," ").concat(i,"youtube-iframe"));var c=a[t],l=c.split("?")[1];r[t].src="https://www.youtube.com/embed/".concat(c.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/)[2],"?").concat(l||""),r[t].allowFullscreen=!0,I(e,t),s[t].appendChild(r[t]),n[t].handleYoutubeLoad()}function P(e,t){var n=e.collections.sourceLoadHandlers,o=e.elements,i=o.sources,r=o.sourceAnimationWrappers,s=e.props.sources;i[t]=s[t],F(e,t,"".concat(i[t].className," ").concat(y)),r[t].appendChild(i[t]),n[t].handleCustomLoad()}function k(e,t){var n=e.elements,o=n.sources,r=n.sourceAnimationWrappers;e.props.sources;o[t]=document.createElement("div"),o[t].className="".concat(i,"invalid-file-wrapper ").concat(c),o[t].innerHTML="Invalid source",r[t].classList.add(g),r[t].removeChild(r[t].firstChild),r[t].appendChild(o[t])}function H(e){var t=e.collections,n=t.sourceLoadHandlers,o=t.sourcesRenderFunctions,i=e.core.sourceDisplayFacade,r=e.resolve;this.runActionsForSourceTypeAndIndex=function(t,s){var a;switch("invalid"!==t&&(n[s]=r(E,[s])),t){case"image":a=T;break;case"video":a=N;break;case"youtube":a=z;break;case"custom":a=P;break;default:a=k}o[s]=function(){return a(e,s)},i.displaySourcesWhichShouldBeDisplayed()}}function W(){var e,t,n,o={isUrlYoutubeOne:function(e){var t=document.createElement("a");return t.href=e,"www.youtube.com"===t.hostname||"youtu.be"===t.hostname},getTypeFromResponseContentType:function(e){return e.slice(0,e.indexOf("/"))}};function i(){if(4!==n.readyState){if(2===n.readyState){var e;switch(o.getTypeFromResponseContentType(n.getResponseHeader("content-type"))){case"image":e="image";break;case"video":e="video";break;default:e="invalid"}n.onreadystatechange=null,n.abort(),t(e)}}else t("invalid")}this.setUrlToCheck=function(t){e=t},this.getSourceType=function(r){if(o.isUrlYoutubeOne(e))return r("youtube");t=r,(n=new XMLHttpRequest).onreadystatechange=i,n.open("GET",e,!0),n.send()}}function R(e,t,n){var o=e.props,i=o.types,r=o.type,s=o.sources,a=e.resolve;this.getTypeSetByClientForIndex=function(e){var t;return i&&i[e]?t=i[e]:r&&(t=r),t},this.retrieveTypeWithXhrForIndex=function(e){var o=a(W);o.setUrlToCheck(s[e]),o.getSourceType((function(o){t.handleReceivedSourceTypeForUrl(o,s[e]),n.runActionsForSourceTypeAndIndex(o,e)}))}}function D(e,t){var n=e.core.stageManager,o=e.elements,i=o.smw,r=o.sourceWrappersContainer,s=e.props,l=0,f=document.createElement("div");function p(e){f.style.transform="translateX(".concat(e+l,"px)"),l=0}function h(){return(1+s.slideDistance)*innerWidth}f.className="".concat(d," ").concat(a," ").concat(c),f.s=function(){f.style.display="flex"},f.h=function(){f.style.display="none"},f.a=function(){f.classList.add(u)},f.d=function(){f.classList.remove(u)},f.n=function(){f.style.removeProperty("transform")},f.v=function(e){return l=e,f},f.ne=function(){p(-h())},f.z=function(){p(0)},f.p=function(){p(h())},n.i(t)||f.h(),i[t]=f,r.appendChild(f),function(e,t){var n=e.elements,o=n.smw,i=n.sourceAnimationWrappers,r=document.createElement("div"),s=document.createElement("div");s.className="fslightboxl";for(var a=0;a<3;a++){var c=document.createElement("div");s.appendChild(c)}r.appendChild(s),o[t].appendChild(r),i[t]=r}(e,t)}function O(e,t,n,o){var r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttributeNS(null,"width",t),r.setAttributeNS(null,"height",t),r.setAttributeNS(null,"viewBox",n);var s=document.createElementNS("http://www.w3.org/2000/svg","path");return s.setAttributeNS(null,"class","".concat(i,"svg-path")),s.setAttributeNS(null,"d",o),r.appendChild(s),e.appendChild(r),r}function M(e,t){var n=document.createElement("div");return n.className="".concat(i,"toolbar-button ").concat(c),n.title=t,e.appendChild(n),n}function j(e,t){var n=document.createElement("div");n.className="".concat(i,"toolbar"),t.appendChild(n),function(e,t){var n=e.componentsServices,o=e.data,i=e.fs,r="M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z",s=M(t);s.title="Enter fullscreen";var a=O(s,"20px","0 0 18 18",r);n.ofs=function(){o.ifs=!0,s.title="Exit fullscreen",a.setAttributeNS(null,"width","24px"),a.setAttributeNS(null,"height","24px"),a.setAttributeNS(null,"viewBox","0 0 950 1024"),a.firstChild.setAttributeNS(null,"d","M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z")},n.xfs=function(){o.ifs=!1,s.title="Enter fullscreen",a.setAttributeNS(null,"width","20px"),a.setAttributeNS(null,"height","20px"),a.setAttributeNS(null,"viewBox","0 0 18 18"),a.firstChild.setAttributeNS(null,"d",r)},s.onclick=i.t}(e,n),function(e,t){var n=M(t,"Close");n.onclick=e.core.lightboxCloser.closeLightbox,O(n,"20px","0 0 24 24","M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z")}(e,n)}function X(e){var t=e.props.sources,n=e.elements.container,o=document.createElement("div");o.className="".concat(i,"nav"),n.appendChild(o),j(e,o),t.length>1&&function(e,t){var n=e.componentsServices,o=e.props.sources,r=(e.stageIndexes,document.createElement("div"));r.className="".concat(i,"slide-number-container");var s=document.createElement("div");s.className=c;var a=document.createElement("span");n.setSlideNumber=function(e){return a.innerHTML=e};var l=document.createElement("span");l.className="".concat(i,"slash");var u=document.createElement("div");u.innerHTML=o.length,r.appendChild(s),s.appendChild(a),s.appendChild(l),s.appendChild(u),t.appendChild(r),setTimeout((function(){s.offsetWidth>55&&(r.style.justifyContent="flex-start")}))}(e,o)}function B(e,t,n,o){var i=e.elements.container,r=n.charAt(0).toUpperCase()+n.slice(1),s=document.createElement("div");s.className="".concat(p," ").concat(p,"-").concat(n),s.title="".concat(r," slide"),s.onclick=t,function(e,t){var n=document.createElement("div");n.className="".concat(f," ").concat(c),O(n,"20px","0 0 20 20",t),e.appendChild(n)}(s,o),i.appendChild(s)}function U(e){var t=e.core,n=t.lightboxCloser,o=t.slideChangeFacade,i=e.fs;this.listener=function(e){switch(e.key){case"Escape":n.closeLightbox();break;case"ArrowLeft":o.changeToPrevious();break;case"ArrowRight":o.changeToNext();break;case"F11":e.preventDefault(),i.t()}}}function q(e){var t=e.elements,n=e.sourcePointerProps,o=e.stageIndexes;function i(e,o){t.smw[e].v(n.swipedX)[o]()}this.runActionsForEvent=function(e){var r,a,c;t.container.contains(t.slideSwipingHoverer)||t.container.appendChild(t.slideSwipingHoverer),r=t.container,a=s,(c=r.classList).contains(a)||c.add(a),n.swipedX=e.screenX-n.downScreenX;var l=o.previous,u=o.next;i(o.current,"z"),void 0!==l&&n.swipedX>0?i(l,"ne"):void 0!==u&&n.swipedX<0&&i(u,"p")}}function V(e){var t=e.props.sources,n=e.resolve,o=e.sourcePointerProps,i=n(q);1===t.length?this.listener=function(){o.swipedX=1}:this.listener=function(e){o.isPointering&&i.runActionsForEvent(e)}}function _(e){var t=e.core.slideIndexChanger,n=e.elements.smw,o=e.stageIndexes,i=e.sws;function r(e){var t=n[o.current];t.a(),t[e]()}function s(e,t){void 0!==e&&(n[e].s(),n[e][t]())}this.runPositiveSwipedXActions=function(){var e=o.previous;if(void 0===e)r("z");else{r("p");var n=o.next;t.changeTo(e);var a=o.previous;i.d(a),i.b(n),r("z"),s(a,"ne")}},this.runNegativeSwipedXActions=function(){var e=o.next;if(void 0===e)r("z");else{r("ne");var n=o.previous;t.changeTo(e);var a=o.next;i.d(a),i.b(n),r("z"),s(a,"p")}}}function Y(e,t){e.contains(t)&&e.removeChild(t)}function J(e){var t=e.core.lightboxCloser,n=e.elements,o=e.resolve,i=e.sourcePointerProps,r=o(_);this.runNoSwipeActions=function(){Y(n.container,n.slideSwipingHoverer),i.isSourceDownEventTarget||t.closeLightbox(),i.isPointering=!1},this.runActions=function(){i.swipedX>0?r.runPositiveSwipedXActions():r.runNegativeSwipedXActions(),Y(n.container,n.slideSwipingHoverer),n.container.classList.remove(s),i.isPointering=!1}}function G(e){var t=e.resolve,n=e.sourcePointerProps,o=t(J);this.listener=function(){n.isPointering&&(n.swipedX?o.runActions():o.runNoSwipeActions())}}function $(e){var t=this,n=e.core,o=n.eventsDispatcher,i=n.globalEventsController,r=n.scrollbarRecompensor,s=e.data,a=e.elements,c=e.fs,u=e.props,d=e.sourcePointerProps;this.isLightboxFadingOut=!1,this.runActions=function(){t.isLightboxFadingOut=!0,a.container.classList.add(v),i.removeListeners(),u.exitFullscreenOnClose&&s.ifs&&c.x(),setTimeout((function(){t.isLightboxFadingOut=!1,d.isPointering=!1,a.container.classList.remove(v),document.documentElement.classList.remove(l),r.removeRecompense(),document.body.removeChild(a.container),o.dispatch("onClose")}),270)}}function K(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function Q(e){var t,n,o;n=(t=e).core.eventsDispatcher,o=t.props,n.dispatch=function(e){o[e]&&o[e]()},function(e){var t=e.componentsServices,n=e.data,o=e.fs,i=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"];function r(e){for(var t=0;tinnerHeight&&(document.body.style.marginRight=t.scrollbarWidth+"px")}n.addRecompense=function(){"complete"===document.readyState?o():addEventListener("load",(function(){o(),n.addRecompense=o}))},n.removeRecompense=function(){document.body.style.removeProperty("margin-right")}}(e),function(e){var t=e.core,n=t.slideChangeFacade,o=t.slideIndexChanger,i=t.stageManager;e.props.sources.length>1?(n.changeToPrevious=function(){o.jumpTo(i.getPreviousSlideIndex())},n.changeToNext=function(){o.jumpTo(i.getNextSlideIndex())}):(n.changeToPrevious=function(){},n.changeToNext=function(){})}(e),function(e){var t=e.componentsServices,n=e.core,o=n.slideIndexChanger,i=n.sourceDisplayFacade,r=n.stageManager,s=e.elements,a=s.smw,c=s.sourceAnimationWrappers,l=e.isl,u=e.stageIndexes,d=e.sws;o.changeTo=function(e){u.current=e,r.updateStageIndexes(),t.setSlideNumber(e+1),i.displaySourcesWhichShouldBeDisplayed()},o.jumpTo=function(e){var t=u.previous,n=u.current,i=u.next,s=l[n],f=l[e];o.changeTo(e);for(var p=0;p1&&(n=(t=e).core.slideChangeFacade,B(t,n.changeToPrevious,"previous","M18.271,9.212H3.615l4.184-4.184c0.306-0.306,0.306-0.801,0-1.107c-0.306-0.306-0.801-0.306-1.107,0L1.21,9.403C1.194,9.417,1.174,9.421,1.158,9.437c-0.181,0.181-0.242,0.425-0.209,0.66c0.005,0.038,0.012,0.071,0.022,0.109c0.028,0.098,0.075,0.188,0.142,0.271c0.021,0.026,0.021,0.061,0.045,0.085c0.015,0.016,0.034,0.02,0.05,0.033l5.484,5.483c0.306,0.307,0.801,0.307,1.107,0c0.306-0.305,0.306-0.801,0-1.105l-4.184-4.185h14.656c0.436,0,0.788-0.353,0.788-0.788S18.707,9.212,18.271,9.212z"),B(t,n.changeToNext,"next","M1.729,9.212h14.656l-4.184-4.184c-0.307-0.306-0.307-0.801,0-1.107c0.305-0.306,0.801-0.306,1.106,0l5.481,5.482c0.018,0.014,0.037,0.019,0.053,0.034c0.181,0.181,0.242,0.425,0.209,0.66c-0.004,0.038-0.012,0.071-0.021,0.109c-0.028,0.098-0.075,0.188-0.143,0.271c-0.021,0.026-0.021,0.061-0.045,0.085c-0.015,0.016-0.034,0.02-0.051,0.033l-5.483,5.483c-0.306,0.307-0.802,0.307-1.106,0c-0.307-0.305-0.307-0.801,0-1.105l4.184-4.185H1.729c-0.436,0-0.788-0.353-0.788-0.788S1.293,9.212,1.729,9.212z")),function(e){for(var t=e.props.sources,n=e.resolve,o=n(L),i=n(H),r=n(R,[o,i]),s=0;s0&&void 0!==arguments[0]?arguments[0]:0,i=m.previous,a=m.current,d=m.next;m.current=n,p.i||S(e),u.updateStageIndexes(),p.i?(v.c(),v.a(),v.b(i),v.b(a),v.b(d),o.dispatch("onShow")):b(),c.displaySourcesWhichShouldBeDisplayed(),t.setSlideNumber(n+1),document.body.appendChild(h.container),document.documentElement.classList.add(l),s.addRecompense(),r.attachListeners(),f.runActions(),h.smw[m.current].n(),o.dispatch("onOpen")}}function ee(e,t,n){return(ee=te()?Reflect.construct.bind():function(e,t,n){var o=[null];o.push.apply(o,t);var i=new(Function.bind.apply(e,o));return n&&ne(i,n.prototype),i}).apply(null,arguments)}function te(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function ne(e,t){return(ne=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function oe(e){return function(e){if(Array.isArray(e))return ie(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return ie(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ie(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ie(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:[];return n.unshift(e),ee(t,oe(n))},this.collections={sourceLoadHandlers:[],sourcesRenderFunctions:[],sourceSizers:[]},this.core={eventsDispatcher:{},globalEventsController:{},lightboxCloser:{},lightboxUpdater:{},scrollbarRecompensor:{},slideChangeFacade:{},slideIndexChanger:{},sourcesPointerDown:{},sourceDisplayFacade:{},stageManager:{},windowResizeActioner:{}},this.fs={},this.sws={},Z(this),this.close=function(){return e.core.lightboxCloser.closeLightbox()}},window.fsLightboxInstances={},re(),window.refreshFsLightbox=function(){for(var e in fsLightboxInstances){var t=fsLightboxInstances[e].props;fsLightboxInstances[e]=new FsLightbox,fsLightboxInstances[e].props=t,fsLightboxInstances[e].props.sources=[],fsLightboxInstances[e].elements.a=[]}re()}}])})); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/fslightbox/package.json b/gin_ops/static/dist/libs/fslightbox/package.json new file mode 100644 index 0000000..f7c9c74 --- /dev/null +++ b/gin_ops/static/dist/libs/fslightbox/package.json @@ -0,0 +1,38 @@ +{ + "name": "fslightbox", + "version": "3.4.1", + "description": "An easy to use vanilla JavaScript plug-in without production dependencies for displaying images, videos, or, through custom sources, anything you want in a clean overlying box.", + "author": "Bantha Apps Piotr Zdziarski", + "license": "MIT", + "homepage": "https://fslightbox.com", + "bugs": { + "url": "https://github.com/banthagroup/fslightbox/issues" + }, + "main": "index.js", + "keywords": [ + "fslightbox", + "vanilla javascript fslightbox", + "vanilla js fslightbox", + "vanilla javascript lightbox", + "vanilla js lightbox", + "lightbox" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/banthagroup/fslightbox" + }, + "scripts": { + "w": "webpack-dev-server --host 0.0.0.0", + "p": "webpack --config webpack.prod.config.js && cp index.js fslightbox.js" + }, + "devDependencies": { + "@babel/core": "^7.4.4", + "@babel/preset-env": "^7.4.4", + "@babel/register": "^7.4.4", + "babel-loader": "^8.0.5", + "html-webpack-plugin": "^3.2.0", + "webpack": "^4.30.0", + "webpack-cli": "^3.3.1", + "webpack-dev-server": "^3.3.1" + } +} diff --git a/gin_ops/static/dist/libs/jsvectormap/dist/js/jsvectormap.js b/gin_ops/static/dist/libs/jsvectormap/dist/js/jsvectormap.js new file mode 100644 index 0000000..875ad5a --- /dev/null +++ b/gin_ops/static/dist/libs/jsvectormap/dist/js/jsvectormap.js @@ -0,0 +1,2318 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.jsVectorMap = factory()); +})(this, (function () { 'use strict'; + + function _inheritsLoose(subClass, superClass) { + subClass.prototype = Object.create(superClass.prototype); + subClass.prototype.constructor = subClass; + _setPrototypeOf(subClass, superClass); + } + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + return _setPrototypeOf(o, p); + } + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + return self; + } + function _readOnlyError(name) { + throw new TypeError("\"" + name + "\" is read-only"); + } + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + return arr2; + } + function _createForOfIteratorHelperLoose(o, allowArrayLike) { + var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; + if (it) return (it = it.call(o)).next.bind(it); + if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { + if (it) o = it; + var i = 0; + return function () { + if (i >= o.length) return { + done: true + }; + return { + done: false, + value: o[i++] + }; + }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + // Matches polyfill + // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches + if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { + var matches = (this.document || this.ownerDocument).querySelectorAll(s); + var i = matches.length; + while ((_readOnlyError("i")) >= 0 && matches.item(i) !== this) {} + return i > -1; + }; + } + + // Object.assign polyfill + // https://gist.github.com/spiralx/68cf40d7010d829340cb + if (!Object.assign) { + Object.defineProperty(Object, 'assign', { + enumerable: false, + configurable: true, + writable: true, + value: function value(target) { + + if (target === undefined || target === null) { + throw new TypeError('Cannot convert first argument to object'); + } + var to = Object(target); + for (var i = 1; i < arguments.length; i++) { + var nextSource = arguments[i]; + if (nextSource === undefined || nextSource === null) { + continue; + } + nextSource = Object(nextSource); + var keysArray = Object.keys(Object(nextSource)); + for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { + var nextKey = keysArray[nextIndex]; + var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + to[nextKey] = nextSource[nextKey]; + } + } + } + return to; + } + }); + } + + /** + * By https://github.com/TehShrike/deepmerge + */ + + var isMergeableObject = function isMergeableObject(value) { + return isNonNullObject(value) && !isSpecial(value); + }; + function isNonNullObject(value) { + return !!value && typeof value === 'object'; + } + function isSpecial(value) { + var stringValue = Object.prototype.toString.call(value); + return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isNode(value) || isReactElement(value); + } + + // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 + var canUseSymbol = typeof Symbol === 'function' && Symbol.for; + var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; + function isReactElement(value) { + return value.$$typeof === REACT_ELEMENT_TYPE; + } + function isNode(value) { + return value instanceof Node; + } + function emptyTarget(val) { + return Array.isArray(val) ? [] : {}; + } + function cloneUnlessOtherwiseSpecified(value, options) { + return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value; + } + function defaultArrayMerge(target, source, options) { + return target.concat(source).map(function (element) { + return cloneUnlessOtherwiseSpecified(element, options); + }); + } + function getMergeFunction(key, options) { + if (!options.customMerge) { + return deepmerge; + } + var customMerge = options.customMerge(key); + return typeof customMerge === 'function' ? customMerge : deepmerge; + } + function getEnumerableOwnPropertySymbols(target) { + return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) { + return target.propertyIsEnumerable(symbol); + }) : []; + } + function getKeys(target) { + return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); + } + function propertyIsOnObject(object, property) { + try { + return property in object; + } catch (_) { + return false; + } + } + + // Protects from prototype poisoning and unexpected merging up the prototype chain. + function propertyIsUnsafe(target, key) { + return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, + && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, + && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable. + } + + function mergeObject(target, source, options) { + var destination = {}; + if (options.isMergeableObject(target)) { + getKeys(target).forEach(function (key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); + }); + } + getKeys(source).forEach(function (key) { + if (propertyIsUnsafe(target, key)) { + return; + } + if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { + destination[key] = getMergeFunction(key, options)(target[key], source[key], options); + } else { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); + } + }); + return destination; + } + var deepmerge = function deepmerge(target, source, options) { + options = options || {}; + options.arrayMerge = options.arrayMerge || defaultArrayMerge; + options.isMergeableObject = options.isMergeableObject || isMergeableObject; + // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() + // implementations can use it. The caller may not replace it. + options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; + var sourceIsArray = Array.isArray(source); + var targetIsArray = Array.isArray(target); + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, options); + } else if (sourceIsArray) { + return options.arrayMerge(target, source, options); + } else { + return mergeObject(target, source, options); + } + }; + + /** + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- + */ + var getElement = function getElement(selector) { + if (typeof selector === 'object' && typeof selector.nodeType !== 'undefined') { + return selector; + } + if (typeof selector === 'string') { + return document.querySelector(selector); + } + return null; + }; + var createElement = function createElement(type, classes, content, html) { + if (html === void 0) { + html = false; + } + var el = document.createElement(type); + if (content) { + el[!html ? 'textContent' : 'innerHTML'] = content; + } + if (classes) { + el.className = classes; + } + return el; + }; + var findElement = function findElement(parentElement, selector) { + return Element.prototype.querySelector.call(parentElement, selector); + }; + var removeElement = function removeElement(target) { + target.parentNode.removeChild(target); + }; + var isImageUrl = function isImageUrl(url) { + return /\.(jpg|gif|png)$/.test(url); + }; + var hyphenate = function hyphenate(string) { + return string.replace(/[\w]([A-Z])/g, function (m) { + return m[0] + "-" + m[1]; + }).toLowerCase(); + }; + var merge = function merge(target, source, deep) { + if (deep === void 0) { + deep = false; + } + if (deep) { + return deepmerge(target, source); + } + return Object.assign(target, source); + }; + var getLineUid = function getLineUid(from, to) { + return from.toLowerCase() + ":to:" + to.toLowerCase(); + }; + var inherit = function inherit(target, source) { + Object.assign(target.prototype, source); + }; + + var eventRegistry = {}; + var eventUid = 1; + + /** + * ------------------------------------------------------------------------ + * Event Handler + * ------------------------------------------------------------------------ + */ + var EventHandler = { + on: function on(element, event, handler, options) { + if (options === void 0) { + options = {}; + } + var uid = "jvm:" + event + "::" + eventUid++; + eventRegistry[uid] = { + selector: element, + handler: handler + }; + handler._uid = uid; + element.addEventListener(event, handler, options); + }, + delegate: function delegate(element, event, selector, handler) { + event = event.split(' '); + event.forEach(function (eventName) { + EventHandler.on(element, eventName, function (e) { + var target = e.target; + if (target.matches(selector)) { + handler.call(target, e); + } + }); + }); + }, + off: function off(element, event, handler) { + var eventType = event.split(':')[1]; + element.removeEventListener(eventType, handler); + delete eventRegistry[handler._uid]; + }, + flush: function flush() { + Object.keys(eventRegistry).forEach(function (event) { + EventHandler.off(eventRegistry[event].selector, event, eventRegistry[event].handler); + }); + }, + getEventRegistry: function getEventRegistry() { + return eventRegistry; + } + }; + + function setupContainerEvents() { + var _this = this; + var map = this; + var mouseDown = false; + var oldPageX; + var oldPageY; + if (this.params.draggable) { + EventHandler.on(this.container, 'mousemove', function (e) { + if (!mouseDown) { + return false; + } + map.transX -= (oldPageX - e.pageX) / map.scale; + map.transY -= (oldPageY - e.pageY) / map.scale; + map._applyTransform(); + oldPageX = e.pageX; + oldPageY = e.pageY; + }); + EventHandler.on(this.container, 'mousedown', function (e) { + mouseDown = true; + oldPageX = e.pageX; + oldPageY = e.pageY; + return false; + }); + EventHandler.on(document.body, 'mouseup', function () { + mouseDown = false; + }); + } + if (this.params.zoomOnScroll) { + EventHandler.on(this.container, 'wheel', function (event) { + var deltaY = ((event.deltaY || -event.wheelDelta || event.detail) >> 10 || 1) * 75; + var rect = _this.container.getBoundingClientRect(); + var offsetX = event.pageX - rect.left - window.pageXOffset; + var offsetY = event.pageY - rect.top - window.pageYOffset; + var zoomStep = Math.pow(1 + map.params.zoomOnScrollSpeed / 1000, -1.5 * deltaY); + if (map.tooltip) { + map._tooltip.hide(); + } + map._setScale(map.scale * zoomStep, offsetX, offsetY); + event.preventDefault(); + }); + } + } + + var Events = { + onLoaded: 'map:loaded', + onViewportChange: 'viewport:changed', + onRegionClick: 'region:clicked', + onMarkerClick: 'marker:clicked', + onRegionSelected: 'region:selected', + onMarkerSelected: 'marker:selected', + onRegionTooltipShow: 'region.tooltip:show', + onMarkerTooltipShow: 'marker.tooltip:show', + onDestroyed: 'map:destroyed' + }; + + var parseEvent = function parseEvent(map, selector, isTooltip) { + var element = getElement(selector); + var type = element.getAttribute('class').indexOf('jvm-region') === -1 ? 'marker' : 'region'; + var isRegion = type === 'region'; + var code = isRegion ? element.getAttribute('data-code') : element.getAttribute('data-index'); + var event = isRegion ? Events.onRegionSelected : Events.onMarkerSelected; + + // Init tooltip event + if (isTooltip) { + event = isRegion ? Events.onRegionTooltipShow : Events.onMarkerTooltipShow; + } + return { + type: type, + code: code, + event: event, + element: isRegion ? map.regions[code].element : map._markers[code].element, + tooltipText: isRegion ? map._mapData.paths[code].name || '' : map._markers[code].config.name || '' + }; + }; + function setupElementEvents() { + var map = this; + var container = this.container; + var pageX, pageY, mouseMoved; + EventHandler.on(container, 'mousemove', function (event) { + if (Math.abs(pageX - event.pageX) + Math.abs(pageY - event.pageY) > 2) { + mouseMoved = true; + } + }); + + // When the mouse is pressed + EventHandler.delegate(container, 'mousedown', '.jvm-element', function (event) { + pageX = event.pageX; + pageY = event.pageY; + mouseMoved = false; + }); + + // When the mouse is over the region/marker | When the mouse is out the region/marker + EventHandler.delegate(container, 'mouseover mouseout', '.jvm-element', function (event) { + var data = parseEvent(map, this, true); + var showTooltip = map.params.showTooltip; + if (event.type === 'mouseover') { + data.element.hover(true); + if (showTooltip) { + map._tooltip.text(data.tooltipText); + map._tooltip.show(); + map._emit(data.event, [event, map._tooltip, data.code]); + } + } else { + data.element.hover(false); + if (showTooltip) { + map._tooltip.hide(); + } + } + }); + + // When the click is released + EventHandler.delegate(container, 'mouseup', '.jvm-element', function (event) { + var data = parseEvent(map, this); + if (mouseMoved) { + return; + } + if (data.type === 'region' && map.params.regionsSelectable || data.type === 'marker' && map.params.markersSelectable) { + var element = data.element; + + // We're checking if regions/markers|SelectableOne option is presented + if (map.params[data.type + "sSelectableOne"]) { + map._clearSelected(data.type + "s"); + } + if (data.element.isSelected) { + element.select(false); + } else { + element.select(true); + } + map._emit(data.event, [data.code, element.isSelected, map._getSelected(data.type + "s")]); + } + }); + + // When region/marker is clicked + EventHandler.delegate(container, 'click', '.jvm-element', function (event) { + var _parseEvent = parseEvent(map, this), + type = _parseEvent.type, + code = _parseEvent.code; + map._emit(type === 'region' ? Events.onRegionClick : Events.onMarkerClick, [event, code]); + }); + } + + function setupZoomButtons() { + var _this = this; + var zoomin = createElement('div', 'jvm-zoom-btn jvm-zoomin', '+', true); + var zoomout = createElement('div', 'jvm-zoom-btn jvm-zoomout', '−', true); + this.container.appendChild(zoomin); + this.container.appendChild(zoomout); + var handler = function handler(zoomin) { + if (zoomin === void 0) { + zoomin = true; + } + return function () { + return _this._setScale(zoomin ? _this.scale * _this.params.zoomStep : _this.scale / _this.params.zoomStep, _this._width / 2, _this._height / 2, false, _this.params.zoomAnimate); + }; + }; + EventHandler.on(zoomin, 'click', handler()); + EventHandler.on(zoomout, 'click', handler(false)); + } + + function setupContainerTouchEvents() { + var map = this, + touchStartScale, + touchStartDistance, + touchX, + touchY, + centerTouchX, + centerTouchY, + lastTouchesLength; + var handleTouchEvent = function handleTouchEvent(e) { + var touches = e.touches; + var offset, scale, transXOld, transYOld; + if (e.type == 'touchstart') { + lastTouchesLength = 0; + } + if (touches.length == 1) { + if (lastTouchesLength == 1) { + transXOld = map.transX; + transYOld = map.transY; + map.transX -= (touchX - touches[0].pageX) / map.scale; + map.transY -= (touchY - touches[0].pageY) / map.scale; + map._tooltip.hide(); + map._applyTransform(); + if (transXOld != map.transX || transYOld != map.transY) { + e.preventDefault(); + } + } + touchX = touches[0].pageX; + touchY = touches[0].pageY; + } else if (touches.length == 2) { + if (lastTouchesLength == 2) { + scale = Math.sqrt(Math.pow(touches[0].pageX - touches[1].pageX, 2) + Math.pow(touches[0].pageY - touches[1].pageY, 2)) / touchStartDistance; + map._setScale(touchStartScale * scale, centerTouchX, centerTouchY); + map._tooltip.hide(); + e.preventDefault(); + } else { + var rect = map.container.getBoundingClientRect(); + offset = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX + }; + if (touches[0].pageX > touches[1].pageX) { + centerTouchX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2; + } else { + centerTouchX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2; + } + if (touches[0].pageY > touches[1].pageY) { + centerTouchY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2; + } else { + centerTouchY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2; + } + centerTouchX -= offset.left; + centerTouchY -= offset.top; + touchStartScale = map.scale; + touchStartDistance = Math.sqrt(Math.pow(touches[0].pageX - touches[1].pageX, 2) + Math.pow(touches[0].pageY - touches[1].pageY, 2)); + } + } + lastTouchesLength = touches.length; + }; + EventHandler.on(map.container, 'touchstart', handleTouchEvent); + EventHandler.on(map.container, 'touchmove', handleTouchEvent); + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var BaseComponent = /*#__PURE__*/function () { + function BaseComponent() {} + var _proto = BaseComponent.prototype; + _proto.dispose = function dispose() { + if (this._tooltip) { + removeElement(this._tooltip); + } else { + // @todo: move shape in base component in v2 + this.shape.remove(); + } + for (var _iterator = _createForOfIteratorHelperLoose(Object.getOwnPropertyNames(this)), _step; !(_step = _iterator()).done;) { + var propertyName = _step.value; + this[propertyName] = null; + } + }; + return BaseComponent; + }(); + + /** + * ------------------------------------------------------------------------ + * Interactable + * ------------------------------------------------------------------------ + */ + var Interactable = { + getLabelText: function getLabelText(key, label) { + if (!label) { + return; + } + if (typeof label.render === 'function') { + var params = []; + + // Pass additional paramater (Marker config object) in case it's a Marker. + if (this.config && this.config.marker) { + params.push(this.config.marker); + } + + // Becuase we need to add the key always at the end + params.push(key); + return label.render.apply(this, params); + } + return key; + }, + getLabelOffsets: function getLabelOffsets(key, label) { + if (typeof label.offsets === 'function') { + return label.offsets(key); + } + + // If offsets are an array of offsets e.g offsets: [ [0, 25], [10, 15] ] + if (Array.isArray(label.offsets)) { + return label.offsets[key]; + } + return [0, 0]; + }, + setStyle: function setStyle(property, value) { + this.shape.setStyle(property, value); + }, + remove: function remove() { + this.shape.remove(); + if (this.label) this.label.remove(); + }, + hover: function hover(state) { + this._setStatus('isHovered', state); + }, + select: function select(state) { + this._setStatus('isSelected', state); + }, + // Private + _setStatus: function _setStatus(property, state) { + this.shape[property] = state; + this.shape.updateStyle(); + this[property] = state; + if (this.label) { + this.label[property] = state; + this.label.updateStyle(); + } + } + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Region = /*#__PURE__*/function (_BaseComponent) { + _inheritsLoose(Region, _BaseComponent); + function Region(_ref) { + var _this; + var map = _ref.map, + code = _ref.code, + path = _ref.path, + style = _ref.style, + label = _ref.label, + labelStyle = _ref.labelStyle, + labelsGroup = _ref.labelsGroup; + _this = _BaseComponent.call(this) || this; + _this._map = map; + _this.shape = _this._createRegion(path, code, style); + var text = _this.getLabelText(code, label); + + // If label is passed and render function returns something + if (label && text) { + var bbox = _this.shape.getBBox(); + var offsets = _this.getLabelOffsets(code, label); + _this.labelX = bbox.x + bbox.width / 2 + offsets[0]; + _this.labelY = bbox.y + bbox.height / 2 + offsets[1]; + _this.label = _this._map.canvas.createText({ + text: text, + textAnchor: 'middle', + alignmentBaseline: 'central', + dataCode: code, + x: _this.labelX, + y: _this.labelY + }, labelStyle, labelsGroup); + _this.label.addClass('jvm-region jvm-element'); + } + return _this; + } + var _proto = Region.prototype; + _proto._createRegion = function _createRegion(path, code, style) { + path = this._map.canvas.createPath({ + d: path, + dataCode: code + }, style); + path.addClass('jvm-region jvm-element'); + return path; + }; + _proto.updateLabelPosition = function updateLabelPosition() { + if (this.label) { + this.label.set({ + x: this.labelX * this._map.scale + this._map.transX * this._map.scale, + y: this.labelY * this._map.scale + this._map.transY * this._map.scale + }); + } + }; + return Region; + }(BaseComponent); + inherit(Region, Interactable); + + function createRegions() { + this._regionLabelsGroup = this._regionLabelsGroup || this.canvas.createGroup('jvm-regions-labels-group'); + for (var code in this._mapData.paths) { + var region = new Region({ + map: this, + code: code, + path: this._mapData.paths[code].path, + style: merge({}, this.params.regionStyle), + labelStyle: this.params.regionLabelStyle, + labelsGroup: this._regionLabelsGroup, + label: this.params.labels && this.params.labels.regions + }); + this.regions[code] = { + config: this._mapData.paths[code], + element: region + }; + } + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Line = /*#__PURE__*/function (_BaseComponent) { + _inheritsLoose(Line, _BaseComponent); + function Line(_ref) { + var _this; + var index = _ref.index, + map = _ref.map, + style = _ref.style, + x1 = _ref.x1, + y1 = _ref.y1, + x2 = _ref.x2, + y2 = _ref.y2, + group = _ref.group, + config = _ref.config; + _this = _BaseComponent.call(this) || this; + _this.config = config; + _this.shape = map.canvas.createLine({ + x1: x1, + y1: y1, + x2: x2, + y2: y2, + dataIndex: index + }, style, group); + _this.shape.addClass('jvm-line'); + return _this; + } + var _proto = Line.prototype; + _proto.setStyle = function setStyle(property, value) { + this.shape.setStyle(property, value); + }; + return Line; + }(BaseComponent); + + function createLines(lines, markers, isRecentlyCreated) { + if (isRecentlyCreated === void 0) { + isRecentlyCreated = false; + } + var point1 = false, + point2 = false; + + // Create group for holding lines + // we're checking if `linesGroup` exists or not becuase we may add lines + // after the map has loaded so we will append the futured lines to this group as well. + this.linesGroup = this.linesGroup || this.canvas.createGroup('jvm-lines-group'); + for (var index in lines) { + var config = lines[index]; + for (var mindex in markers) { + var markerConfig = isRecentlyCreated ? markers[mindex].config : markers[mindex]; + if (markerConfig.name === config.from) { + point1 = this.getMarkerPosition(markerConfig); + } + if (markerConfig.name === config.to) { + point2 = this.getMarkerPosition(markerConfig); + } + } + if (point1 !== false && point2 !== false) { + // Register lines with unique keys + this._lines[getLineUid(config.from, config.to)] = new Line({ + index: index, + map: this, + // Merge the default `lineStyle` object with the custom `line` config style + style: merge({ + initial: this.params.lineStyle + }, { + initial: config.style || {} + }, true), + x1: point1.x, + y1: point1.y, + x2: point2.x, + y2: point2.y, + group: this.linesGroup, + config: config + }); + } + } + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Marker = /*#__PURE__*/function (_BaseComponent) { + _inheritsLoose(Marker, _BaseComponent); + function Marker(_ref) { + var _this; + var index = _ref.index, + style = _ref.style, + label = _ref.label, + cx = _ref.cx, + cy = _ref.cy, + map = _ref.map, + group = _ref.group; + _this = _BaseComponent.call(this) || this; + + // Private + _this._map = map; + _this._isImage = !!style.initial.image; + + // Protected + _this.config = arguments[0]; + _this.shape = map.canvas[_this._isImage ? 'createImage' : 'createCircle']({ + dataIndex: index, + cx: cx, + cy: cy + }, style, group); + _this.shape.addClass('jvm-marker jvm-element'); + if (_this._isImage) { + _this.updateLabelPosition(); + } + if (label) { + _this._createLabel(_this.config); + } + return _this; + } + var _proto = Marker.prototype; + _proto.updateLabelPosition = function updateLabelPosition() { + if (this.label) { + this.label.set({ + x: this._labelX * this._map.scale + this._offsets[0] + this._map.transX * this._map.scale + 5 + (this._isImage ? (this.shape.width || 0) / 2 : this.shape.node.r.baseVal.value), + y: this._labelY * this._map.scale + this._map.transY * this._map.scale + this._offsets[1] + }); + } + }; + _proto._createLabel = function _createLabel(_ref2) { + var index = _ref2.index, + map = _ref2.map, + label = _ref2.label, + labelsGroup = _ref2.labelsGroup, + cx = _ref2.cx, + cy = _ref2.cy, + marker = _ref2.marker, + isRecentlyCreated = _ref2.isRecentlyCreated; + var labelText = this.getLabelText(index, label); + this._labelX = cx / map.scale - map.transX; + this._labelY = cy / map.scale - map.transY; + this._offsets = isRecentlyCreated && marker.offsets ? marker.offsets : this.getLabelOffsets(index, label); + this.label = map.canvas.createText({ + text: labelText, + dataIndex: index, + x: this._labelX, + y: this._labelY, + dy: '0.6ex' + }, map.params.markerLabelStyle, labelsGroup); + this.label.addClass('jvm-marker jvm-element'); + if (isRecentlyCreated) { + this.updateLabelPosition(); + } + }; + return Marker; + }(BaseComponent); + inherit(Marker, Interactable); + + function createMarkers(markers, isRecentlyCreated) { + var _this = this; + if (markers === void 0) { + markers = {}; + } + if (isRecentlyCreated === void 0) { + isRecentlyCreated = false; + } + // Create groups for holding markers and markers labels + // We're checking if `markersGroup` exists or not becuase we may add markers after the map has loaded + // So we will append the futured markers to this group as well. + this._markersGroup = this._markersGroup || this.canvas.createGroup('jvm-markers-group'); + this._markerLabelsGroup = this._markerLabelsGroup || this.canvas.createGroup('jvm-markers-labels-group'); + var _loop = function _loop() { + var config = markers[index]; + var point = _this.getMarkerPosition(config); + var uid = config.coords.join(':'); + if (!point) { + return "continue"; + } + + // We're checking if recently created marker does already exist + // If it does we don't need to create it again, so we'll continue + // Becuase we may have more than one marker submitted via `addMarkers` method. + if (isRecentlyCreated) { + if (Object.keys(_this._markers).filter(function (i) { + return _this._markers[i]._uid === uid; + }).length) { + return "continue"; + } + index = Object.keys(_this._markers).length; + } + var marker = new Marker({ + index: index, + map: _this, + // Merge the `markerStyle` object with the marker config `style` if presented. + style: merge(_this.params.markerStyle, { + initial: config.style || {} + }, true), + label: _this.params.labels && _this.params.labels.markers, + labelsGroup: _this._markerLabelsGroup, + cx: point.x, + cy: point.y, + group: _this._markersGroup, + marker: config, + isRecentlyCreated: isRecentlyCreated + }); + + // Check for marker duplication + // this is useful when for example: a user clicks a button for creating marker two times + // so it will remove the old one and the new one will take its place. + if (_this._markers[index]) { + _this.removeMarkers([index]); + } + _this._markers[index] = { + _uid: uid, + config: config, + element: marker + }; + }; + for (var index in markers) { + var _ret = _loop(); + if (_ret === "continue") continue; + } + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Legend = /*#__PURE__*/function () { + function Legend(options) { + if (options === void 0) { + options = {}; + } + this._options = options; + this._map = this._options.map; + this._series = this._options.series; + this._body = createElement('div', 'jvm-legend'); + if (this._options.cssClass) { + this._body.setAttribute('class', this._options.cssClass); + } + if (options.vertical) { + this._map.legendVertical.appendChild(this._body); + } else { + this._map.legendHorizontal.appendChild(this._body); + } + this.render(); + } + var _proto = Legend.prototype; + _proto.render = function render() { + var ticks = this._series.scale.getTicks(); + var inner = createElement('div', 'jvm-legend-inner'); + this._body.innderHTML = ''; + if (this._options.title) { + var legendTitle = createElement('div', 'jvm-legend-title', this._options.title); + this._body.appendChild(legendTitle); + } + this._body.appendChild(inner); + for (var i = 0; i < ticks.length; i++) { + var tick = createElement('div', 'jvm-legend-tick'); + var sample = createElement('div', 'jvm-legend-tick-sample'); + switch (this._series.config.attribute) { + case 'fill': + if (isImageUrl(ticks[i].value)) { + sample.style.background = "url(" + ticks[i].value + ")"; + } else { + sample.style.background = ticks[i].value; + } + break; + case 'stroke': + sample.style.background = ticks[i].value; + break; + case 'image': + sample.style.background = "url(" + (typeof ticks[i].value === 'object' ? ticks[i].value.url : ticks[i].value) + ") no-repeat center center"; + sample.style.backgroundSize = 'cover'; + break; + } + tick.appendChild(sample); + var label = ticks[i].label; + if (this._options.labelRender) { + label = this._options.labelRender(label); + } + var tickText = createElement('div', 'jvm-legend-tick-text', label); + tick.appendChild(tickText); + inner.appendChild(tick); + } + }; + return Legend; + }(); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var OrdinalScale = /*#__PURE__*/function () { + function OrdinalScale(scale) { + this._scale = scale; + } + var _proto = OrdinalScale.prototype; + _proto.getValue = function getValue(value) { + return this._scale[value]; + }; + _proto.getTicks = function getTicks() { + var ticks = []; + for (var key in this._scale) { + ticks.push({ + label: key, + value: this._scale[key] + }); + } + return ticks; + }; + return OrdinalScale; + }(); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Series = /*#__PURE__*/function () { + function Series(config, elements, map) { + if (config === void 0) { + config = {}; + } + // Private + this._map = map; + this._elements = elements; // Could be markers or regions + this._values = config.values || {}; + + // Protected + this.config = config; + this.config.attribute = config.attribute || 'fill'; + + // Set initial attributes + if (config.attributes) { + this.setAttributes(config.attributes); + } + if (typeof config.scale === 'object') { + this.scale = new OrdinalScale(config.scale); + } + if (this.config.legend) { + this.legend = new Legend(merge({ + map: this._map, + series: this + }, this.config.legend)); + } + this.setValues(this._values); + } + var _proto = Series.prototype; + _proto.setValues = function setValues(values) { + var attrs = {}; + for (var key in values) { + if (values[key]) { + attrs[key] = this.scale.getValue(values[key]); + } + } + this.setAttributes(attrs); + }; + _proto.setAttributes = function setAttributes(attrs) { + for (var code in attrs) { + if (this._elements[code]) { + this._elements[code].element.setStyle(this.config.attribute, attrs[code]); + } + } + }; + _proto.clear = function clear() { + var key, + attrs = {}; + for (key in this._values) { + if (this._elements[key]) { + attrs[key] = this._elements[key].element.shape.style.initial[this.config.attribute]; + } + } + this.setAttributes(attrs); + this._values = {}; + }; + return Series; + }(); + + function createSeries() { + this.series = { + markers: [], + regions: [] + }; + for (var key in this.params.series) { + for (var i = 0; i < this.params.series[key].length; i++) { + this.series[key][i] = new Series(this.params.series[key][i], key === 'markers' ? this._markers : this.regions, this); + } + } + } + + function applyTransform() { + var maxTransX, maxTransY, minTransX, minTransY; + if (this._defaultWidth * this.scale <= this._width) { + maxTransX = (this._width - this._defaultWidth * this.scale) / (2 * this.scale); + minTransX = (this._width - this._defaultWidth * this.scale) / (2 * this.scale); + } else { + maxTransX = 0; + minTransX = (this._width - this._defaultWidth * this.scale) / this.scale; + } + if (this._defaultHeight * this.scale <= this._height) { + maxTransY = (this._height - this._defaultHeight * this.scale) / (2 * this.scale); + minTransY = (this._height - this._defaultHeight * this.scale) / (2 * this.scale); + } else { + maxTransY = 0; + minTransY = (this._height - this._defaultHeight * this.scale) / this.scale; + } + if (this.transY > maxTransY) { + this.transY = maxTransY; + } else if (this.transY < minTransY) { + this.transY = minTransY; + } + if (this.transX > maxTransX) { + this.transX = maxTransX; + } else if (this.transX < minTransX) { + this.transX = minTransX; + } + this.canvas.applyTransformParams(this.scale, this.transX, this.transY); + if (this._markers) { + this._repositionMarkers(); + } + if (this._lines) { + this._repositionLines(); + } + this._repositionLabels(); + } + + function resize() { + var curBaseScale = this._baseScale; + if (this._width / this._height > this._defaultWidth / this._defaultHeight) { + this._baseScale = this._height / this._defaultHeight; + this._baseTransX = Math.abs(this._width - this._defaultWidth * this._baseScale) / (2 * this._baseScale); + } else { + this._baseScale = this._width / this._defaultWidth; + this._baseTransY = Math.abs(this._height - this._defaultHeight * this._baseScale) / (2 * this._baseScale); + } + this.scale *= this._baseScale / curBaseScale; + this.transX *= this._baseScale / curBaseScale; + this.transY *= this._baseScale / curBaseScale; + } + + function setScale(scale, anchorX, anchorY, isCentered, animate) { + var _this = this; + var zoomStep, + interval, + i = 0, + count = Math.abs(Math.round((scale - this.scale) * 60 / Math.max(scale, this.scale))), + scaleStart, + scaleDiff, + transXStart, + transXDiff, + transYStart, + transYDiff, + transX, + transY; + if (scale > this.params.zoomMax * this._baseScale) { + scale = this.params.zoomMax * this._baseScale; + } else if (scale < this.params.zoomMin * this._baseScale) { + scale = this.params.zoomMin * this._baseScale; + } + if (typeof anchorX != 'undefined' && typeof anchorY != 'undefined') { + zoomStep = scale / this.scale; + if (isCentered) { + transX = anchorX + this._defaultWidth * (this._width / (this._defaultWidth * scale)) / 2; + transY = anchorY + this._defaultHeight * (this._height / (this._defaultHeight * scale)) / 2; + } else { + transX = this.transX - (zoomStep - 1) / scale * anchorX; + transY = this.transY - (zoomStep - 1) / scale * anchorY; + } + } + if (animate && count > 0) { + scaleStart = this.scale; + scaleDiff = (scale - scaleStart) / count; + transXStart = this.transX * this.scale; + transYStart = this.transY * this.scale; + transXDiff = (transX * scale - transXStart) / count; + transYDiff = (transY * scale - transYStart) / count; + interval = setInterval(function () { + i += 1; + _this.scale = scaleStart + scaleDiff * i; + _this.transX = (transXStart + transXDiff * i) / _this.scale; + _this.transY = (transYStart + transYDiff * i) / _this.scale; + _this._applyTransform(); + if (i == count) { + clearInterval(interval); + _this._emit(Events.onViewportChange, [_this.scale, _this.transX, _this.transY]); + } + }, 10); + } else { + this.transX = transX; + this.transY = transY; + this.scale = scale; + this._applyTransform(); + this._emit(Events.onViewportChange, [this.scale, this.transX, this.transY]); + } + } + + function setFocus(config) { + var _this = this; + if (config === void 0) { + config = {}; + } + var bbox, + codes = []; + if (config.region) { + codes.push(config.region); + } else if (config.regions) { + codes = config.regions; + } + if (codes.length) { + codes.forEach(function (code) { + if (_this.regions[code]) { + var itemBbox = _this.regions[code].element.shape.getBBox(); + if (itemBbox) { + // Handle the first loop + if (typeof bbox == 'undefined') { + bbox = itemBbox; + } else { + // get the old bbox properties plus the current + // this kinda incrementing the old values and the new values + bbox = { + x: Math.min(bbox.x, itemBbox.x), + y: Math.min(bbox.y, itemBbox.y), + width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x), + height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y) + }; + } + } + } + }); + return this._setScale(Math.min(this._width / bbox.width, this._height / bbox.height), -(bbox.x + bbox.width / 2), -(bbox.y + bbox.height / 2), true, config.animate); + } else if (config.coords) { + var point = this.coordsToPoint(config.coords[0], config.coords[1]); + var x = this.transX - point.x / this.scale; + var y = this.transY - point.y / this.scale; + return this._setScale(config.scale * this._baseScale, x, y, true, config.animate); + } + } + + function updateSize() { + this._width = this.container.offsetWidth; + this._height = this.container.offsetHeight; + this._resize(); + this.canvas.setSize(this._width, this._height); + this._applyTransform(); + } + + /** + * ------------------------------------------------------------------------ + * Object + * ------------------------------------------------------------------------ + */ + var Proj = { + /* sgn(n){ + if (n > 0) { + return 1; + } else if (n < 0) { + return -1; + } else { + return n; + } + }, */ + mill: function mill(lat, lng, c) { + return { + x: this.radius * (lng - c) * this.radDeg, + y: -this.radius * Math.log(Math.tan((45 + 0.4 * lat) * this.radDeg)) / 0.8 + }; + }, + /* mill_inv(x, y, c) { + return { + lat: (2.5 * Math.atan(Math.exp(0.8 * y / this.radius)) - 5 * Math.PI / 8) * this.degRad, + lng: (c * this.radDeg + x / this.radius) * this.degRad + }; + }, */ + merc: function merc(lat, lng, c) { + return { + x: this.radius * (lng - c) * this.radDeg, + y: -this.radius * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)) + }; + }, + /* merc_inv(x, y, c) { + return { + lat: (2 * Math.atan(Math.exp(y / this.radius)) - Math.PI / 2) * this.degRad, + lng: (c * this.radDeg + x / this.radius) * this.degRad + }; + }, */ + aea: function aea(lat, lng, c) { + var fi0 = 0, + lambda0 = c * this.radDeg, + fi1 = 29.5 * this.radDeg, + fi2 = 45.5 * this.radDeg, + fi = lat * this.radDeg, + lambda = lng * this.radDeg, + n = (Math.sin(fi1) + Math.sin(fi2)) / 2, + C = Math.cos(fi1) * Math.cos(fi1) + 2 * n * Math.sin(fi1), + theta = n * (lambda - lambda0), + ro = Math.sqrt(C - 2 * n * Math.sin(fi)) / n, + ro0 = Math.sqrt(C - 2 * n * Math.sin(fi0)) / n; + return { + x: ro * Math.sin(theta) * this.radius, + y: -(ro0 - ro * Math.cos(theta)) * this.radius + }; + }, + /* aea_inv(xCoord, yCoord, c) { + var x = xCoord / this.radius, + y = yCoord / this.radius, + fi0 = 0, + lambda0 = c * this.radDeg, + fi1 = 29.5 * this.radDeg, + fi2 = 45.5 * this.radDeg, + n = (Math.sin(fi1)+Math.sin(fi2)) / 2, + C = Math.cos(fi1)*Math.cos(fi1)+2*n*Math.sin(fi1), + ro0 = Math.sqrt(C-2*n*Math.sin(fi0))/n, + ro = Math.sqrt(x*x+(ro0-y)*(ro0-y)), + theta = Math.atan( x / (ro0 - y) ); + return { + lat: (Math.asin((C - ro * ro * n * n) / (2 * n))) * this.degRad, + lng: (lambda0 + theta / n) * this.degRad + }; + }, */ + lcc: function lcc(lat, lng, c) { + var fi0 = 0, + lambda0 = c * this.radDeg, + lambda = lng * this.radDeg, + fi1 = 33 * this.radDeg, + fi2 = 45 * this.radDeg, + fi = lat * this.radDeg, + n = Math.log(Math.cos(fi1) * (1 / Math.cos(fi2))) / Math.log(Math.tan(Math.PI / 4 + fi2 / 2) * (1 / Math.tan(Math.PI / 4 + fi1 / 2))), + F = Math.cos(fi1) * Math.pow(Math.tan(Math.PI / 4 + fi1 / 2), n) / n, + ro = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi / 2), n), + ro0 = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi0 / 2), n); + return { + x: ro * Math.sin(n * (lambda - lambda0)) * this.radius, + y: -(ro0 - ro * Math.cos(n * (lambda - lambda0))) * this.radius + }; + } + /* lcc_inv(xCoord, yCoord, c) { + var x = xCoord / this.radius, + y = yCoord / this.radius, + fi0 = 0, + lambda0 = c * this.radDeg, + fi1 = 33 * this.radDeg, + fi2 = 45 * this.radDeg, + n = Math.log( Math.cos(fi1) * (1 / Math.cos(fi2)) ) / Math.log( Math.tan( Math.PI / 4 + fi2 / 2) * (1 / Math.tan( Math.PI / 4 + fi1 / 2) ) ), + F = ( Math.cos(fi1) * Math.pow( Math.tan( Math.PI / 4 + fi1 / 2 ), n ) ) / n, + ro0 = F * Math.pow( 1 / Math.tan( Math.PI / 4 + fi0 / 2 ), n ), + ro = this.sgn(n) * Math.sqrt(x*x+(ro0-y)*(ro0-y)), + theta = Math.atan( x / (ro0 - y) ); + return { + lat: (2 * Math.atan(Math.pow(F/ro, 1/n)) - Math.PI / 2) * this.degRad, + lng: (lambda0 + theta / n) * this.degRad + }; + } */ + }; + Proj.degRad = 180 / Math.PI; + Proj.radDeg = Math.PI / 180; + Proj.radius = 6381372; + + function coordsToPoint(lat, lng) { + var projection = Map.maps[this.params.map].projection; + var _Proj$projection$type = Proj[projection.type](lat, lng, projection.centralMeridian), + x = _Proj$projection$type.x, + y = _Proj$projection$type.y; + var inset = this.getInsetForPoint(x, y); + if (!inset) { + return false; + } + var bbox = inset.bbox; + x = (x - bbox[0].x) / (bbox[1].x - bbox[0].x) * inset.width * this.scale; + y = (y - bbox[0].y) / (bbox[1].y - bbox[0].y) * inset.height * this.scale; + return { + x: x + this.transX * this.scale + inset.left * this.scale, + y: y + this.transY * this.scale + inset.top * this.scale + }; + } + + function getInsetForPoint(x, y) { + var insets = Map.maps[this.params.map].insets; + for (var index = 0; index < insets.length; index++) { + var _insets$index$bbox = insets[index].bbox, + start = _insets$index$bbox[0], + end = _insets$index$bbox[1]; + if (x > start.x && x < end.x && y > start.y && y < end.y) { + return insets[index]; + } + } + } + + function getMarkerPosition(_ref) { + var coords = _ref.coords; + if (Map.maps[this.params.map].projection) { + return this.coordsToPoint.apply(this, coords); + } + return { + x: coords[0] * this.scale + this.transX * this.scale, + y: coords[1] * this.scale + this.transY * this.scale + }; + } + + function repositionLines() { + var point1 = false, + point2 = false; + for (var index in this._lines) { + for (var mindex in this._markers) { + var marker = this._markers[mindex]; + if (marker.config.name === this._lines[index].config.from) { + point1 = this.getMarkerPosition(marker.config); + } + if (marker.config.name === this._lines[index].config.to) { + point2 = this.getMarkerPosition(marker.config); + } + } + if (point1 !== false && point2 !== false) { + this._lines[index].setStyle({ + x1: point1.x, + y1: point1.y, + x2: point2.x, + y2: point2.y + }); + } + } + } + + function repositionMarkers() { + for (var index in this._markers) { + var point = this.getMarkerPosition(this._markers[index].config); + if (point !== false) { + this._markers[index].element.setStyle({ + cx: point.x, + cy: point.y + }); + } + } + } + + function repositionLabels() { + var labels = this.params.labels; + if (!labels) { + return; + } + + // Regions labels + if (labels.regions) { + for (var key in this.regions) { + this.regions[key].element.updateLabelPosition(); + } + } + + // Markers labels + if (labels.markers) { + for (var _key in this._markers) { + this._markers[_key].element.updateLabelPosition(); + } + } + } + + var core = { + _setupContainerEvents: setupContainerEvents, + _setupElementEvents: setupElementEvents, + _setupZoomButtons: setupZoomButtons, + _setupContainerTouchEvents: setupContainerTouchEvents, + _createRegions: createRegions, + _createLines: createLines, + _createMarkers: createMarkers, + _createSeries: createSeries, + _applyTransform: applyTransform, + _resize: resize, + _setScale: setScale, + setFocus: setFocus, + updateSize: updateSize, + coordsToPoint: coordsToPoint, + getInsetForPoint: getInsetForPoint, + getMarkerPosition: getMarkerPosition, + _repositionLines: repositionLines, + _repositionMarkers: repositionMarkers, + _repositionLabels: repositionLabels + }; + + var Defaults = { + map: 'world', + backgroundColor: 'transparent', + draggable: true, + zoomButtons: true, + zoomOnScroll: true, + zoomOnScrollSpeed: 3, + zoomMax: 12, + zoomMin: 1, + zoomAnimate: true, + showTooltip: true, + zoomStep: 1.5, + bindTouchEvents: true, + // Line options + lineStyle: { + stroke: '#808080', + strokeWidth: 1, + strokeLinecap: 'round' + }, + // Marker options + markersSelectable: false, + markersSelectableOne: false, + markerStyle: { + initial: { + r: 7, + fill: '#374151', + fillOpacity: 1, + stroke: '#FFF', + strokeWidth: 5, + strokeOpacity: .5 + }, + hover: { + fill: '#3cc0ff', + cursor: 'pointer' + }, + selected: { + fill: 'blue' + }, + selectedHover: {} + }, + markerLabelStyle: { + initial: { + fontFamily: 'Verdana', + fontSize: 12, + fontWeight: 500, + cursor: 'default', + fill: '#374151' + }, + hover: { + cursor: 'pointer' + }, + selected: {}, + selectedHover: {} + }, + // Region options + regionsSelectable: false, + regionsSelectableOne: false, + regionStyle: { + initial: { + fill: '#dee2e8', + fillOpacity: 1, + stroke: 'none', + strokeWidth: 0 + }, + hover: { + fillOpacity: .7, + cursor: 'pointer' + }, + selected: { + fill: '#9ca3af' + }, + selectedHover: {} + }, + regionLabelStyle: { + initial: { + fontFamily: 'Verdana', + fontSize: '12', + fontWeight: 'bold', + cursor: 'default', + fill: '#35373e' + }, + hover: { + cursor: 'pointer' + } + } + }; + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var SVGElement = /*#__PURE__*/function () { + function SVGElement(name, config) { + this.node = this._createElement(name); + if (config) { + this.set(config); + } + } + + // Create new SVG element `svg`, `g`, `path`, `line`, `circle`, `image`, etc. + // https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS#important_namespace_uris + var _proto = SVGElement.prototype; + _proto._createElement = function _createElement(tagName) { + return document.createElementNS('http://www.w3.org/2000/svg', tagName); + }; + _proto.addClass = function addClass(className) { + this.node.setAttribute('class', className); + }; + _proto.getBBox = function getBBox() { + return this.node.getBBox(); + } + + // Apply attributes on the current node element + ; + _proto.set = function set(property, value) { + if (typeof property === 'object') { + for (var attr in property) { + this.applyAttr(attr, property[attr]); + } + } else { + this.applyAttr(property, value); + } + }; + _proto.get = function get(property) { + return this.style.initial[property]; + }; + _proto.applyAttr = function applyAttr(property, value) { + this.node.setAttribute(hyphenate(property), value); + }; + _proto.remove = function remove() { + removeElement(this.node); + }; + return SVGElement; + }(); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var SVGShapeElement = /*#__PURE__*/function (_SVGElement) { + _inheritsLoose(SVGShapeElement, _SVGElement); + function SVGShapeElement(name, config, style) { + var _this; + if (style === void 0) { + style = {}; + } + _this = _SVGElement.call(this, name, config) || this; + _this.isHovered = false; + _this.isSelected = false; + _this.style = style; + _this.style.current = {}; + _this.updateStyle(); + return _this; + } + var _proto = SVGShapeElement.prototype; + _proto.setStyle = function setStyle(property, value) { + if (typeof property === 'object') { + merge(this.style.current, property); + } else { + var _merge; + merge(this.style.current, (_merge = {}, _merge[property] = value, _merge)); + } + this.updateStyle(); + }; + _proto.updateStyle = function updateStyle() { + var attrs = {}; + merge(attrs, this.style.initial); + merge(attrs, this.style.current); + if (this.isHovered) { + merge(attrs, this.style.hover); + } + if (this.isSelected) { + merge(attrs, this.style.selected); + if (this.isHovered) { + merge(attrs, this.style.selectedHover); + } + } + this.set(attrs); + }; + return SVGShapeElement; + }(SVGElement); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var SVGTextElement = /*#__PURE__*/function (_SVGShapeElement) { + _inheritsLoose(SVGTextElement, _SVGShapeElement); + function SVGTextElement(config, style) { + return _SVGShapeElement.call(this, 'text', config, style) || this; + } + var _proto = SVGTextElement.prototype; + _proto.applyAttr = function applyAttr(attr, value) { + attr === 'text' ? this.node.textContent = value : _SVGShapeElement.prototype.applyAttr.call(this, attr, value); + }; + return SVGTextElement; + }(SVGShapeElement); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var SVGImageElement = /*#__PURE__*/function (_SVGShapeElement) { + _inheritsLoose(SVGImageElement, _SVGShapeElement); + function SVGImageElement(config, style) { + return _SVGShapeElement.call(this, 'image', config, style) || this; + } + var _proto = SVGImageElement.prototype; + _proto.applyAttr = function applyAttr(attr, value) { + var imageUrl; + if (attr === 'image') { + // This get executed when we have url in series.markers[0].scale.someScale.url + if (typeof value === 'object') { + imageUrl = value.url; + this.offset = value.offset || [0, 0]; + } else { + imageUrl = value; + this.offset = [0, 0]; + } + this.node.setAttributeNS('http://www.w3.org/1999/xlink', 'href', imageUrl); + + // Set width and height then call this `applyAttr` again + this.width = 23; + this.height = 23; + this.applyAttr('width', this.width); + this.applyAttr('height', this.height); + this.applyAttr('x', this.cx - this.width / 2 + this.offset[0]); + this.applyAttr('y', this.cy - this.height / 2 + this.offset[1]); + } else if (attr == 'cx') { + this.cx = value; + if (this.width) { + this.applyAttr('x', value - this.width / 2 + this.offset[0]); + } + } else if (attr == 'cy') { + this.cy = value; + if (this.height) { + this.applyAttr('y', value - this.height / 2 + this.offset[1]); + } + } else { + // This time Call SVGElement + _SVGShapeElement.prototype.applyAttr.apply(this, arguments); + } + }; + return SVGImageElement; + }(SVGShapeElement); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var SVGCanvasElement = /*#__PURE__*/function (_SVGElement) { + _inheritsLoose(SVGCanvasElement, _SVGElement); + function SVGCanvasElement(container) { + var _this; + _this = _SVGElement.call(this, 'svg') || this; // Create svg element for holding the whole map + + _this._container = container; + + // Create the defs element + _this._defsElement = new SVGElement('defs'); + + // Create group element which will hold the paths (regions) + _this._rootElement = new SVGElement('g', { + id: 'jvm-regions-group' + }); + + // Append the defs element to the this.node (SVG tag) + _this.node.appendChild(_this._defsElement.node); + + // Append the group to this.node (SVG tag) + _this.node.appendChild(_this._rootElement.node); + + // Append this.node (SVG tag) to the container + _this._container.appendChild(_this.node); + return _this; + } + var _proto = SVGCanvasElement.prototype; + _proto.setSize = function setSize(width, height) { + this.node.setAttribute('width', width); + this.node.setAttribute('height', height); + }; + _proto.applyTransformParams = function applyTransformParams(scale, transX, transY) { + this._rootElement.node.setAttribute('transform', "scale(" + scale + ") translate(" + transX + ", " + transY + ")"); + } + + // Create `path` element + ; + _proto.createPath = function createPath(config, style) { + var path = new SVGShapeElement('path', config, style); + path.node.setAttribute('fill-rule', 'evenodd'); + return this._add(path); + } + + // Create `circle` element + ; + _proto.createCircle = function createCircle(config, style, group) { + var circle = new SVGShapeElement('circle', config, style); + return this._add(circle, group); + } + + // Create `line` element + ; + _proto.createLine = function createLine(config, style, group) { + var line = new SVGShapeElement('line', config, style); + return this._add(line, group); + } + + // Create `text` element + ; + _proto.createText = function createText(config, style, group) { + var text = new SVGTextElement(config, style); + return this._add(text, group); + } + + // Create `image` element + ; + _proto.createImage = function createImage(config, style, group) { + var image = new SVGImageElement(config, style); + return this._add(image, group); + } + + // Create `g` element + ; + _proto.createGroup = function createGroup(id) { + var group = new SVGElement('g'); + this.node.appendChild(group.node); + if (id) { + group.node.id = id; + } + group.canvas = this; + return group; + } + + // Add some element to a spcific group or the root element if the group isn't given + ; + _proto._add = function _add(element, group) { + group = group || this._rootElement; + group.node.appendChild(element.node); + return element; + }; + return SVGCanvasElement; + }(SVGElement); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Tooltip = /*#__PURE__*/function (_BaseComponent) { + _inheritsLoose(Tooltip, _BaseComponent); + function Tooltip(map) { + var _this; + _this = _BaseComponent.call(this) || this; + var tooltip = createElement('div', 'jvm-tooltip'); + _this._map = map; + _this._tooltip = document.body.appendChild(tooltip); + _this._bindEventListeners(); + return _assertThisInitialized(_this) || _assertThisInitialized(_this); + } + var _proto = Tooltip.prototype; + _proto._bindEventListeners = function _bindEventListeners() { + var _this2 = this; + EventHandler.on(this._map.container, 'mousemove', function (event) { + if (!_this2._tooltip.classList.contains('active')) { + return; + } + var container = findElement(_this2._map.container, '#jvm-regions-group').getBoundingClientRect(); + var space = 5; // Space between the cursor and tooltip element + + // Tooltip + var _this2$_tooltip$getBo = _this2._tooltip.getBoundingClientRect(), + height = _this2$_tooltip$getBo.height, + width = _this2$_tooltip$getBo.width; + var topIsPassed = event.clientY <= container.top + height + space; + var top = event.pageY - height - space; + var left = event.pageX - width - space; + + // Ensure the tooltip will never cross outside the canvas area(map) + if (topIsPassed) { + // Top: + top += height + space; + + // The cursor is a bit larger from left side + left -= space * 2; + } + if (event.clientX < container.left + width + space) { + // Left: + left = event.pageX + space + 2; + if (topIsPassed) { + left += space * 2; + } + } + _this2.css({ + top: top + "px", + left: left + "px" + }); + }); + }; + _proto.getElement = function getElement() { + return this._tooltip; + }; + _proto.show = function show() { + this._tooltip.classList.add('active'); + }; + _proto.hide = function hide() { + this._tooltip.classList.remove('active'); + }; + _proto.text = function text(string, html) { + if (html === void 0) { + html = false; + } + var property = html ? 'innerHTML' : 'textContent'; + if (!string) { + return this._tooltip[property]; + } + this._tooltip[property] = string; + }; + _proto.css = function css(_css) { + for (var style in _css) { + this._tooltip.style[style] = _css[style]; + } + return this; + }; + return Tooltip; + }(BaseComponent); + + var DataVisualization = /*#__PURE__*/function () { + function DataVisualization(_ref, map) { + var scale = _ref.scale, + values = _ref.values; + this._scale = scale; + this._values = values; + this._fromColor = this.hexToRgb(scale[0]); + this._toColor = this.hexToRgb(scale[1]); + this._map = map; + this.setMinMaxValues(values); + this.visualize(); + } + var _proto = DataVisualization.prototype; + _proto.setMinMaxValues = function setMinMaxValues(values) { + this.min = Number.MAX_VALUE; + this.max = 0; + for (var value in values) { + value = parseFloat(values[value]); + if (value > this.max) { + this.max = value; + } + if (value < this.min) { + this.min = value; + } + } + }; + _proto.visualize = function visualize() { + var attrs = {}, + value; + for (var regionCode in this._values) { + value = parseFloat(this._values[regionCode]); + if (!isNaN(value)) { + attrs[regionCode] = this.getValue(value); + } + } + this.setAttributes(attrs); + }; + _proto.setAttributes = function setAttributes(attrs) { + for (var code in attrs) { + if (this._map.regions[code]) { + this._map.regions[code].element.setStyle('fill', attrs[code]); + } + } + }; + _proto.getValue = function getValue(value) { + var hex, + color = '#'; + for (var i = 0; i < 3; i++) { + hex = Math.round(this._fromColor[i] + (this._toColor[i] - this._fromColor[i]) * ((value - this.min) / (this.max - this.min))).toString(16); + color += (hex.length === 1 ? '0' : '') + hex; + } + return color; + }; + _proto.hexToRgb = function hexToRgb(h) { + var r = 0, + g = 0, + b = 0; + if (h.length == 4) { + r = '0x' + h[1] + h[1]; + g = '0x' + h[2] + h[2]; + b = '0x' + h[3] + h[3]; + } else if (h.length == 7) { + r = '0x' + h[1] + h[2]; + g = '0x' + h[3] + h[4]; + b = '0x' + h[5] + h[6]; + } + return [parseInt(r), parseInt(g), parseInt(b)]; + }; + return DataVisualization; + }(); + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var Map = /*#__PURE__*/function () { + function Map(options) { + var _this = this; + if (options === void 0) { + options = {}; + } + // Merge the given options with the default options + this.params = merge(Map.defaults, options, true); + + // Throw an error if the given map name doesn't match + // the map that was set in map file + if (!Map.maps[this.params.map]) { + throw new Error("Attempt to use map which was not loaded: " + options.map); + } + this.regions = {}; + this.scale = 1; + this.transX = 0; + this.transY = 0; + this._mapData = Map.maps[this.params.map]; + this._markers = {}; + this._lines = {}; + this._defaultWidth = this._mapData.width; + this._defaultHeight = this._mapData.height; + this._height = 0; + this._width = 0; + this._baseScale = 1; + this._baseTransX = 0; + this._baseTransY = 0; + + // `document` is already ready, just initialise now + if (document.readyState !== 'loading') { + this._init(); + } else { + // Wait until `document` is ready + window.addEventListener('DOMContentLoaded', function () { + return _this._init(); + }); + } + } + var _proto = Map.prototype; + _proto._init = function _init() { + var options = this.params; + this.container = getElement(options.selector); + this.container.classList.add('jvm-container'); + + // The map canvas element + this.canvas = new SVGCanvasElement(this.container); + + // Set the map's background color + this.setBackgroundColor(options.backgroundColor); + + // Create regions + this._createRegions(); + + // Update size + this.updateSize(); + + // Create lines + this._createLines(options.lines || {}, options.markers || {}); + + // Create markers + this._createMarkers(options.markers); + + // Position labels + this._repositionLabels(); + + // Setup the container events + this._setupContainerEvents(); + + // Setup regions/markers events + this._setupElementEvents(); + + // Create zoom buttons if `zoomButtons` is presented + if (options.zoomButtons) { + this._setupZoomButtons(); + } + + // Create toolip + if (options.showTooltip) { + this._tooltip = new Tooltip(this); + } + + // Set selected regions if any + if (options.selectedRegions) { + this._setSelected('regions', options.selectedRegions); + } + + // Set selected regions if any + if (options.selectedMarkers) { + this._setSelected('_markers', options.selectedMarkers); + } + + // Set focus on a spcific region + if (options.focusOn) { + this.setFocus(options.focusOn); + } + + // Data visualization + if (options.visualizeData) { + this.dataVisualization = new DataVisualization(options.visualizeData, this); + } + + // Bind touch events if true + if (options.bindTouchEvents) { + if ('ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch) { + this._setupContainerTouchEvents(); + } + } + + // Create series if any + if (options.series) { + this.container.appendChild(this.legendHorizontal = createElement('div', 'jvm-series-container jvm-series-h')); + this.container.appendChild(this.legendVertical = createElement('div', 'jvm-series-container jvm-series-v')); + this._createSeries(); + } + + // Fire loaded event + this._emit(Events.onLoaded, [this]); + } + + // Public + ; + _proto.setBackgroundColor = function setBackgroundColor(color) { + this.container.style.backgroundColor = color; + } + + // Region methods + ; + _proto.getSelectedRegions = function getSelectedRegions() { + return this._getSelected('regions'); + }; + _proto.clearSelectedRegions = function clearSelectedRegions() { + this._clearSelected('regions'); + } + + // Markers methods + ; + _proto.getSelectedMarkers = function getSelectedMarkers() { + return this._getSelected('_markers'); + }; + _proto.clearSelectedMarkers = function clearSelectedMarkers() { + this._clearSelected('_markers'); + }; + _proto.addMarkers = function addMarkers(config) { + if (Array.isArray(config)) { + return this._createMarkers(config, true); + } + this._createMarkers([config], true); + }; + _proto.removeMarkers = function removeMarkers(markers) { + var _this2 = this; + if (!markers) { + markers = Object.keys(this._markers); + } + markers.forEach(function (index) { + // Remove the element from the DOM + _this2._markers[index].element.remove(); + // Remove the element from markers object + delete _this2._markers[index]; + }); + }; + _proto.addLine = function addLine(from, to, style) { + if (style === void 0) { + style = {}; + } + console.warn('`addLine` method is deprecated, please use `addLines` instead.'); + this._createLines([{ + from: from, + to: to, + style: style + }], this._markers, true); + }; + _proto.addLines = function addLines(config) { + var uids = this._getLinesAsUids(); + if (!Array.isArray(config)) { + config = [config]; + } + this._createLines(config.filter(function (line) { + return !(uids.indexOf(getLineUid(line.from, line.to)) > -1); + }), this._markers, true); + }; + _proto.removeLines = function removeLines(lines) { + var _this3 = this; + if (Array.isArray(lines)) { + lines = lines.map(function (line) { + return getLineUid(line.from, line.to); + }); + } else { + lines = this._getLinesAsUids(); + } + lines.forEach(function (uid) { + _this3._lines[uid].dispose(); + delete _this3._lines[uid]; + }); + }; + _proto.removeLine = function removeLine(from, to) { + console.warn('`removeLine` method is deprecated, please use `removeLines` instead.'); + var uid = getLineUid(from, to); + if (this._lines.hasOwnProperty(uid)) { + this._lines[uid].element.remove(); + delete this._lines[uid]; + } + } + + // Reset map + ; + _proto.reset = function reset() { + for (var key in this.series) { + for (var i = 0; i < this.series[key].length; i++) { + this.series[key][i].clear(); + } + } + if (this.legendHorizontal) { + removeElement(this.legendHorizontal); + this.legendHorizontal = null; + } + if (this.legendVertical) { + removeElement(this.legendVertical); + this.legendVertical = null; + } + this.scale = this._baseScale; + this.transX = this._baseTransX; + this.transY = this._baseTransY; + this._applyTransform(); + this.clearSelectedMarkers(); + this.clearSelectedRegions(); + this.removeMarkers(); + } + + // Destroy the map + ; + _proto.destroy = function destroy(destroyInstance) { + var _this4 = this; + if (destroyInstance === void 0) { + destroyInstance = true; + } + // Remove event registry + EventHandler.flush(); + + // Remove tooltip from DOM and memory + this._tooltip.dispose(); + + // Fire destroyed event + this._emit(Events.onDestroyed); + + // Remove references + if (destroyInstance) { + Object.keys(this).forEach(function (key) { + try { + delete _this4[key]; + } catch (e) {} + }); + } + }; + _proto.extend = function extend(name, callback) { + if (typeof this[name] === 'function') { + throw new Error("The method [" + name + "] does already exist, please use another name."); + } + Map.prototype[name] = callback; + } + + // Private + ; + _proto._emit = function _emit(eventName, args) { + for (var event in Events) { + if (Events[event] === eventName && typeof this.params[event] === 'function') { + this.params[event].apply(this, args); + } + } + } + + // Get selected markers/regions + ; + _proto._getSelected = function _getSelected(type) { + var selected = []; + for (var key in this[type]) { + if (this[type][key].element.isSelected) { + selected.push(key); + } + } + return selected; + }; + _proto._setSelected = function _setSelected(type, keys) { + var _this5 = this; + keys.forEach(function (key) { + if (_this5[type][key]) { + _this5[type][key].element.select(true); + } + }); + }; + _proto._clearSelected = function _clearSelected(type) { + var _this6 = this; + this._getSelected(type).forEach(function (key) { + _this6[type][key].element.select(false); + }); + }; + _proto._getLinesAsUids = function _getLinesAsUids() { + return Object.keys(this._lines); + }; + return Map; + }(); + Map.maps = {}; + Map.defaults = Defaults; + Object.assign(Map.prototype, core); + + /** + * jsVectorMap + * Copyrights (c) Mustafa Omar https://github.com/themustafaomar + * Released under the MIT License. + */ + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + var jsVectorMap = /*#__PURE__*/function () { + function jsVectorMap(options) { + if (options === void 0) { + options = {}; + } + if (!options.selector) { + throw new Error('Selector is not given.'); + } + return new Map(options); + } + + // Public + jsVectorMap.addMap = function addMap(name, map) { + Map.maps[name] = map; + }; + return jsVectorMap; + }(); + var index = window.jsVectorMap = jsVectorMap; + + return index; + +})); diff --git a/gin_ops/static/dist/libs/jsvectormap/dist/js/jsvectormap.min.js b/gin_ops/static/dist/libs/jsvectormap/dist/js/jsvectormap.min.js new file mode 100644 index 0000000..2397ecf --- /dev/null +++ b/gin_ops/static/dist/libs/jsvectormap/dist/js/jsvectormap.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).jsVectorMap=e()}(this,(function(){"use strict";function t(t,i){t.prototype=Object.create(i.prototype),t.prototype.constructor=t,e(t,i)}function e(t,i){return e=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},e(t,i)}function i(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function s(t){throw new TypeError('"'+t+'" is read-only')}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,s=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(t){for(var e=(this.document||this.ownerDocument).querySelectorAll(t),i=e.length;s("i")>=0&&e.item(i)!==this;);return i>-1}),Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(t){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var e=Object(t),i=1;i>10||1),a=i.container.getBoundingClientRect(),n=t.pageX-a.left-window.pageXOffset,r=t.pageY-a.top-window.pageYOffset,o=Math.pow(1+s.params.zoomOnScrollSpeed/1e3,-1.5*e);s.tooltip&&s._tooltip.hide(),s._setScale(s.scale*o,n,r),t.preventDefault()}))},_setupElementEvents:function(){var t,e,i,s=this,a=this.container;S.on(a,"mousemove",(function(s){Math.abs(t-s.pageX)+Math.abs(e-s.pageY)>2&&(i=!0)})),S.delegate(a,"mousedown",".jvm-element",(function(s){t=s.pageX,e=s.pageY,i=!1})),S.delegate(a,"mouseover mouseout",".jvm-element",(function(t){var e=M(s,this,!0),i=s.params.showTooltip;"mouseover"===t.type?(e.element.hover(!0),i&&(s._tooltip.text(e.tooltipText),s._tooltip.show(),s._emit(e.event,[t,s._tooltip,e.code]))):(e.element.hover(!1),i&&s._tooltip.hide())})),S.delegate(a,"mouseup",".jvm-element",(function(t){var e=M(s,this);if(!i&&("region"===e.type&&s.params.regionsSelectable||"marker"===e.type&&s.params.markersSelectable)){var a=e.element;s.params[e.type+"sSelectableOne"]&&s._clearSelected(e.type+"s"),e.element.isSelected?a.select(!1):a.select(!0),s._emit(e.event,[e.code,a.isSelected,s._getSelected(e.type+"s")])}})),S.delegate(a,"click",".jvm-element",(function(t){var e=M(s,this),i=e.type,a=e.code;s._emit("region"===i?k.onRegionClick:k.onMarkerClick,[t,a])}))},_setupZoomButtons:function(){var t=this,e=m("div","jvm-zoom-btn jvm-zoomin","+",!0),i=m("div","jvm-zoom-btn jvm-zoomout","−",!0);this.container.appendChild(e),this.container.appendChild(i);var s=function(e){return void 0===e&&(e=!0),function(){return t._setScale(e?t.scale*t.params.zoomStep:t.scale/t.params.zoomStep,t._width/2,t._height/2,!1,t.params.zoomAnimate)}};S.on(e,"click",s()),S.on(i,"click",s(!1))},_setupContainerTouchEvents:function(){var t,e,i,s,a,n,r,o=this,h=function(h){var l,c,u,p,d=h.touches;if("touchstart"==h.type&&(r=0),1==d.length)1==r&&(u=o.transX,p=o.transY,o.transX-=(i-d[0].pageX)/o.scale,o.transY-=(s-d[0].pageY)/o.scale,o._tooltip.hide(),o._applyTransform(),u==o.transX&&p==o.transY||h.preventDefault()),i=d[0].pageX,s=d[0].pageY;else if(2==d.length)if(2==r)c=Math.sqrt(Math.pow(d[0].pageX-d[1].pageX,2)+Math.pow(d[0].pageY-d[1].pageY,2))/e,o._setScale(t*c,a,n),o._tooltip.hide(),h.preventDefault();else{var f=o.container.getBoundingClientRect();l={top:f.top+window.scrollY,left:f.left+window.scrollX},a=d[0].pageX>d[1].pageX?d[1].pageX+(d[0].pageX-d[1].pageX)/2:d[0].pageX+(d[1].pageX-d[0].pageX)/2,n=d[0].pageY>d[1].pageY?d[1].pageY+(d[0].pageY-d[1].pageY)/2:d[0].pageY+(d[1].pageY-d[0].pageY)/2,a-=l.left,n-=l.top,t=o.scale,e=Math.sqrt(Math.pow(d[0].pageX-d[1].pageX,2)+Math.pow(d[0].pageY-d[1].pageY,2))}r=d.length};S.on(o.container,"touchstart",h),S.on(o.container,"touchmove",h)},_createRegions:function(){for(var t in this._regionLabelsGroup=this._regionLabelsGroup||this.canvas.createGroup("jvm-regions-labels-group"),this._mapData.paths){var e=new C({map:this,code:t,path:this._mapData.paths[t].path,style:v({},this.params.regionStyle),labelStyle:this.params.regionLabelStyle,labelsGroup:this._regionLabelsGroup,label:this.params.labels&&this.params.labels.regions});this.regions[t]={config:this._mapData.paths[t],element:e}}},_createLines:function(t,e,i){void 0===i&&(i=!1);var s=!1,a=!1;for(var n in this.linesGroup=this.linesGroup||this.canvas.createGroup("jvm-lines-group"),t){var r=t[n];for(var o in e){var h=i?e[o].config:e[o];h.name===r.from&&(s=this.getMarkerPosition(h)),h.name===r.to&&(a=this.getMarkerPosition(h))}!1!==s&&!1!==a&&(this._lines[_(r.from,r.to)]=new L({index:n,map:this,style:v({initial:this.params.lineStyle},{initial:r.style||{}},!0),x1:s.x,y1:s.y,x2:a.x,y2:a.y,group:this.linesGroup,config:r}))}},_createMarkers:function(t,e){var i=this;void 0===t&&(t={}),void 0===e&&(e=!1),this._markersGroup=this._markersGroup||this.canvas.createGroup("jvm-markers-group"),this._markerLabelsGroup=this._markerLabelsGroup||this.canvas.createGroup("jvm-markers-labels-group");var s=function(){var s=t[a],n=i.getMarkerPosition(s),r=s.coords.join(":");if(!n)return"continue";if(e){if(Object.keys(i._markers).filter((function(t){return i._markers[t]._uid===r})).length)return"continue";a=Object.keys(i._markers).length}var o=new O({index:a,map:i,style:v(i.params.markerStyle,{initial:s.style||{}},!0),label:i.params.labels&&i.params.labels.markers,labelsGroup:i._markerLabelsGroup,cx:n.x,cy:n.y,group:i._markersGroup,marker:s,isRecentlyCreated:e});i._markers[a]&&i.removeMarkers([a]),i._markers[a]={_uid:r,config:s,element:o}};for(var a in t)s()},_createSeries:function(){for(var t in this.series={markers:[],regions:[]},this.params.series)for(var e=0;ee?this.transY=e:this.transYt?this.transX=t:this.transXthis._defaultWidth/this._defaultHeight?(this._baseScale=this._height/this._defaultHeight,this._baseTransX=Math.abs(this._width-this._defaultWidth*this._baseScale)/(2*this._baseScale)):(this._baseScale=this._width/this._defaultWidth,this._baseTransY=Math.abs(this._height-this._defaultHeight*this._baseScale)/(2*this._baseScale)),this.scale*=this._baseScale/t,this.transX*=this._baseScale/t,this.transY*=this._baseScale/t},_setScale:function(t,e,i,s,a){var n,r,o,h,l,c,u,p,d,f,m=this,g=0,v=Math.abs(Math.round(60*(t-this.scale)/Math.max(t,this.scale)));t>this.params.zoomMax*this._baseScale?t=this.params.zoomMax*this._baseScale:t0?(o=this.scale,h=(t-o)/v,l=this.transX*this.scale,u=this.transY*this.scale,c=(d*t-l)/v,p=(f*t-u)/v,r=setInterval((function(){g+=1,m.scale=o+h*g,m.transX=(l+c*g)/m.scale,m.transY=(u+p*g)/m.scale,m._applyTransform(),g==v&&(clearInterval(r),m._emit(k.onViewportChange,[m.scale,m.transX,m.transY]))}),10)):(this.transX=d,this.transY=f,this.scale=t,this._applyTransform(),this._emit(k.onViewportChange,[this.scale,this.transX,this.transY]))},setFocus:function(t){var e=this;void 0===t&&(t={});var i,s=[];if(t.region?s.push(t.region):t.regions&&(s=t.regions),s.length)return s.forEach((function(t){if(e.regions[t]){var s=e.regions[t].element.shape.getBBox();s&&(i=void 0===i?s:{x:Math.min(i.x,s.x),y:Math.min(i.y,s.y),width:Math.max(i.x+i.width,s.x+s.width)-Math.min(i.x,s.x),height:Math.max(i.y+i.height,s.y+s.height)-Math.min(i.y,s.y)})}})),this._setScale(Math.min(this._width/i.width,this._height/i.height),-(i.x+i.width/2),-(i.y+i.height/2),!0,t.animate);if(t.coords){var a=this.coordsToPoint(t.coords[0],t.coords[1]),n=this.transX-a.x/this.scale,r=this.transY-a.y/this.scale;return this._setScale(t.scale*this._baseScale,n,r,!0,t.animate)}},updateSize:function(){this._width=this.container.offsetWidth,this._height=this.container.offsetHeight,this._resize(),this.canvas.setSize(this._width,this._height),this._applyTransform()},coordsToPoint:function(t,e){var i=G.maps[this.params.map].projection,s=E[i.type](t,e,i.centralMeridian),a=s.x,n=s.y,r=this.getInsetForPoint(a,n);if(!r)return!1;var o=r.bbox;return a=(a-o[0].x)/(o[1].x-o[0].x)*r.width*this.scale,n=(n-o[0].y)/(o[1].y-o[0].y)*r.height*this.scale,{x:a+this.transX*this.scale+r.left*this.scale,y:n+this.transY*this.scale+r.top*this.scale}},getInsetForPoint:function(t,e){for(var i=G.maps[this.params.map].insets,s=0;sn.x&&tn.y&&ethis.max&&(this.max=e),e-1)})),this._markers,!0)},e.removeLines=function(t){var e=this;(t=Array.isArray(t)?t.map((function(t){return _(t.from,t.to)})):this._getLinesAsUids()).forEach((function(t){e._lines[t].dispose(),delete e._lines[t]}))},e.removeLine=function(t,e){console.warn("`removeLine` method is deprecated, please use `removeLines` instead.");var i=_(t,e);this._lines.hasOwnProperty(i)&&(this._lines[i].element.remove(),delete this._lines[i])},e.reset=function(){for(var t in this.series)for(var e=0;e 0) { + setTimeout(function () { + addAsync(values, callback, items); + }, 1); + } else { + list.update(); + callback(items); + } + }; + + return addAsync; +}; + +/***/ }), + +/***/ "./src/filter.js": +/*!***********************!*\ + !*** ./src/filter.js ***! + \***********************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module) { + +module.exports = function (list) { + // Add handlers + list.handlers.filterStart = list.handlers.filterStart || []; + list.handlers.filterComplete = list.handlers.filterComplete || []; + return function (filterFunction) { + list.trigger('filterStart'); + list.i = 1; // Reset paging + + list.reset.filter(); + + if (filterFunction === undefined) { + list.filtered = false; + } else { + list.filtered = true; + var is = list.items; + + for (var i = 0, il = is.length; i < il; i++) { + var item = is[i]; + + if (filterFunction(item)) { + item.filtered = true; + } else { + item.filtered = false; + } + } + } + + list.update(); + list.trigger('filterComplete'); + return list.visibleItems; + }; +}; + +/***/ }), + +/***/ "./src/fuzzy-search.js": +/*!*****************************!*\ + !*** ./src/fuzzy-search.js ***! + \*****************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module, __webpack_require__ */ +/*! CommonJS bailout: module.exports is used directly at 8:0-14 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var classes = __webpack_require__(/*! ./utils/classes */ "./src/utils/classes.js"), + events = __webpack_require__(/*! ./utils/events */ "./src/utils/events.js"), + extend = __webpack_require__(/*! ./utils/extend */ "./src/utils/extend.js"), + toString = __webpack_require__(/*! ./utils/to-string */ "./src/utils/to-string.js"), + getByClass = __webpack_require__(/*! ./utils/get-by-class */ "./src/utils/get-by-class.js"), + fuzzy = __webpack_require__(/*! ./utils/fuzzy */ "./src/utils/fuzzy.js"); + +module.exports = function (list, options) { + options = options || {}; + options = extend({ + location: 0, + distance: 100, + threshold: 0.4, + multiSearch: true, + searchClass: 'fuzzy-search' + }, options); + var fuzzySearch = { + search: function search(searchString, columns) { + // Substract arguments from the searchString or put searchString as only argument + var searchArguments = options.multiSearch ? searchString.replace(/ +$/, '').split(/ +/) : [searchString]; + + for (var k = 0, kl = list.items.length; k < kl; k++) { + fuzzySearch.item(list.items[k], columns, searchArguments); + } + }, + item: function item(_item, columns, searchArguments) { + var found = true; + + for (var i = 0; i < searchArguments.length; i++) { + var foundArgument = false; + + for (var j = 0, jl = columns.length; j < jl; j++) { + if (fuzzySearch.values(_item.values(), columns[j], searchArguments[i])) { + foundArgument = true; + } + } + + if (!foundArgument) { + found = false; + } + } + + _item.found = found; + }, + values: function values(_values, value, searchArgument) { + if (_values.hasOwnProperty(value)) { + var text = toString(_values[value]).toLowerCase(); + + if (fuzzy(text, searchArgument, options)) { + return true; + } + } + + return false; + } + }; + events.bind(getByClass(list.listContainer, options.searchClass), 'keyup', list.utils.events.debounce(function (e) { + var target = e.target || e.srcElement; // IE have srcElement + + list.search(target.value, fuzzySearch.search); + }, list.searchDelay)); + return function (str, columns) { + list.search(str, columns, fuzzySearch.search); + }; +}; + +/***/ }), + +/***/ "./src/index.js": +/*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module, __webpack_require__ */ +/*! CommonJS bailout: module.exports is used directly at 11:0-14 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var naturalSort = __webpack_require__(/*! string-natural-compare */ "./node_modules/string-natural-compare/natural-compare.js"), + getByClass = __webpack_require__(/*! ./utils/get-by-class */ "./src/utils/get-by-class.js"), + extend = __webpack_require__(/*! ./utils/extend */ "./src/utils/extend.js"), + indexOf = __webpack_require__(/*! ./utils/index-of */ "./src/utils/index-of.js"), + events = __webpack_require__(/*! ./utils/events */ "./src/utils/events.js"), + toString = __webpack_require__(/*! ./utils/to-string */ "./src/utils/to-string.js"), + classes = __webpack_require__(/*! ./utils/classes */ "./src/utils/classes.js"), + getAttribute = __webpack_require__(/*! ./utils/get-attribute */ "./src/utils/get-attribute.js"), + toArray = __webpack_require__(/*! ./utils/to-array */ "./src/utils/to-array.js"); + +module.exports = function (id, options, values) { + var self = this, + init, + Item = __webpack_require__(/*! ./item */ "./src/item.js")(self), + addAsync = __webpack_require__(/*! ./add-async */ "./src/add-async.js")(self), + initPagination = __webpack_require__(/*! ./pagination */ "./src/pagination.js")(self); + + init = { + start: function start() { + self.listClass = 'list'; + self.searchClass = 'search'; + self.sortClass = 'sort'; + self.page = 10000; + self.i = 1; + self.items = []; + self.visibleItems = []; + self.matchingItems = []; + self.searched = false; + self.filtered = false; + self.searchColumns = undefined; + self.searchDelay = 0; + self.handlers = { + updated: [] + }; + self.valueNames = []; + self.utils = { + getByClass: getByClass, + extend: extend, + indexOf: indexOf, + events: events, + toString: toString, + naturalSort: naturalSort, + classes: classes, + getAttribute: getAttribute, + toArray: toArray + }; + self.utils.extend(self, options); + self.listContainer = typeof id === 'string' ? document.getElementById(id) : id; + + if (!self.listContainer) { + return; + } + + self.list = getByClass(self.listContainer, self.listClass, true); + self.parse = __webpack_require__(/*! ./parse */ "./src/parse.js")(self); + self.templater = __webpack_require__(/*! ./templater */ "./src/templater.js")(self); + self.search = __webpack_require__(/*! ./search */ "./src/search.js")(self); + self.filter = __webpack_require__(/*! ./filter */ "./src/filter.js")(self); + self.sort = __webpack_require__(/*! ./sort */ "./src/sort.js")(self); + self.fuzzySearch = __webpack_require__(/*! ./fuzzy-search */ "./src/fuzzy-search.js")(self, options.fuzzySearch); + this.handlers(); + this.items(); + this.pagination(); + self.update(); + }, + handlers: function handlers() { + for (var handler in self.handlers) { + if (self[handler] && self.handlers.hasOwnProperty(handler)) { + self.on(handler, self[handler]); + } + } + }, + items: function items() { + self.parse(self.list); + + if (values !== undefined) { + self.add(values); + } + }, + pagination: function pagination() { + if (options.pagination !== undefined) { + if (options.pagination === true) { + options.pagination = [{}]; + } + + if (options.pagination[0] === undefined) { + options.pagination = [options.pagination]; + } + + for (var i = 0, il = options.pagination.length; i < il; i++) { + initPagination(options.pagination[i]); + } + } + } + }; + /* + * Re-parse the List, use if html have changed + */ + + this.reIndex = function () { + self.items = []; + self.visibleItems = []; + self.matchingItems = []; + self.searched = false; + self.filtered = false; + self.parse(self.list); + }; + + this.toJSON = function () { + var json = []; + + for (var i = 0, il = self.items.length; i < il; i++) { + json.push(self.items[i].values()); + } + + return json; + }; + /* + * Add object to list + */ + + + this.add = function (values, callback) { + if (values.length === 0) { + return; + } + + if (callback) { + addAsync(values.slice(0), callback); + return; + } + + var added = [], + notCreate = false; + + if (values[0] === undefined) { + values = [values]; + } + + for (var i = 0, il = values.length; i < il; i++) { + var item = null; + notCreate = self.items.length > self.page ? true : false; + item = new Item(values[i], undefined, notCreate); + self.items.push(item); + added.push(item); + } + + self.update(); + return added; + }; + + this.show = function (i, page) { + this.i = i; + this.page = page; + self.update(); + return self; + }; + /* Removes object from list. + * Loops through the list and removes objects where + * property "valuename" === value + */ + + + this.remove = function (valueName, value, options) { + var found = 0; + + for (var i = 0, il = self.items.length; i < il; i++) { + if (self.items[i].values()[valueName] == value) { + self.templater.remove(self.items[i], options); + self.items.splice(i, 1); + il--; + i--; + found++; + } + } + + self.update(); + return found; + }; + /* Gets the objects in the list which + * property "valueName" === value + */ + + + this.get = function (valueName, value) { + var matchedItems = []; + + for (var i = 0, il = self.items.length; i < il; i++) { + var item = self.items[i]; + + if (item.values()[valueName] == value) { + matchedItems.push(item); + } + } + + return matchedItems; + }; + /* + * Get size of the list + */ + + + this.size = function () { + return self.items.length; + }; + /* + * Removes all items from the list + */ + + + this.clear = function () { + self.templater.clear(); + self.items = []; + return self; + }; + + this.on = function (event, callback) { + self.handlers[event].push(callback); + return self; + }; + + this.off = function (event, callback) { + var e = self.handlers[event]; + var index = indexOf(e, callback); + + if (index > -1) { + e.splice(index, 1); + } + + return self; + }; + + this.trigger = function (event) { + var i = self.handlers[event].length; + + while (i--) { + self.handlers[event][i](self); + } + + return self; + }; + + this.reset = { + filter: function filter() { + var is = self.items, + il = is.length; + + while (il--) { + is[il].filtered = false; + } + + return self; + }, + search: function search() { + var is = self.items, + il = is.length; + + while (il--) { + is[il].found = false; + } + + return self; + } + }; + + this.update = function () { + var is = self.items, + il = is.length; + self.visibleItems = []; + self.matchingItems = []; + self.templater.clear(); + + for (var i = 0; i < il; i++) { + if (is[i].matching() && self.matchingItems.length + 1 >= self.i && self.visibleItems.length < self.page) { + is[i].show(); + self.visibleItems.push(is[i]); + self.matchingItems.push(is[i]); + } else if (is[i].matching()) { + self.matchingItems.push(is[i]); + is[i].hide(); + } else { + is[i].hide(); + } + } + + self.trigger('updated'); + return self; + }; + + init.start(); +}; + +/***/ }), + +/***/ "./src/item.js": +/*!*********************!*\ + !*** ./src/item.js ***! + \*********************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module) { + +module.exports = function (list) { + return function (initValues, element, notCreate) { + var item = this; + this._values = {}; + this.found = false; // Show if list.searched == true and this.found == true + + this.filtered = false; // Show if list.filtered == true and this.filtered == true + + var init = function init(initValues, element, notCreate) { + if (element === undefined) { + if (notCreate) { + item.values(initValues, notCreate); + } else { + item.values(initValues); + } + } else { + item.elm = element; + var values = list.templater.get(item, initValues); + item.values(values); + } + }; + + this.values = function (newValues, notCreate) { + if (newValues !== undefined) { + for (var name in newValues) { + item._values[name] = newValues[name]; + } + + if (notCreate !== true) { + list.templater.set(item, item.values()); + } + } else { + return item._values; + } + }; + + this.show = function () { + list.templater.show(item); + }; + + this.hide = function () { + list.templater.hide(item); + }; + + this.matching = function () { + return list.filtered && list.searched && item.found && item.filtered || list.filtered && !list.searched && item.filtered || !list.filtered && list.searched && item.found || !list.filtered && !list.searched; + }; + + this.visible = function () { + return item.elm && item.elm.parentNode == list.list ? true : false; + }; + + init(initValues, element, notCreate); + }; +}; + +/***/ }), + +/***/ "./src/pagination.js": +/*!***************************!*\ + !*** ./src/pagination.js ***! + \***************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module, __webpack_require__ */ +/*! CommonJS bailout: module.exports is used directly at 5:0-14 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +var classes = __webpack_require__(/*! ./utils/classes */ "./src/utils/classes.js"), + events = __webpack_require__(/*! ./utils/events */ "./src/utils/events.js"), + List = __webpack_require__(/*! ./index */ "./src/index.js"); + +module.exports = function (list) { + var isHidden = false; + + var refresh = function refresh(pagingList, options) { + if (list.page < 1) { + list.listContainer.style.display = 'none'; + isHidden = true; + return; + } else if (isHidden) { + list.listContainer.style.display = 'block'; + } + + var item, + l = list.matchingItems.length, + index = list.i, + page = list.page, + pages = Math.ceil(l / page), + currentPage = Math.ceil(index / page), + innerWindow = options.innerWindow || 2, + left = options.left || options.outerWindow || 0, + right = options.right || options.outerWindow || 0; + right = pages - right; + pagingList.clear(); + + for (var i = 1; i <= pages; i++) { + var className = currentPage === i ? 'active' : ''; //console.log(i, left, right, currentPage, (currentPage - innerWindow), (currentPage + innerWindow), className); + + if (is.number(i, left, right, currentPage, innerWindow)) { + item = pagingList.add({ + page: i, + dotted: false + })[0]; + + if (className) { + classes(item.elm).add(className); + } + + item.elm.firstChild.setAttribute('data-i', i); + item.elm.firstChild.setAttribute('data-page', page); + } else if (is.dotted(pagingList, i, left, right, currentPage, innerWindow, pagingList.size())) { + item = pagingList.add({ + page: '...', + dotted: true + })[0]; + classes(item.elm).add('disabled'); + } + } + }; + + var is = { + number: function number(i, left, right, currentPage, innerWindow) { + return this.left(i, left) || this.right(i, right) || this.innerWindow(i, currentPage, innerWindow); + }, + left: function left(i, _left) { + return i <= _left; + }, + right: function right(i, _right) { + return i > _right; + }, + innerWindow: function innerWindow(i, currentPage, _innerWindow) { + return i >= currentPage - _innerWindow && i <= currentPage + _innerWindow; + }, + dotted: function dotted(pagingList, i, left, right, currentPage, innerWindow, currentPageItem) { + return this.dottedLeft(pagingList, i, left, right, currentPage, innerWindow) || this.dottedRight(pagingList, i, left, right, currentPage, innerWindow, currentPageItem); + }, + dottedLeft: function dottedLeft(pagingList, i, left, right, currentPage, innerWindow) { + return i == left + 1 && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right); + }, + dottedRight: function dottedRight(pagingList, i, left, right, currentPage, innerWindow, currentPageItem) { + if (pagingList.items[currentPageItem - 1].values().dotted) { + return false; + } else { + return i == right && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right); + } + } + }; + return function (options) { + var pagingList = new List(list.listContainer.id, { + listClass: options.paginationClass || 'pagination', + item: options.item || "
  • ", + valueNames: ['page', 'dotted'], + searchClass: 'pagination-search-that-is-not-supposed-to-exist', + sortClass: 'pagination-sort-that-is-not-supposed-to-exist' + }); + events.bind(pagingList.listContainer, 'click', function (e) { + var target = e.target || e.srcElement, + page = list.utils.getAttribute(target, 'data-page'), + i = list.utils.getAttribute(target, 'data-i'); + + if (i) { + list.show((i - 1) * page + 1, page); + } + }); + list.on('updated', function () { + refresh(pagingList, options); + }); + refresh(pagingList, options); + }; +}; + +/***/ }), + +/***/ "./src/parse.js": +/*!**********************!*\ + !*** ./src/parse.js ***! + \**********************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module, __webpack_require__ */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +module.exports = function (list) { + var Item = __webpack_require__(/*! ./item */ "./src/item.js")(list); + + var getChildren = function getChildren(parent) { + var nodes = parent.childNodes, + items = []; + + for (var i = 0, il = nodes.length; i < il; i++) { + // Only textnodes have a data attribute + if (nodes[i].data === undefined) { + items.push(nodes[i]); + } + } + + return items; + }; + + var parse = function parse(itemElements, valueNames) { + for (var i = 0, il = itemElements.length; i < il; i++) { + list.items.push(new Item(valueNames, itemElements[i])); + } + }; + + var parseAsync = function parseAsync(itemElements, valueNames) { + var itemsToIndex = itemElements.splice(0, 50); // TODO: If < 100 items, what happens in IE etc? + + parse(itemsToIndex, valueNames); + + if (itemElements.length > 0) { + setTimeout(function () { + parseAsync(itemElements, valueNames); + }, 1); + } else { + list.update(); + list.trigger('parseComplete'); + } + }; + + list.handlers.parseComplete = list.handlers.parseComplete || []; + return function () { + var itemsToIndex = getChildren(list.list), + valueNames = list.valueNames; + + if (list.indexAsync) { + parseAsync(itemsToIndex, valueNames); + } else { + parse(itemsToIndex, valueNames); + } + }; +}; + +/***/ }), + +/***/ "./src/search.js": +/*!***********************!*\ + !*** ./src/search.js ***! + \***********************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module) { + +module.exports = function (_list) { + var item, text, columns, searchString, customSearch; + var prepare = { + resetList: function resetList() { + _list.i = 1; + + _list.templater.clear(); + + customSearch = undefined; + }, + setOptions: function setOptions(args) { + if (args.length == 2 && args[1] instanceof Array) { + columns = args[1]; + } else if (args.length == 2 && typeof args[1] == 'function') { + columns = undefined; + customSearch = args[1]; + } else if (args.length == 3) { + columns = args[1]; + customSearch = args[2]; + } else { + columns = undefined; + } + }, + setColumns: function setColumns() { + if (_list.items.length === 0) return; + + if (columns === undefined) { + columns = _list.searchColumns === undefined ? prepare.toArray(_list.items[0].values()) : _list.searchColumns; + } + }, + setSearchString: function setSearchString(s) { + s = _list.utils.toString(s).toLowerCase(); + s = s.replace(/[-[\]{}()*+?.,\\^$|#]/g, '\\$&'); // Escape regular expression characters + + searchString = s; + }, + toArray: function toArray(values) { + var tmpColumn = []; + + for (var name in values) { + tmpColumn.push(name); + } + + return tmpColumn; + } + }; + var search = { + list: function list() { + // Extract quoted phrases "word1 word2" from original searchString + // searchString is converted to lowercase by List.js + var words = [], + phrase, + ss = searchString; + + while ((phrase = ss.match(/"([^"]+)"/)) !== null) { + words.push(phrase[1]); + ss = ss.substring(0, phrase.index) + ss.substring(phrase.index + phrase[0].length); + } // Get remaining space-separated words (if any) + + + ss = ss.trim(); + if (ss.length) words = words.concat(ss.split(/\s+/)); + + for (var k = 0, kl = _list.items.length; k < kl; k++) { + var item = _list.items[k]; + item.found = false; + if (!words.length) continue; + + for (var i = 0, il = words.length; i < il; i++) { + var word_found = false; + + for (var j = 0, jl = columns.length; j < jl; j++) { + var values = item.values(), + column = columns[j]; + + if (values.hasOwnProperty(column) && values[column] !== undefined && values[column] !== null) { + var text = typeof values[column] !== 'string' ? values[column].toString() : values[column]; + + if (text.toLowerCase().indexOf(words[i]) !== -1) { + // word found, so no need to check it against any other columns + word_found = true; + break; + } + } + } // this word not found? no need to check any other words, the item cannot match + + + if (!word_found) break; + } + + item.found = word_found; + } + }, + // Removed search.item() and search.values() + reset: function reset() { + _list.reset.search(); + + _list.searched = false; + } + }; + + var searchMethod = function searchMethod(str) { + _list.trigger('searchStart'); + + prepare.resetList(); + prepare.setSearchString(str); + prepare.setOptions(arguments); // str, cols|searchFunction, searchFunction + + prepare.setColumns(); + + if (searchString === '') { + search.reset(); + } else { + _list.searched = true; + + if (customSearch) { + customSearch(searchString, columns); + } else { + search.list(); + } + } + + _list.update(); + + _list.trigger('searchComplete'); + + return _list.visibleItems; + }; + + _list.handlers.searchStart = _list.handlers.searchStart || []; + _list.handlers.searchComplete = _list.handlers.searchComplete || []; + + _list.utils.events.bind(_list.utils.getByClass(_list.listContainer, _list.searchClass), 'keyup', _list.utils.events.debounce(function (e) { + var target = e.target || e.srcElement, + // IE have srcElement + alreadyCleared = target.value === '' && !_list.searched; + + if (!alreadyCleared) { + // If oninput already have resetted the list, do nothing + searchMethod(target.value); + } + }, _list.searchDelay)); // Used to detect click on HTML5 clear button + + + _list.utils.events.bind(_list.utils.getByClass(_list.listContainer, _list.searchClass), 'input', function (e) { + var target = e.target || e.srcElement; + + if (target.value === '') { + searchMethod(''); + } + }); + + return searchMethod; +}; + +/***/ }), + +/***/ "./src/sort.js": +/*!*********************!*\ + !*** ./src/sort.js ***! + \*********************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module) { + +module.exports = function (list) { + var buttons = { + els: undefined, + clear: function clear() { + for (var i = 0, il = buttons.els.length; i < il; i++) { + list.utils.classes(buttons.els[i]).remove('asc'); + list.utils.classes(buttons.els[i]).remove('desc'); + } + }, + getOrder: function getOrder(btn) { + var predefinedOrder = list.utils.getAttribute(btn, 'data-order'); + + if (predefinedOrder == 'asc' || predefinedOrder == 'desc') { + return predefinedOrder; + } else if (list.utils.classes(btn).has('desc')) { + return 'asc'; + } else if (list.utils.classes(btn).has('asc')) { + return 'desc'; + } else { + return 'asc'; + } + }, + getInSensitive: function getInSensitive(btn, options) { + var insensitive = list.utils.getAttribute(btn, 'data-insensitive'); + + if (insensitive === 'false') { + options.insensitive = false; + } else { + options.insensitive = true; + } + }, + setOrder: function setOrder(options) { + for (var i = 0, il = buttons.els.length; i < il; i++) { + var btn = buttons.els[i]; + + if (list.utils.getAttribute(btn, 'data-sort') !== options.valueName) { + continue; + } + + var predefinedOrder = list.utils.getAttribute(btn, 'data-order'); + + if (predefinedOrder == 'asc' || predefinedOrder == 'desc') { + if (predefinedOrder == options.order) { + list.utils.classes(btn).add(options.order); + } + } else { + list.utils.classes(btn).add(options.order); + } + } + } + }; + + var sort = function sort() { + list.trigger('sortStart'); + var options = {}; + var target = arguments[0].currentTarget || arguments[0].srcElement || undefined; + + if (target) { + options.valueName = list.utils.getAttribute(target, 'data-sort'); + buttons.getInSensitive(target, options); + options.order = buttons.getOrder(target); + } else { + options = arguments[1] || options; + options.valueName = arguments[0]; + options.order = options.order || 'asc'; + options.insensitive = typeof options.insensitive == 'undefined' ? true : options.insensitive; + } + + buttons.clear(); + buttons.setOrder(options); // caseInsensitive + // alphabet + + var customSortFunction = options.sortFunction || list.sortFunction || null, + multi = options.order === 'desc' ? -1 : 1, + sortFunction; + + if (customSortFunction) { + sortFunction = function sortFunction(itemA, itemB) { + return customSortFunction(itemA, itemB, options) * multi; + }; + } else { + sortFunction = function sortFunction(itemA, itemB) { + var sort = list.utils.naturalSort; + sort.alphabet = list.alphabet || options.alphabet || undefined; + + if (!sort.alphabet && options.insensitive) { + sort = list.utils.naturalSort.caseInsensitive; + } + + return sort(itemA.values()[options.valueName], itemB.values()[options.valueName]) * multi; + }; + } + + list.items.sort(sortFunction); + list.update(); + list.trigger('sortComplete'); + }; // Add handlers + + + list.handlers.sortStart = list.handlers.sortStart || []; + list.handlers.sortComplete = list.handlers.sortComplete || []; + buttons.els = list.utils.getByClass(list.listContainer, list.sortClass); + list.utils.events.bind(buttons.els, 'click', sort); + list.on('searchStart', buttons.clear); + list.on('filterStart', buttons.clear); + return sort; +}; + +/***/ }), + +/***/ "./src/templater.js": +/*!**************************!*\ + !*** ./src/templater.js ***! + \**************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 216:0-14 */ +/***/ (function(module) { + +var Templater = function Templater(list) { + var createItem, + templater = this; + + var init = function init() { + var itemSource; + + if (typeof list.item === 'function') { + createItem = function createItem(values) { + var item = list.item(values); + return getItemSource(item); + }; + + return; + } + + if (typeof list.item === 'string') { + if (list.item.indexOf('<') === -1) { + itemSource = document.getElementById(list.item); + } else { + itemSource = getItemSource(list.item); + } + } else { + /* If item source does not exists, use the first item in list as + source for new items */ + itemSource = getFirstListItem(); + } + + if (!itemSource) { + throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template."); + } + + itemSource = createCleanTemplateItem(itemSource, list.valueNames); + + createItem = function createItem() { + return itemSource.cloneNode(true); + }; + }; + + var createCleanTemplateItem = function createCleanTemplateItem(templateNode, valueNames) { + var el = templateNode.cloneNode(true); + el.removeAttribute('id'); + + for (var i = 0, il = valueNames.length; i < il; i++) { + var elm = undefined, + valueName = valueNames[i]; + + if (valueName.data) { + for (var j = 0, jl = valueName.data.length; j < jl; j++) { + el.setAttribute('data-' + valueName.data[j], ''); + } + } else if (valueName.attr && valueName.name) { + elm = list.utils.getByClass(el, valueName.name, true); + + if (elm) { + elm.setAttribute(valueName.attr, ''); + } + } else { + elm = list.utils.getByClass(el, valueName, true); + + if (elm) { + elm.innerHTML = ''; + } + } + } + + return el; + }; + + var getFirstListItem = function getFirstListItem() { + var nodes = list.list.childNodes; + + for (var i = 0, il = nodes.length; i < il; i++) { + // Only textnodes have a data attribute + if (nodes[i].data === undefined) { + return nodes[i].cloneNode(true); + } + } + + return undefined; + }; + + var getItemSource = function getItemSource(itemHTML) { + if (typeof itemHTML !== 'string') return undefined; + + if (/]/g.exec(itemHTML)) { + var tbody = document.createElement('tbody'); + tbody.innerHTML = itemHTML; + return tbody.firstElementChild; + } else if (itemHTML.indexOf('<') !== -1) { + var div = document.createElement('div'); + div.innerHTML = itemHTML; + return div.firstElementChild; + } + + return undefined; + }; + + var getValueName = function getValueName(name) { + for (var i = 0, il = list.valueNames.length; i < il; i++) { + var valueName = list.valueNames[i]; + + if (valueName.data) { + var data = valueName.data; + + for (var j = 0, jl = data.length; j < jl; j++) { + if (data[j] === name) { + return { + data: name + }; + } + } + } else if (valueName.attr && valueName.name && valueName.name == name) { + return valueName; + } else if (valueName === name) { + return name; + } + } + }; + + var setValue = function setValue(item, name, value) { + var elm = undefined, + valueName = getValueName(name); + if (!valueName) return; + + if (valueName.data) { + item.elm.setAttribute('data-' + valueName.data, value); + } else if (valueName.attr && valueName.name) { + elm = list.utils.getByClass(item.elm, valueName.name, true); + + if (elm) { + elm.setAttribute(valueName.attr, value); + } + } else { + elm = list.utils.getByClass(item.elm, valueName, true); + + if (elm) { + elm.innerHTML = value; + } + } + }; + + this.get = function (item, valueNames) { + templater.create(item); + var values = {}; + + for (var i = 0, il = valueNames.length; i < il; i++) { + var elm = undefined, + valueName = valueNames[i]; + + if (valueName.data) { + for (var j = 0, jl = valueName.data.length; j < jl; j++) { + values[valueName.data[j]] = list.utils.getAttribute(item.elm, 'data-' + valueName.data[j]); + } + } else if (valueName.attr && valueName.name) { + elm = list.utils.getByClass(item.elm, valueName.name, true); + values[valueName.name] = elm ? list.utils.getAttribute(elm, valueName.attr) : ''; + } else { + elm = list.utils.getByClass(item.elm, valueName, true); + values[valueName] = elm ? elm.innerHTML : ''; + } + } + + return values; + }; + + this.set = function (item, values) { + if (!templater.create(item)) { + for (var v in values) { + if (values.hasOwnProperty(v)) { + setValue(item, v, values[v]); + } + } + } + }; + + this.create = function (item) { + if (item.elm !== undefined) { + return false; + } + + item.elm = createItem(item.values()); + templater.set(item, item.values()); + return true; + }; + + this.remove = function (item) { + if (item.elm.parentNode === list.list) { + list.list.removeChild(item.elm); + } + }; + + this.show = function (item) { + templater.create(item); + list.list.appendChild(item.elm); + }; + + this.hide = function (item) { + if (item.elm !== undefined && item.elm.parentNode === list.list) { + list.list.removeChild(item.elm); + } + }; + + this.clear = function () { + /* .innerHTML = ''; fucks up IE */ + if (list.list.hasChildNodes()) { + while (list.list.childNodes.length >= 1) { + list.list.removeChild(list.list.firstChild); + } + } + }; + + init(); +}; + +module.exports = function (list) { + return new Templater(list); +}; + +/***/ }), + +/***/ "./src/utils/classes.js": +/*!******************************!*\ + !*** ./src/utils/classes.js ***! + \******************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module, __webpack_require__ */ +/*! CommonJS bailout: module.exports is used directly at 24:0-14 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/** + * Module dependencies. + */ +var index = __webpack_require__(/*! ./index-of */ "./src/utils/index-of.js"); +/** + * Whitespace regexp. + */ + + +var re = /\s+/; +/** + * toString reference. + */ + +var toString = Object.prototype.toString; +/** + * Wrap `el` in a `ClassList`. + * + * @param {Element} el + * @return {ClassList} + * @api public + */ + +module.exports = function (el) { + return new ClassList(el); +}; +/** + * Initialize a new ClassList for `el`. + * + * @param {Element} el + * @api private + */ + + +function ClassList(el) { + if (!el || !el.nodeType) { + throw new Error('A DOM element reference is required'); + } + + this.el = el; + this.list = el.classList; +} +/** + * Add class `name` if not already present. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + + +ClassList.prototype.add = function (name) { + // classList + if (this.list) { + this.list.add(name); + return this; + } // fallback + + + var arr = this.array(); + var i = index(arr, name); + if (!~i) arr.push(name); + this.el.className = arr.join(' '); + return this; +}; +/** + * Remove class `name` when present, or + * pass a regular expression to remove + * any which match. + * + * @param {String|RegExp} name + * @return {ClassList} + * @api public + */ + + +ClassList.prototype.remove = function (name) { + // classList + if (this.list) { + this.list.remove(name); + return this; + } // fallback + + + var arr = this.array(); + var i = index(arr, name); + if (~i) arr.splice(i, 1); + this.el.className = arr.join(' '); + return this; +}; +/** + * Toggle class `name`, can force state via `force`. + * + * For browsers that support classList, but do not support `force` yet, + * the mistake will be detected and corrected. + * + * @param {String} name + * @param {Boolean} force + * @return {ClassList} + * @api public + */ + + +ClassList.prototype.toggle = function (name, force) { + // classList + if (this.list) { + if ('undefined' !== typeof force) { + if (force !== this.list.toggle(name, force)) { + this.list.toggle(name); // toggle again to correct + } + } else { + this.list.toggle(name); + } + + return this; + } // fallback + + + if ('undefined' !== typeof force) { + if (!force) { + this.remove(name); + } else { + this.add(name); + } + } else { + if (this.has(name)) { + this.remove(name); + } else { + this.add(name); + } + } + + return this; +}; +/** + * Return an array of classes. + * + * @return {Array} + * @api public + */ + + +ClassList.prototype.array = function () { + var className = this.el.getAttribute('class') || ''; + var str = className.replace(/^\s+|\s+$/g, ''); + var arr = str.split(re); + if ('' === arr[0]) arr.shift(); + return arr; +}; +/** + * Check if class `name` is present. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + + +ClassList.prototype.has = ClassList.prototype.contains = function (name) { + return this.list ? this.list.contains(name) : !!~index(this.array(), name); +}; + +/***/ }), + +/***/ "./src/utils/events.js": +/*!*****************************!*\ + !*** ./src/utils/events.js ***! + \*****************************/ +/*! default exports */ +/*! export bind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export debounce [provided] [no usage info] [missing usage info prevents renaming] */ +/*! export unbind [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_exports__, __webpack_require__ */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + +var bind = window.addEventListener ? 'addEventListener' : 'attachEvent', + unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent', + prefix = bind !== 'addEventListener' ? 'on' : '', + toArray = __webpack_require__(/*! ./to-array */ "./src/utils/to-array.js"); +/** + * Bind `el` event `type` to `fn`. + * + * @param {Element} el, NodeList, HTMLCollection or Array + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @api public + */ + + +exports.bind = function (el, type, fn, capture) { + el = toArray(el); + + for (var i = 0, il = el.length; i < il; i++) { + el[i][bind](prefix + type, fn, capture || false); + } +}; +/** + * Unbind `el` event `type`'s callback `fn`. + * + * @param {Element} el, NodeList, HTMLCollection or Array + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @api public + */ + + +exports.unbind = function (el, type, fn, capture) { + el = toArray(el); + + for (var i = 0, il = el.length; i < il; i++) { + el[i][unbind](prefix + type, fn, capture || false); + } +}; +/** + * Returns a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * `wait` milliseconds. If `immediate` is true, trigger the function on the + * leading edge, instead of the trailing. + * + * @param {Function} fn + * @param {Integer} wait + * @param {Boolean} immediate + * @api public + */ + + +exports.debounce = function (fn, wait, immediate) { + var timeout; + return wait ? function () { + var context = this, + args = arguments; + + var later = function later() { + timeout = null; + if (!immediate) fn.apply(context, args); + }; + + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) fn.apply(context, args); + } : fn; +}; + +/***/ }), + +/***/ "./src/utils/extend.js": +/*!*****************************!*\ + !*** ./src/utils/extend.js ***! + \*****************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 4:0-14 */ +/***/ (function(module) { + +/* + * Source: https://github.com/segmentio/extend + */ +module.exports = function extend(object) { + // Takes an unlimited number of extenders. + var args = Array.prototype.slice.call(arguments, 1); // For each extender, copy their properties on our object. + + for (var i = 0, source; source = args[i]; i++) { + if (!source) continue; + + for (var property in source) { + object[property] = source[property]; + } + } + + return object; +}; + +/***/ }), + +/***/ "./src/utils/fuzzy.js": +/*!****************************!*\ + !*** ./src/utils/fuzzy.js ***! + \****************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module) { + +module.exports = function (text, pattern, options) { + // Aproximately where in the text is the pattern expected to be found? + var Match_Location = options.location || 0; //Determines how close the match must be to the fuzzy location (specified above). An exact letter match which is 'distance' characters away from the fuzzy location would score as a complete mismatch. A distance of '0' requires the match be at the exact location specified, a threshold of '1000' would require a perfect match to be within 800 characters of the fuzzy location to be found using a 0.8 threshold. + + var Match_Distance = options.distance || 100; // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match (of both letters and location), a threshold of '1.0' would match anything. + + var Match_Threshold = options.threshold || 0.4; + if (pattern === text) return true; // Exact match + + if (pattern.length > 32) return false; // This algorithm cannot be used + // Set starting location at beginning text and initialise the alphabet. + + var loc = Match_Location, + s = function () { + var q = {}, + i; + + for (i = 0; i < pattern.length; i++) { + q[pattern.charAt(i)] = 0; + } + + for (i = 0; i < pattern.length; i++) { + q[pattern.charAt(i)] |= 1 << pattern.length - i - 1; + } + + return q; + }(); // Compute and return the score for a match with e errors and x location. + // Accesses loc and pattern through being a closure. + + + function match_bitapScore_(e, x) { + var accuracy = e / pattern.length, + proximity = Math.abs(loc - x); + + if (!Match_Distance) { + // Dodge divide by zero error. + return proximity ? 1.0 : accuracy; + } + + return accuracy + proximity / Match_Distance; + } + + var score_threshold = Match_Threshold, + // Highest score beyond which we give up. + best_loc = text.indexOf(pattern, loc); // Is there a nearby exact match? (speedup) + + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); // What about in the other direction? (speedup) + + best_loc = text.lastIndexOf(pattern, loc + pattern.length); + + if (best_loc != -1) { + score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); + } + } // Initialise the bit arrays. + + + var matchmask = 1 << pattern.length - 1; + best_loc = -1; + var bin_min, bin_mid; + var bin_max = pattern.length + text.length; + var last_rd; + + for (var d = 0; d < pattern.length; d++) { + // Scan for the best match; each iteration allows for one more error. + // Run a binary search to determine how far from 'loc' we can stray at this + // error level. + bin_min = 0; + bin_mid = bin_max; + + while (bin_min < bin_mid) { + if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) { + bin_min = bin_mid; + } else { + bin_max = bin_mid; + } + + bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min); + } // Use the result from this iteration as the maximum for the next. + + + bin_max = bin_mid; + var start = Math.max(1, loc - bin_mid + 1); + var finish = Math.min(loc + bin_mid, text.length) + pattern.length; + var rd = Array(finish + 2); + rd[finish + 1] = (1 << d) - 1; + + for (var j = finish; j >= start; j--) { + // The alphabet (s) is a sparse hash, so the following line generates + // warnings. + var charMatch = s[text.charAt(j - 1)]; + + if (d === 0) { + // First pass: exact match. + rd[j] = (rd[j + 1] << 1 | 1) & charMatch; + } else { + // Subsequent passes: fuzzy match. + rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1]; + } + + if (rd[j] & matchmask) { + var score = match_bitapScore_(d, j - 1); // This match will almost certainly be better than any existing match. + // But check anyway. + + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j - 1; + + if (best_loc > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(1, 2 * loc - best_loc); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } // No hope for a (better) match at greater error levels. + + + if (match_bitapScore_(d + 1, loc) > score_threshold) { + break; + } + + last_rd = rd; + } + + return best_loc < 0 ? false : true; +}; + +/***/ }), + +/***/ "./src/utils/get-attribute.js": +/*!************************************!*\ + !*** ./src/utils/get-attribute.js ***! + \************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 11:0-14 */ +/***/ (function(module) { + +/** + * A cross-browser implementation of getAttribute. + * Source found here: http://stackoverflow.com/a/3755343/361337 written by Vivin Paliath + * + * Return the value for `attr` at `element`. + * + * @param {Element} el + * @param {String} attr + * @api public + */ +module.exports = function (el, attr) { + var result = el.getAttribute && el.getAttribute(attr) || null; + + if (!result) { + var attrs = el.attributes; + var length = attrs.length; + + for (var i = 0; i < length; i++) { + if (attrs[i] !== undefined) { + if (attrs[i].nodeName === attr) { + result = attrs[i].nodeValue; + } + } + } + } + + return result; +}; + +/***/ }), + +/***/ "./src/utils/get-by-class.js": +/*!***********************************!*\ + !*** ./src/utils/get-by-class.js ***! + \***********************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 53:0-14 */ +/***/ (function(module) { + +/** + * A cross-browser implementation of getElementsByClass. + * Heavily based on Dustin Diaz's function: http://dustindiaz.com/getelementsbyclass. + * + * Find all elements with class `className` inside `container`. + * Use `single = true` to increase performance in older browsers + * when only one element is needed. + * + * @param {String} className + * @param {Element} container + * @param {Boolean} single + * @api public + */ +var getElementsByClassName = function getElementsByClassName(container, className, single) { + if (single) { + return container.getElementsByClassName(className)[0]; + } else { + return container.getElementsByClassName(className); + } +}; + +var querySelector = function querySelector(container, className, single) { + className = '.' + className; + + if (single) { + return container.querySelector(className); + } else { + return container.querySelectorAll(className); + } +}; + +var polyfill = function polyfill(container, className, single) { + var classElements = [], + tag = '*'; + var els = container.getElementsByTagName(tag); + var elsLen = els.length; + var pattern = new RegExp('(^|\\s)' + className + '(\\s|$)'); + + for (var i = 0, j = 0; i < elsLen; i++) { + if (pattern.test(els[i].className)) { + if (single) { + return els[i]; + } else { + classElements[j] = els[i]; + j++; + } + } + } + + return classElements; +}; + +module.exports = function () { + return function (container, className, single, options) { + options = options || {}; + + if (options.test && options.getElementsByClassName || !options.test && document.getElementsByClassName) { + return getElementsByClassName(container, className, single); + } else if (options.test && options.querySelector || !options.test && document.querySelector) { + return querySelector(container, className, single); + } else { + return polyfill(container, className, single); + } + }; +}(); + +/***/ }), + +/***/ "./src/utils/index-of.js": +/*!*******************************!*\ + !*** ./src/utils/index-of.js ***! + \*******************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 3:0-14 */ +/***/ (function(module) { + +var indexOf = [].indexOf; + +module.exports = function (arr, obj) { + if (indexOf) return arr.indexOf(obj); + + for (var i = 0, il = arr.length; i < il; ++i) { + if (arr[i] === obj) return i; + } + + return -1; +}; + +/***/ }), + +/***/ "./src/utils/to-array.js": +/*!*******************************!*\ + !*** ./src/utils/to-array.js ***! + \*******************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 11:0-14 */ +/***/ (function(module) { + +/** + * Source: https://github.com/timoxley/to-array + * + * Convert an array-like object into an `Array`. + * If `collection` is already an `Array`, then will return a clone of `collection`. + * + * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList` + * @return {Array} Naive conversion of `collection` to a new `Array`. + * @api public + */ +module.exports = function toArray(collection) { + if (typeof collection === 'undefined') return []; + if (collection === null) return [null]; + if (collection === window) return [window]; + if (typeof collection === 'string') return [collection]; + if (isArray(collection)) return collection; + if (typeof collection.length != 'number') return [collection]; + if (typeof collection === 'function' && collection instanceof Function) return [collection]; + var arr = []; + + for (var i = 0, il = collection.length; i < il; i++) { + if (Object.prototype.hasOwnProperty.call(collection, i) || i in collection) { + arr.push(collection[i]); + } + } + + if (!arr.length) return []; + return arr; +}; + +function isArray(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; +} + +/***/ }), + +/***/ "./src/utils/to-string.js": +/*!********************************!*\ + !*** ./src/utils/to-string.js ***! + \********************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 1:0-14 */ +/***/ (function(module) { + +module.exports = function (s) { + s = s === undefined ? '' : s; + s = s === null ? '' : s; + s = s.toString(); + return s; +}; + +/***/ }), + +/***/ "./node_modules/string-natural-compare/natural-compare.js": +/*!****************************************************************!*\ + !*** ./node_modules/string-natural-compare/natural-compare.js ***! + \****************************************************************/ +/*! unknown exports (runtime-defined) */ +/*! runtime requirements: module */ +/*! CommonJS bailout: module.exports is used directly at 124:0-14 */ +/***/ (function(module) { + +"use strict"; + + +var alphabet; +var alphabetIndexMap; +var alphabetIndexMapLength = 0; + +function isNumberCode(code) { + return code >= 48 && code <= 57; +} + +function naturalCompare(a, b) { + var lengthA = (a += '').length; + var lengthB = (b += '').length; + var aIndex = 0; + var bIndex = 0; + + while (aIndex < lengthA && bIndex < lengthB) { + var charCodeA = a.charCodeAt(aIndex); + var charCodeB = b.charCodeAt(bIndex); + + if (isNumberCode(charCodeA)) { + if (!isNumberCode(charCodeB)) { + return charCodeA - charCodeB; + } + + var numStartA = aIndex; + var numStartB = bIndex; + + while (charCodeA === 48 && ++numStartA < lengthA) { + charCodeA = a.charCodeAt(numStartA); + } + while (charCodeB === 48 && ++numStartB < lengthB) { + charCodeB = b.charCodeAt(numStartB); + } + + var numEndA = numStartA; + var numEndB = numStartB; + + while (numEndA < lengthA && isNumberCode(a.charCodeAt(numEndA))) { + ++numEndA; + } + while (numEndB < lengthB && isNumberCode(b.charCodeAt(numEndB))) { + ++numEndB; + } + + var difference = numEndA - numStartA - numEndB + numStartB; // numA length - numB length + if (difference) { + return difference; + } + + while (numStartA < numEndA) { + difference = a.charCodeAt(numStartA++) - b.charCodeAt(numStartB++); + if (difference) { + return difference; + } + } + + aIndex = numEndA; + bIndex = numEndB; + continue; + } + + if (charCodeA !== charCodeB) { + if ( + charCodeA < alphabetIndexMapLength && + charCodeB < alphabetIndexMapLength && + alphabetIndexMap[charCodeA] !== -1 && + alphabetIndexMap[charCodeB] !== -1 + ) { + return alphabetIndexMap[charCodeA] - alphabetIndexMap[charCodeB]; + } + + return charCodeA - charCodeB; + } + + ++aIndex; + ++bIndex; + } + + if (aIndex >= lengthA && bIndex < lengthB && lengthA >= lengthB) { + return -1; + } + + if (bIndex >= lengthB && aIndex < lengthA && lengthB >= lengthA) { + return 1; + } + + return lengthA - lengthB; +} + +naturalCompare.caseInsensitive = naturalCompare.i = function(a, b) { + return naturalCompare(('' + a).toLowerCase(), ('' + b).toLowerCase()); +}; + +Object.defineProperties(naturalCompare, { + alphabet: { + get: function() { + return alphabet; + }, + + set: function(value) { + alphabet = value; + alphabetIndexMap = []; + + var i = 0; + + if (alphabet) { + for (; i < alphabet.length; i++) { + alphabetIndexMap[alphabet.charCodeAt(i)] = i; + } + } + + alphabetIndexMapLength = alphabetIndexMap.length; + + for (i = 0; i < alphabetIndexMapLength; i++) { + if (alphabetIndexMap[i] === undefined) { + alphabetIndexMap[i] = -1; + } + } + }, + }, +}); + +module.exports = naturalCompare; + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ // module exports must be returned from runtime so entry inlining is disabled +/******/ // startup +/******/ // Load entry module and return exports +/******/ return __webpack_require__("./src/index.js"); +/******/ })() +; +//# sourceMappingURL=list.js.map \ No newline at end of file diff --git a/gin_ops/static/dist/libs/list.js/dist/list.js.map b/gin_ops/static/dist/libs/list.js/dist/list.js.map new file mode 100644 index 0000000..0583dbe --- /dev/null +++ b/gin_ops/static/dist/libs/list.js/dist/list.js.map @@ -0,0 +1 @@ +{"version":3,"file":"list.js","sources":["webpack://List/./src/add-async.js","webpack://List/./src/filter.js","webpack://List/./src/fuzzy-search.js","webpack://List/./src/index.js","webpack://List/./src/item.js","webpack://List/./src/pagination.js","webpack://List/./src/parse.js","webpack://List/./src/search.js","webpack://List/./src/sort.js","webpack://List/./src/templater.js","webpack://List/./src/utils/classes.js","webpack://List/./src/utils/events.js","webpack://List/./src/utils/extend.js","webpack://List/./src/utils/fuzzy.js","webpack://List/./src/utils/get-attribute.js","webpack://List/./src/utils/get-by-class.js","webpack://List/./src/utils/index-of.js","webpack://List/./src/utils/to-array.js","webpack://List/./src/utils/to-string.js","webpack://List/./node_modules/string-natural-compare/natural-compare.js","webpack://List/webpack/bootstrap","webpack://List/webpack/startup"],"sourcesContent":["module.exports = function (list) {\n var addAsync = function (values, callback, items) {\n var valuesToAdd = values.splice(0, 50)\n items = items || []\n items = items.concat(list.add(valuesToAdd))\n if (values.length > 0) {\n setTimeout(function () {\n addAsync(values, callback, items)\n }, 1)\n } else {\n list.update()\n callback(items)\n }\n }\n return addAsync\n}\n","module.exports = function (list) {\n // Add handlers\n list.handlers.filterStart = list.handlers.filterStart || []\n list.handlers.filterComplete = list.handlers.filterComplete || []\n\n return function (filterFunction) {\n list.trigger('filterStart')\n list.i = 1 // Reset paging\n list.reset.filter()\n if (filterFunction === undefined) {\n list.filtered = false\n } else {\n list.filtered = true\n var is = list.items\n for (var i = 0, il = is.length; i < il; i++) {\n var item = is[i]\n if (filterFunction(item)) {\n item.filtered = true\n } else {\n item.filtered = false\n }\n }\n }\n list.update()\n list.trigger('filterComplete')\n return list.visibleItems\n }\n}\n","var classes = require('./utils/classes'),\n events = require('./utils/events'),\n extend = require('./utils/extend'),\n toString = require('./utils/to-string'),\n getByClass = require('./utils/get-by-class'),\n fuzzy = require('./utils/fuzzy')\n\nmodule.exports = function (list, options) {\n options = options || {}\n\n options = extend(\n {\n location: 0,\n distance: 100,\n threshold: 0.4,\n multiSearch: true,\n searchClass: 'fuzzy-search',\n },\n options\n )\n\n var fuzzySearch = {\n search: function (searchString, columns) {\n // Substract arguments from the searchString or put searchString as only argument\n var searchArguments = options.multiSearch ? searchString.replace(/ +$/, '').split(/ +/) : [searchString]\n\n for (var k = 0, kl = list.items.length; k < kl; k++) {\n fuzzySearch.item(list.items[k], columns, searchArguments)\n }\n },\n item: function (item, columns, searchArguments) {\n var found = true\n for (var i = 0; i < searchArguments.length; i++) {\n var foundArgument = false\n for (var j = 0, jl = columns.length; j < jl; j++) {\n if (fuzzySearch.values(item.values(), columns[j], searchArguments[i])) {\n foundArgument = true\n }\n }\n if (!foundArgument) {\n found = false\n }\n }\n item.found = found\n },\n values: function (values, value, searchArgument) {\n if (values.hasOwnProperty(value)) {\n var text = toString(values[value]).toLowerCase()\n\n if (fuzzy(text, searchArgument, options)) {\n return true\n }\n }\n return false\n },\n }\n\n events.bind(\n getByClass(list.listContainer, options.searchClass),\n 'keyup',\n list.utils.events.debounce(function (e) {\n var target = e.target || e.srcElement // IE have srcElement\n list.search(target.value, fuzzySearch.search)\n }, list.searchDelay)\n )\n\n return function (str, columns) {\n list.search(str, columns, fuzzySearch.search)\n }\n}\n","var naturalSort = require('string-natural-compare'),\n getByClass = require('./utils/get-by-class'),\n extend = require('./utils/extend'),\n indexOf = require('./utils/index-of'),\n events = require('./utils/events'),\n toString = require('./utils/to-string'),\n classes = require('./utils/classes'),\n getAttribute = require('./utils/get-attribute'),\n toArray = require('./utils/to-array')\n\nmodule.exports = function (id, options, values) {\n var self = this,\n init,\n Item = require('./item')(self),\n addAsync = require('./add-async')(self),\n initPagination = require('./pagination')(self)\n\n init = {\n start: function () {\n self.listClass = 'list'\n self.searchClass = 'search'\n self.sortClass = 'sort'\n self.page = 10000\n self.i = 1\n self.items = []\n self.visibleItems = []\n self.matchingItems = []\n self.searched = false\n self.filtered = false\n self.searchColumns = undefined\n self.searchDelay = 0\n self.handlers = { updated: [] }\n self.valueNames = []\n self.utils = {\n getByClass: getByClass,\n extend: extend,\n indexOf: indexOf,\n events: events,\n toString: toString,\n naturalSort: naturalSort,\n classes: classes,\n getAttribute: getAttribute,\n toArray: toArray,\n }\n\n self.utils.extend(self, options)\n\n self.listContainer = typeof id === 'string' ? document.getElementById(id) : id\n if (!self.listContainer) {\n return\n }\n self.list = getByClass(self.listContainer, self.listClass, true)\n\n self.parse = require('./parse')(self)\n self.templater = require('./templater')(self)\n self.search = require('./search')(self)\n self.filter = require('./filter')(self)\n self.sort = require('./sort')(self)\n self.fuzzySearch = require('./fuzzy-search')(self, options.fuzzySearch)\n\n this.handlers()\n this.items()\n this.pagination()\n\n self.update()\n },\n handlers: function () {\n for (var handler in self.handlers) {\n if (self[handler] && self.handlers.hasOwnProperty(handler)) {\n self.on(handler, self[handler])\n }\n }\n },\n items: function () {\n self.parse(self.list)\n if (values !== undefined) {\n self.add(values)\n }\n },\n pagination: function () {\n if (options.pagination !== undefined) {\n if (options.pagination === true) {\n options.pagination = [{}]\n }\n if (options.pagination[0] === undefined) {\n options.pagination = [options.pagination]\n }\n for (var i = 0, il = options.pagination.length; i < il; i++) {\n initPagination(options.pagination[i])\n }\n }\n },\n }\n\n /*\n * Re-parse the List, use if html have changed\n */\n this.reIndex = function () {\n self.items = []\n self.visibleItems = []\n self.matchingItems = []\n self.searched = false\n self.filtered = false\n self.parse(self.list)\n }\n\n this.toJSON = function () {\n var json = []\n for (var i = 0, il = self.items.length; i < il; i++) {\n json.push(self.items[i].values())\n }\n return json\n }\n\n /*\n * Add object to list\n */\n this.add = function (values, callback) {\n if (values.length === 0) {\n return\n }\n if (callback) {\n addAsync(values.slice(0), callback)\n return\n }\n var added = [],\n notCreate = false\n if (values[0] === undefined) {\n values = [values]\n }\n for (var i = 0, il = values.length; i < il; i++) {\n var item = null\n notCreate = self.items.length > self.page ? true : false\n item = new Item(values[i], undefined, notCreate)\n self.items.push(item)\n added.push(item)\n }\n self.update()\n return added\n }\n\n this.show = function (i, page) {\n this.i = i\n this.page = page\n self.update()\n return self\n }\n\n /* Removes object from list.\n * Loops through the list and removes objects where\n * property \"valuename\" === value\n */\n this.remove = function (valueName, value, options) {\n var found = 0\n for (var i = 0, il = self.items.length; i < il; i++) {\n if (self.items[i].values()[valueName] == value) {\n self.templater.remove(self.items[i], options)\n self.items.splice(i, 1)\n il--\n i--\n found++\n }\n }\n self.update()\n return found\n }\n\n /* Gets the objects in the list which\n * property \"valueName\" === value\n */\n this.get = function (valueName, value) {\n var matchedItems = []\n for (var i = 0, il = self.items.length; i < il; i++) {\n var item = self.items[i]\n if (item.values()[valueName] == value) {\n matchedItems.push(item)\n }\n }\n return matchedItems\n }\n\n /*\n * Get size of the list\n */\n this.size = function () {\n return self.items.length\n }\n\n /*\n * Removes all items from the list\n */\n this.clear = function () {\n self.templater.clear()\n self.items = []\n return self\n }\n\n this.on = function (event, callback) {\n self.handlers[event].push(callback)\n return self\n }\n\n this.off = function (event, callback) {\n var e = self.handlers[event]\n var index = indexOf(e, callback)\n if (index > -1) {\n e.splice(index, 1)\n }\n return self\n }\n\n this.trigger = function (event) {\n var i = self.handlers[event].length\n while (i--) {\n self.handlers[event][i](self)\n }\n return self\n }\n\n this.reset = {\n filter: function () {\n var is = self.items,\n il = is.length\n while (il--) {\n is[il].filtered = false\n }\n return self\n },\n search: function () {\n var is = self.items,\n il = is.length\n while (il--) {\n is[il].found = false\n }\n return self\n },\n }\n\n this.update = function () {\n var is = self.items,\n il = is.length\n\n self.visibleItems = []\n self.matchingItems = []\n self.templater.clear()\n for (var i = 0; i < il; i++) {\n if (is[i].matching() && self.matchingItems.length + 1 >= self.i && self.visibleItems.length < self.page) {\n is[i].show()\n self.visibleItems.push(is[i])\n self.matchingItems.push(is[i])\n } else if (is[i].matching()) {\n self.matchingItems.push(is[i])\n is[i].hide()\n } else {\n is[i].hide()\n }\n }\n self.trigger('updated')\n return self\n }\n\n init.start()\n}\n","module.exports = function (list) {\n return function (initValues, element, notCreate) {\n var item = this\n\n this._values = {}\n\n this.found = false // Show if list.searched == true and this.found == true\n this.filtered = false // Show if list.filtered == true and this.filtered == true\n\n var init = function (initValues, element, notCreate) {\n if (element === undefined) {\n if (notCreate) {\n item.values(initValues, notCreate)\n } else {\n item.values(initValues)\n }\n } else {\n item.elm = element\n var values = list.templater.get(item, initValues)\n item.values(values)\n }\n }\n\n this.values = function (newValues, notCreate) {\n if (newValues !== undefined) {\n for (var name in newValues) {\n item._values[name] = newValues[name]\n }\n if (notCreate !== true) {\n list.templater.set(item, item.values())\n }\n } else {\n return item._values\n }\n }\n\n this.show = function () {\n list.templater.show(item)\n }\n\n this.hide = function () {\n list.templater.hide(item)\n }\n\n this.matching = function () {\n return (\n (list.filtered && list.searched && item.found && item.filtered) ||\n (list.filtered && !list.searched && item.filtered) ||\n (!list.filtered && list.searched && item.found) ||\n (!list.filtered && !list.searched)\n )\n }\n\n this.visible = function () {\n return item.elm && item.elm.parentNode == list.list ? true : false\n }\n\n init(initValues, element, notCreate)\n }\n}\n","var classes = require('./utils/classes'),\n events = require('./utils/events'),\n List = require('./index')\n\nmodule.exports = function (list) {\n var isHidden = false\n\n var refresh = function (pagingList, options) {\n if (list.page < 1) {\n list.listContainer.style.display = 'none'\n isHidden = true\n return\n } else if (isHidden) {\n list.listContainer.style.display = 'block'\n }\n\n var item,\n l = list.matchingItems.length,\n index = list.i,\n page = list.page,\n pages = Math.ceil(l / page),\n currentPage = Math.ceil(index / page),\n innerWindow = options.innerWindow || 2,\n left = options.left || options.outerWindow || 0,\n right = options.right || options.outerWindow || 0\n\n right = pages - right\n pagingList.clear()\n for (var i = 1; i <= pages; i++) {\n var className = currentPage === i ? 'active' : ''\n\n //console.log(i, left, right, currentPage, (currentPage - innerWindow), (currentPage + innerWindow), className);\n\n if (is.number(i, left, right, currentPage, innerWindow)) {\n item = pagingList.add({\n page: i,\n dotted: false,\n })[0]\n if (className) {\n classes(item.elm).add(className)\n }\n item.elm.firstChild.setAttribute('data-i', i)\n item.elm.firstChild.setAttribute('data-page', page)\n } else if (is.dotted(pagingList, i, left, right, currentPage, innerWindow, pagingList.size())) {\n item = pagingList.add({\n page: '...',\n dotted: true,\n })[0]\n classes(item.elm).add('disabled')\n }\n }\n }\n\n var is = {\n number: function (i, left, right, currentPage, innerWindow) {\n return this.left(i, left) || this.right(i, right) || this.innerWindow(i, currentPage, innerWindow)\n },\n left: function (i, left) {\n return i <= left\n },\n right: function (i, right) {\n return i > right\n },\n innerWindow: function (i, currentPage, innerWindow) {\n return i >= currentPage - innerWindow && i <= currentPage + innerWindow\n },\n dotted: function (pagingList, i, left, right, currentPage, innerWindow, currentPageItem) {\n return (\n this.dottedLeft(pagingList, i, left, right, currentPage, innerWindow) ||\n this.dottedRight(pagingList, i, left, right, currentPage, innerWindow, currentPageItem)\n )\n },\n dottedLeft: function (pagingList, i, left, right, currentPage, innerWindow) {\n return i == left + 1 && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right)\n },\n dottedRight: function (pagingList, i, left, right, currentPage, innerWindow, currentPageItem) {\n if (pagingList.items[currentPageItem - 1].values().dotted) {\n return false\n } else {\n return i == right && !this.innerWindow(i, currentPage, innerWindow) && !this.right(i, right)\n }\n },\n }\n\n return function (options) {\n var pagingList = new List(list.listContainer.id, {\n listClass: options.paginationClass || 'pagination',\n item: options.item || \"
  • \",\n valueNames: ['page', 'dotted'],\n searchClass: 'pagination-search-that-is-not-supposed-to-exist',\n sortClass: 'pagination-sort-that-is-not-supposed-to-exist',\n })\n\n events.bind(pagingList.listContainer, 'click', function (e) {\n var target = e.target || e.srcElement,\n page = list.utils.getAttribute(target, 'data-page'),\n i = list.utils.getAttribute(target, 'data-i')\n if (i) {\n list.show((i - 1) * page + 1, page)\n }\n })\n\n list.on('updated', function () {\n refresh(pagingList, options)\n })\n refresh(pagingList, options)\n }\n}\n","module.exports = function (list) {\n var Item = require('./item')(list)\n\n var getChildren = function (parent) {\n var nodes = parent.childNodes,\n items = []\n for (var i = 0, il = nodes.length; i < il; i++) {\n // Only textnodes have a data attribute\n if (nodes[i].data === undefined) {\n items.push(nodes[i])\n }\n }\n return items\n }\n\n var parse = function (itemElements, valueNames) {\n for (var i = 0, il = itemElements.length; i < il; i++) {\n list.items.push(new Item(valueNames, itemElements[i]))\n }\n }\n var parseAsync = function (itemElements, valueNames) {\n var itemsToIndex = itemElements.splice(0, 50) // TODO: If < 100 items, what happens in IE etc?\n parse(itemsToIndex, valueNames)\n if (itemElements.length > 0) {\n setTimeout(function () {\n parseAsync(itemElements, valueNames)\n }, 1)\n } else {\n list.update()\n list.trigger('parseComplete')\n }\n }\n\n list.handlers.parseComplete = list.handlers.parseComplete || []\n\n return function () {\n var itemsToIndex = getChildren(list.list),\n valueNames = list.valueNames\n\n if (list.indexAsync) {\n parseAsync(itemsToIndex, valueNames)\n } else {\n parse(itemsToIndex, valueNames)\n }\n }\n}\n","module.exports = function (list) {\n var item, text, columns, searchString, customSearch\n\n var prepare = {\n resetList: function () {\n list.i = 1\n list.templater.clear()\n customSearch = undefined\n },\n setOptions: function (args) {\n if (args.length == 2 && args[1] instanceof Array) {\n columns = args[1]\n } else if (args.length == 2 && typeof args[1] == 'function') {\n columns = undefined\n customSearch = args[1]\n } else if (args.length == 3) {\n columns = args[1]\n customSearch = args[2]\n } else {\n columns = undefined\n }\n },\n setColumns: function () {\n if (list.items.length === 0) return\n if (columns === undefined) {\n columns = list.searchColumns === undefined ? prepare.toArray(list.items[0].values()) : list.searchColumns\n }\n },\n setSearchString: function (s) {\n s = list.utils.toString(s).toLowerCase()\n s = s.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, '\\\\$&') // Escape regular expression characters\n searchString = s\n },\n toArray: function (values) {\n var tmpColumn = []\n for (var name in values) {\n tmpColumn.push(name)\n }\n return tmpColumn\n },\n }\n var search = {\n list: function () {\n // Extract quoted phrases \"word1 word2\" from original searchString\n // searchString is converted to lowercase by List.js\n var words = [],\n phrase,\n ss = searchString\n while ((phrase = ss.match(/\"([^\"]+)\"/)) !== null) {\n words.push(phrase[1])\n ss = ss.substring(0, phrase.index) + ss.substring(phrase.index + phrase[0].length)\n }\n // Get remaining space-separated words (if any)\n ss = ss.trim()\n if (ss.length) words = words.concat(ss.split(/\\s+/))\n for (var k = 0, kl = list.items.length; k < kl; k++) {\n var item = list.items[k]\n item.found = false\n if (!words.length) continue\n for (var i = 0, il = words.length; i < il; i++) {\n var word_found = false\n for (var j = 0, jl = columns.length; j < jl; j++) {\n var values = item.values(),\n column = columns[j]\n if (values.hasOwnProperty(column) && values[column] !== undefined && values[column] !== null) {\n var text = typeof values[column] !== 'string' ? values[column].toString() : values[column]\n if (text.toLowerCase().indexOf(words[i]) !== -1) {\n // word found, so no need to check it against any other columns\n word_found = true\n break\n }\n }\n }\n // this word not found? no need to check any other words, the item cannot match\n if (!word_found) break\n }\n item.found = word_found\n }\n },\n // Removed search.item() and search.values()\n reset: function () {\n list.reset.search()\n list.searched = false\n },\n }\n\n var searchMethod = function (str) {\n list.trigger('searchStart')\n\n prepare.resetList()\n prepare.setSearchString(str)\n prepare.setOptions(arguments) // str, cols|searchFunction, searchFunction\n prepare.setColumns()\n\n if (searchString === '') {\n search.reset()\n } else {\n list.searched = true\n if (customSearch) {\n customSearch(searchString, columns)\n } else {\n search.list()\n }\n }\n\n list.update()\n list.trigger('searchComplete')\n return list.visibleItems\n }\n\n list.handlers.searchStart = list.handlers.searchStart || []\n list.handlers.searchComplete = list.handlers.searchComplete || []\n\n list.utils.events.bind(\n list.utils.getByClass(list.listContainer, list.searchClass),\n 'keyup',\n list.utils.events.debounce(function (e) {\n var target = e.target || e.srcElement, // IE have srcElement\n alreadyCleared = target.value === '' && !list.searched\n if (!alreadyCleared) {\n // If oninput already have resetted the list, do nothing\n searchMethod(target.value)\n }\n }, list.searchDelay)\n )\n\n // Used to detect click on HTML5 clear button\n list.utils.events.bind(list.utils.getByClass(list.listContainer, list.searchClass), 'input', function (e) {\n var target = e.target || e.srcElement\n if (target.value === '') {\n searchMethod('')\n }\n })\n\n return searchMethod\n}\n","module.exports = function (list) {\n var buttons = {\n els: undefined,\n clear: function () {\n for (var i = 0, il = buttons.els.length; i < il; i++) {\n list.utils.classes(buttons.els[i]).remove('asc')\n list.utils.classes(buttons.els[i]).remove('desc')\n }\n },\n getOrder: function (btn) {\n var predefinedOrder = list.utils.getAttribute(btn, 'data-order')\n if (predefinedOrder == 'asc' || predefinedOrder == 'desc') {\n return predefinedOrder\n } else if (list.utils.classes(btn).has('desc')) {\n return 'asc'\n } else if (list.utils.classes(btn).has('asc')) {\n return 'desc'\n } else {\n return 'asc'\n }\n },\n getInSensitive: function (btn, options) {\n var insensitive = list.utils.getAttribute(btn, 'data-insensitive')\n if (insensitive === 'false') {\n options.insensitive = false\n } else {\n options.insensitive = true\n }\n },\n setOrder: function (options) {\n for (var i = 0, il = buttons.els.length; i < il; i++) {\n var btn = buttons.els[i]\n if (list.utils.getAttribute(btn, 'data-sort') !== options.valueName) {\n continue\n }\n var predefinedOrder = list.utils.getAttribute(btn, 'data-order')\n if (predefinedOrder == 'asc' || predefinedOrder == 'desc') {\n if (predefinedOrder == options.order) {\n list.utils.classes(btn).add(options.order)\n }\n } else {\n list.utils.classes(btn).add(options.order)\n }\n }\n },\n }\n\n var sort = function () {\n list.trigger('sortStart')\n var options = {}\n\n var target = arguments[0].currentTarget || arguments[0].srcElement || undefined\n\n if (target) {\n options.valueName = list.utils.getAttribute(target, 'data-sort')\n buttons.getInSensitive(target, options)\n options.order = buttons.getOrder(target)\n } else {\n options = arguments[1] || options\n options.valueName = arguments[0]\n options.order = options.order || 'asc'\n options.insensitive = typeof options.insensitive == 'undefined' ? true : options.insensitive\n }\n\n buttons.clear()\n buttons.setOrder(options)\n\n // caseInsensitive\n // alphabet\n var customSortFunction = options.sortFunction || list.sortFunction || null,\n multi = options.order === 'desc' ? -1 : 1,\n sortFunction\n\n if (customSortFunction) {\n sortFunction = function (itemA, itemB) {\n return customSortFunction(itemA, itemB, options) * multi\n }\n } else {\n sortFunction = function (itemA, itemB) {\n var sort = list.utils.naturalSort\n sort.alphabet = list.alphabet || options.alphabet || undefined\n if (!sort.alphabet && options.insensitive) {\n sort = list.utils.naturalSort.caseInsensitive\n }\n return sort(itemA.values()[options.valueName], itemB.values()[options.valueName]) * multi\n }\n }\n\n list.items.sort(sortFunction)\n list.update()\n list.trigger('sortComplete')\n }\n\n // Add handlers\n list.handlers.sortStart = list.handlers.sortStart || []\n list.handlers.sortComplete = list.handlers.sortComplete || []\n\n buttons.els = list.utils.getByClass(list.listContainer, list.sortClass)\n list.utils.events.bind(buttons.els, 'click', sort)\n list.on('searchStart', buttons.clear)\n list.on('filterStart', buttons.clear)\n\n return sort\n}\n","var Templater = function (list) {\n var createItem,\n templater = this\n\n var init = function () {\n var itemSource\n\n if (typeof list.item === 'function') {\n createItem = function (values) {\n var item = list.item(values)\n return getItemSource(item)\n }\n return\n }\n\n if (typeof list.item === 'string') {\n if (list.item.indexOf('<') === -1) {\n itemSource = document.getElementById(list.item)\n } else {\n itemSource = getItemSource(list.item)\n }\n } else {\n /* If item source does not exists, use the first item in list as\n source for new items */\n itemSource = getFirstListItem()\n }\n\n if (!itemSource) {\n throw new Error(\"The list needs to have at least one item on init otherwise you'll have to add a template.\")\n }\n\n itemSource = createCleanTemplateItem(itemSource, list.valueNames)\n\n createItem = function () {\n return itemSource.cloneNode(true)\n }\n }\n\n var createCleanTemplateItem = function (templateNode, valueNames) {\n var el = templateNode.cloneNode(true)\n el.removeAttribute('id')\n\n for (var i = 0, il = valueNames.length; i < il; i++) {\n var elm = undefined,\n valueName = valueNames[i]\n if (valueName.data) {\n for (var j = 0, jl = valueName.data.length; j < jl; j++) {\n el.setAttribute('data-' + valueName.data[j], '')\n }\n } else if (valueName.attr && valueName.name) {\n elm = list.utils.getByClass(el, valueName.name, true)\n if (elm) {\n elm.setAttribute(valueName.attr, '')\n }\n } else {\n elm = list.utils.getByClass(el, valueName, true)\n if (elm) {\n elm.innerHTML = ''\n }\n }\n }\n return el\n }\n\n var getFirstListItem = function () {\n var nodes = list.list.childNodes\n\n for (var i = 0, il = nodes.length; i < il; i++) {\n // Only textnodes have a data attribute\n if (nodes[i].data === undefined) {\n return nodes[i].cloneNode(true)\n }\n }\n return undefined\n }\n\n var getItemSource = function (itemHTML) {\n if (typeof itemHTML !== 'string') return undefined\n if (/]/g.exec(itemHTML)) {\n var tbody = document.createElement('tbody')\n tbody.innerHTML = itemHTML\n return tbody.firstElementChild\n } else if (itemHTML.indexOf('<') !== -1) {\n var div = document.createElement('div')\n div.innerHTML = itemHTML\n return div.firstElementChild\n }\n return undefined\n }\n\n var getValueName = function (name) {\n for (var i = 0, il = list.valueNames.length; i < il; i++) {\n var valueName = list.valueNames[i]\n if (valueName.data) {\n var data = valueName.data\n for (var j = 0, jl = data.length; j < jl; j++) {\n if (data[j] === name) {\n return { data: name }\n }\n }\n } else if (valueName.attr && valueName.name && valueName.name == name) {\n return valueName\n } else if (valueName === name) {\n return name\n }\n }\n }\n\n var setValue = function (item, name, value) {\n var elm = undefined,\n valueName = getValueName(name)\n if (!valueName) return\n if (valueName.data) {\n item.elm.setAttribute('data-' + valueName.data, value)\n } else if (valueName.attr && valueName.name) {\n elm = list.utils.getByClass(item.elm, valueName.name, true)\n if (elm) {\n elm.setAttribute(valueName.attr, value)\n }\n } else {\n elm = list.utils.getByClass(item.elm, valueName, true)\n if (elm) {\n elm.innerHTML = value\n }\n }\n }\n\n this.get = function (item, valueNames) {\n templater.create(item)\n var values = {}\n for (var i = 0, il = valueNames.length; i < il; i++) {\n var elm = undefined,\n valueName = valueNames[i]\n if (valueName.data) {\n for (var j = 0, jl = valueName.data.length; j < jl; j++) {\n values[valueName.data[j]] = list.utils.getAttribute(item.elm, 'data-' + valueName.data[j])\n }\n } else if (valueName.attr && valueName.name) {\n elm = list.utils.getByClass(item.elm, valueName.name, true)\n values[valueName.name] = elm ? list.utils.getAttribute(elm, valueName.attr) : ''\n } else {\n elm = list.utils.getByClass(item.elm, valueName, true)\n values[valueName] = elm ? elm.innerHTML : ''\n }\n }\n return values\n }\n\n this.set = function (item, values) {\n if (!templater.create(item)) {\n for (var v in values) {\n if (values.hasOwnProperty(v)) {\n setValue(item, v, values[v])\n }\n }\n }\n }\n\n this.create = function (item) {\n if (item.elm !== undefined) {\n return false\n }\n item.elm = createItem(item.values())\n templater.set(item, item.values())\n return true\n }\n this.remove = function (item) {\n if (item.elm.parentNode === list.list) {\n list.list.removeChild(item.elm)\n }\n }\n this.show = function (item) {\n templater.create(item)\n list.list.appendChild(item.elm)\n }\n this.hide = function (item) {\n if (item.elm !== undefined && item.elm.parentNode === list.list) {\n list.list.removeChild(item.elm)\n }\n }\n this.clear = function () {\n /* .innerHTML = ''; fucks up IE */\n if (list.list.hasChildNodes()) {\n while (list.list.childNodes.length >= 1) {\n list.list.removeChild(list.list.firstChild)\n }\n }\n }\n\n init()\n}\n\nmodule.exports = function (list) {\n return new Templater(list)\n}\n","/**\n * Module dependencies.\n */\n\nvar index = require('./index-of')\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function (el) {\n return new ClassList(el)\n}\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n if (!el || !el.nodeType) {\n throw new Error('A DOM element reference is required')\n }\n this.el = el\n this.list = el.classList\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function (name) {\n // classList\n if (this.list) {\n this.list.add(name)\n return this\n }\n\n // fallback\n var arr = this.array()\n var i = index(arr, name)\n if (!~i) arr.push(name)\n this.el.className = arr.join(' ')\n return this\n}\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function (name) {\n // classList\n if (this.list) {\n this.list.remove(name)\n return this\n }\n\n // fallback\n var arr = this.array()\n var i = index(arr, name)\n if (~i) arr.splice(i, 1)\n this.el.className = arr.join(' ')\n return this\n}\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function (name, force) {\n // classList\n if (this.list) {\n if ('undefined' !== typeof force) {\n if (force !== this.list.toggle(name, force)) {\n this.list.toggle(name) // toggle again to correct\n }\n } else {\n this.list.toggle(name)\n }\n return this\n }\n\n // fallback\n if ('undefined' !== typeof force) {\n if (!force) {\n this.remove(name)\n } else {\n this.add(name)\n }\n } else {\n if (this.has(name)) {\n this.remove(name)\n } else {\n this.add(name)\n }\n }\n\n return this\n}\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function () {\n var className = this.el.getAttribute('class') || ''\n var str = className.replace(/^\\s+|\\s+$/g, '')\n var arr = str.split(re)\n if ('' === arr[0]) arr.shift()\n return arr\n}\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has = ClassList.prototype.contains = function (name) {\n return this.list ? this.list.contains(name) : !!~index(this.array(), name)\n}\n","var bind = window.addEventListener ? 'addEventListener' : 'attachEvent',\n unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent',\n prefix = bind !== 'addEventListener' ? 'on' : '',\n toArray = require('./to-array')\n\n/**\n * Bind `el` event `type` to `fn`.\n *\n * @param {Element} el, NodeList, HTMLCollection or Array\n * @param {String} type\n * @param {Function} fn\n * @param {Boolean} capture\n * @api public\n */\n\nexports.bind = function (el, type, fn, capture) {\n el = toArray(el)\n for (var i = 0, il = el.length; i < il; i++) {\n el[i][bind](prefix + type, fn, capture || false)\n }\n}\n\n/**\n * Unbind `el` event `type`'s callback `fn`.\n *\n * @param {Element} el, NodeList, HTMLCollection or Array\n * @param {String} type\n * @param {Function} fn\n * @param {Boolean} capture\n * @api public\n */\n\nexports.unbind = function (el, type, fn, capture) {\n el = toArray(el)\n for (var i = 0, il = el.length; i < il; i++) {\n el[i][unbind](prefix + type, fn, capture || false)\n }\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * `wait` milliseconds. If `immediate` is true, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * @param {Function} fn\n * @param {Integer} wait\n * @param {Boolean} immediate\n * @api public\n */\n\nexports.debounce = function (fn, wait, immediate) {\n var timeout\n return wait\n ? function () {\n var context = this,\n args = arguments\n var later = function () {\n timeout = null\n if (!immediate) fn.apply(context, args)\n }\n var callNow = immediate && !timeout\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) fn.apply(context, args)\n }\n : fn\n}\n","/*\n * Source: https://github.com/segmentio/extend\n */\n\nmodule.exports = function extend(object) {\n // Takes an unlimited number of extenders.\n var args = Array.prototype.slice.call(arguments, 1)\n\n // For each extender, copy their properties on our object.\n for (var i = 0, source; (source = args[i]); i++) {\n if (!source) continue\n for (var property in source) {\n object[property] = source[property]\n }\n }\n\n return object\n}\n","module.exports = function (text, pattern, options) {\n // Aproximately where in the text is the pattern expected to be found?\n var Match_Location = options.location || 0\n\n //Determines how close the match must be to the fuzzy location (specified above). An exact letter match which is 'distance' characters away from the fuzzy location would score as a complete mismatch. A distance of '0' requires the match be at the exact location specified, a threshold of '1000' would require a perfect match to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n var Match_Distance = options.distance || 100\n\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match (of both letters and location), a threshold of '1.0' would match anything.\n var Match_Threshold = options.threshold || 0.4\n\n if (pattern === text) return true // Exact match\n if (pattern.length > 32) return false // This algorithm cannot be used\n\n // Set starting location at beginning text and initialise the alphabet.\n var loc = Match_Location,\n s = (function () {\n var q = {},\n i\n\n for (i = 0; i < pattern.length; i++) {\n q[pattern.charAt(i)] = 0\n }\n\n for (i = 0; i < pattern.length; i++) {\n q[pattern.charAt(i)] |= 1 << (pattern.length - i - 1)\n }\n\n return q\n })()\n\n // Compute and return the score for a match with e errors and x location.\n // Accesses loc and pattern through being a closure.\n\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length,\n proximity = Math.abs(loc - x)\n\n if (!Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n return accuracy + proximity / Match_Distance\n }\n\n var score_threshold = Match_Threshold, // Highest score beyond which we give up.\n best_loc = text.indexOf(pattern, loc) // Is there a nearby exact match? (speedup)\n\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold)\n // What about in the other direction? (speedup)\n best_loc = text.lastIndexOf(pattern, loc + pattern.length)\n\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold)\n }\n }\n\n // Initialise the bit arrays.\n var matchmask = 1 << (pattern.length - 1)\n best_loc = -1\n\n var bin_min, bin_mid\n var bin_max = pattern.length + text.length\n var last_rd\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0\n bin_mid = bin_max\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid\n } else {\n bin_max = bin_mid\n }\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min)\n }\n // Use the result from this iteration as the maximum for the next.\n bin_max = bin_mid\n var start = Math.max(1, loc - bin_mid + 1)\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length\n\n var rd = Array(finish + 2)\n rd[finish + 1] = (1 << d) - 1\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)]\n if (d === 0) {\n // First pass: exact match.\n rd[j] = ((rd[j + 1] << 1) | 1) & charMatch\n } else {\n // Subsequent passes: fuzzy match.\n rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) | (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | last_rd[j + 1]\n }\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1)\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score\n best_loc = j - 1\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc)\n } else {\n // Already passed loc, downhill from here on in.\n break\n }\n }\n }\n }\n // No hope for a (better) match at greater error levels.\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break\n }\n last_rd = rd\n }\n\n return best_loc < 0 ? false : true\n}\n","/**\n * A cross-browser implementation of getAttribute.\n * Source found here: http://stackoverflow.com/a/3755343/361337 written by Vivin Paliath\n *\n * Return the value for `attr` at `element`.\n *\n * @param {Element} el\n * @param {String} attr\n * @api public\n */\n\nmodule.exports = function (el, attr) {\n var result = (el.getAttribute && el.getAttribute(attr)) || null\n if (!result) {\n var attrs = el.attributes\n var length = attrs.length\n for (var i = 0; i < length; i++) {\n if (attrs[i] !== undefined) {\n if (attrs[i].nodeName === attr) {\n result = attrs[i].nodeValue\n }\n }\n }\n }\n return result\n}\n","/**\n * A cross-browser implementation of getElementsByClass.\n * Heavily based on Dustin Diaz's function: http://dustindiaz.com/getelementsbyclass.\n *\n * Find all elements with class `className` inside `container`.\n * Use `single = true` to increase performance in older browsers\n * when only one element is needed.\n *\n * @param {String} className\n * @param {Element} container\n * @param {Boolean} single\n * @api public\n */\n\nvar getElementsByClassName = function (container, className, single) {\n if (single) {\n return container.getElementsByClassName(className)[0]\n } else {\n return container.getElementsByClassName(className)\n }\n}\n\nvar querySelector = function (container, className, single) {\n className = '.' + className\n if (single) {\n return container.querySelector(className)\n } else {\n return container.querySelectorAll(className)\n }\n}\n\nvar polyfill = function (container, className, single) {\n var classElements = [],\n tag = '*'\n\n var els = container.getElementsByTagName(tag)\n var elsLen = els.length\n var pattern = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\n for (var i = 0, j = 0; i < elsLen; i++) {\n if (pattern.test(els[i].className)) {\n if (single) {\n return els[i]\n } else {\n classElements[j] = els[i]\n j++\n }\n }\n }\n return classElements\n}\n\nmodule.exports = (function () {\n return function (container, className, single, options) {\n options = options || {}\n if ((options.test && options.getElementsByClassName) || (!options.test && document.getElementsByClassName)) {\n return getElementsByClassName(container, className, single)\n } else if ((options.test && options.querySelector) || (!options.test && document.querySelector)) {\n return querySelector(container, className, single)\n } else {\n return polyfill(container, className, single)\n }\n }\n})()\n","var indexOf = [].indexOf\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0, il = arr.length; i < il; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1\n}\n","/**\n * Source: https://github.com/timoxley/to-array\n *\n * Convert an array-like object into an `Array`.\n * If `collection` is already an `Array`, then will return a clone of `collection`.\n *\n * @param {Array | Mixed} collection An `Array` or array-like object to convert e.g. `arguments` or `NodeList`\n * @return {Array} Naive conversion of `collection` to a new `Array`.\n * @api public\n */\n\nmodule.exports = function toArray(collection) {\n if (typeof collection === 'undefined') return []\n if (collection === null) return [null]\n if (collection === window) return [window]\n if (typeof collection === 'string') return [collection]\n if (isArray(collection)) return collection\n if (typeof collection.length != 'number') return [collection]\n if (typeof collection === 'function' && collection instanceof Function) return [collection]\n\n var arr = [];\n for (var i = 0, il = collection.length; i < il; i++) {\n if (Object.prototype.hasOwnProperty.call(collection, i) || i in collection) {\n arr.push(collection[i])\n }\n }\n if (!arr.length) return []\n return arr\n}\n\nfunction isArray(arr) {\n return Object.prototype.toString.call(arr) === '[object Array]'\n}\n","module.exports = function (s) {\n s = s === undefined ? '' : s\n s = s === null ? '' : s\n s = s.toString()\n return s\n}\n","'use strict';\n\nvar alphabet;\nvar alphabetIndexMap;\nvar alphabetIndexMapLength = 0;\n\nfunction isNumberCode(code) {\n return code >= 48 && code <= 57;\n}\n\nfunction naturalCompare(a, b) {\n var lengthA = (a += '').length;\n var lengthB = (b += '').length;\n var aIndex = 0;\n var bIndex = 0;\n\n while (aIndex < lengthA && bIndex < lengthB) {\n var charCodeA = a.charCodeAt(aIndex);\n var charCodeB = b.charCodeAt(bIndex);\n\n if (isNumberCode(charCodeA)) {\n if (!isNumberCode(charCodeB)) {\n return charCodeA - charCodeB;\n }\n\n var numStartA = aIndex;\n var numStartB = bIndex;\n\n while (charCodeA === 48 && ++numStartA < lengthA) {\n charCodeA = a.charCodeAt(numStartA);\n }\n while (charCodeB === 48 && ++numStartB < lengthB) {\n charCodeB = b.charCodeAt(numStartB);\n }\n\n var numEndA = numStartA;\n var numEndB = numStartB;\n\n while (numEndA < lengthA && isNumberCode(a.charCodeAt(numEndA))) {\n ++numEndA;\n }\n while (numEndB < lengthB && isNumberCode(b.charCodeAt(numEndB))) {\n ++numEndB;\n }\n\n var difference = numEndA - numStartA - numEndB + numStartB; // numA length - numB length\n if (difference) {\n return difference;\n }\n\n while (numStartA < numEndA) {\n difference = a.charCodeAt(numStartA++) - b.charCodeAt(numStartB++);\n if (difference) {\n return difference;\n }\n }\n\n aIndex = numEndA;\n bIndex = numEndB;\n continue;\n }\n\n if (charCodeA !== charCodeB) {\n if (\n charCodeA < alphabetIndexMapLength &&\n charCodeB < alphabetIndexMapLength &&\n alphabetIndexMap[charCodeA] !== -1 &&\n alphabetIndexMap[charCodeB] !== -1\n ) {\n return alphabetIndexMap[charCodeA] - alphabetIndexMap[charCodeB];\n }\n\n return charCodeA - charCodeB;\n }\n\n ++aIndex;\n ++bIndex;\n }\n\n if (aIndex >= lengthA && bIndex < lengthB && lengthA >= lengthB) {\n return -1;\n }\n\n if (bIndex >= lengthB && aIndex < lengthA && lengthB >= lengthA) {\n return 1;\n }\n\n return lengthA - lengthB;\n}\n\nnaturalCompare.caseInsensitive = naturalCompare.i = function(a, b) {\n return naturalCompare(('' + a).toLowerCase(), ('' + b).toLowerCase());\n};\n\nObject.defineProperties(naturalCompare, {\n alphabet: {\n get: function() {\n return alphabet;\n },\n\n set: function(value) {\n alphabet = value;\n alphabetIndexMap = [];\n\n var i = 0;\n\n if (alphabet) {\n for (; i < alphabet.length; i++) {\n alphabetIndexMap[alphabet.charCodeAt(i)] = i;\n }\n }\n\n alphabetIndexMapLength = alphabetIndexMap.length;\n\n for (i = 0; i < alphabetIndexMapLength; i++) {\n if (alphabetIndexMap[i] === undefined) {\n alphabetIndexMap[i] = -1;\n }\n }\n },\n },\n});\n\nmodule.exports = naturalCompare;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./src/index.js\");\n"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;A;;;;;;;;;;;AChBA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAMA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AALA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAjCA;AAoCA;AAIA;AACA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AASA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAYA;AAEA;AACA;AAAA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AA1EA;AA6EA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AADA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAhBA;AACA;AAkBA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;ACvQA;AACA;AACA;AAEA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AC5DA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AACA;AACA;AAAA;AACA;AACA;AAGA;AACA;AACA;AACA;AAFA;AACA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAFA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5BA;AA+BA;AACA;AACA;AACA;AACA;AACA;AACA;AALA;AAQA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AC9CA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AApCA;AAsCA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AA1CA;AACA;AA4CA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3CA;AACA;AA6CA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAAA;AAAA;AAAA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;A;;;;;;;;;;;ACxGA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;ACnMA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;A;;;;;;;;;;;;;;AClKA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;A;;;;;;;;;;;ACpEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AClBA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AAAA;AAEA;AACA;AAAA;AAAA;AAEA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;A;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;A;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;;A","sourceRoot":""} \ No newline at end of file diff --git a/gin_ops/static/dist/libs/list.js/dist/list.min.js b/gin_ops/static/dist/libs/list.js/dist/list.min.js new file mode 100644 index 0000000..8131881 --- /dev/null +++ b/gin_ops/static/dist/libs/list.js/dist/list.min.js @@ -0,0 +1,2 @@ +var List;List=function(){var t={"./src/add-async.js":function(t){t.exports=function(t){return function e(r,n,s){var i=r.splice(0,50);s=(s=s||[]).concat(t.add(i)),r.length>0?setTimeout((function(){e(r,n,s)}),1):(t.update(),n(s))}}},"./src/filter.js":function(t){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,s=r.length;nv.page,a=new g(t[s],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}m(t.slice(0),e)}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,s=0,i=v.items.length;s-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,s,i,a){return this.dottedLeft(t,e,r,n,s,i)||this.dottedRight(t,e,r,n,s,i,a)},dottedLeft:function(t,e,r,n,s,i){return e==r+1&&!this.innerWindow(e,s,i)&&!this.right(e,n)},dottedRight:function(t,e,r,n,s,i,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,s,i)&&!this.right(e,n))}};return function(e){var n=new i(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:e.item||"
  • ",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});s.bind(n.listContainer,"click",(function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),s=t.utils.getAttribute(r,"data-i");s&&t.show((s-1)*n+1,n)})),t.on("updated",(function(){r(n,e)})),r(n,e)}}},"./src/parse.js":function(t,e,r){t.exports=function(t){var e=r("./src/item.js")(t),n=function(r,n){for(var s=0,i=r.length;s0?setTimeout((function(){e(r,s)}),1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=function(t){for(var e=t.childNodes,r=[],n=0,s=e.length;n]/g.exec(t)){var e=document.createElement("tbody");return e.innerHTML=t,e.firstElementChild}if(-1!==t.indexOf("<")){var r=document.createElement("div");return r.innerHTML=t,r.firstElementChild}}},a=function(e,r,n){var s=void 0,i=function(e){for(var r=0,n=t.valueNames.length;r=1;)t.list.removeChild(t.list.firstChild)},function(){var r;if("function"!=typeof t.item){if(!(r="string"==typeof t.item?-1===t.item.indexOf("<")?document.getElementById(t.item):i(t.item):s()))throw new Error("The list needs to have at least one item on init otherwise you'll have to add a template.");r=n(r,t.valueNames),e=function(){return r.cloneNode(!0)}}else e=function(e){var r=t.item(e);return i(r)}}()};t.exports=function(t){return new e(t)}},"./src/utils/classes.js":function(t,e,r){var n=r("./src/utils/index-of.js"),s=/\s+/;Object.prototype.toString;function i(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}t.exports=function(t){return new i(t)},i.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~n(e,t)||e.push(t),this.el.className=e.join(" "),this},i.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=n(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},i.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},i.prototype.array=function(){var t=(this.el.getAttribute("class")||"").replace(/^\s+|\s+$/g,"").split(s);return""===t[0]&&t.shift(),t},i.prototype.has=i.prototype.contains=function(t){return this.list?this.list.contains(t):!!~n(this.array(),t)}},"./src/utils/events.js":function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",s=window.removeEventListener?"removeEventListener":"detachEvent",i="addEventListener"!==n?"on":"",a=r("./src/utils/to-array.js");e.bind=function(t,e,r,s){for(var o=0,l=(t=a(t)).length;o32)return!1;var a=n,o=function(){var t,r={};for(t=0;t=p;b--){var j=o[t.charAt(b-1)];if(C[b]=0===m?(C[b+1]<<1|1)&j:(C[b+1]<<1|1)&j|(v[b+1]|v[b])<<1|1|v[b+1],C[b]&d){var x=l(m,b-1);if(x<=u){if(u=x,!((c=b-1)>a))break;p=Math.max(1,2*a-c)}}}if(l(m+1,a)>u)break;v=C}return!(c<0)}},"./src/utils/get-attribute.js":function(t){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,s=n.length,i=0;i=48&&t<=57}function i(t,e){for(var i=(t+="").length,a=(e+="").length,o=0,l=0;o=i&&l=a?-1:l>=a&&o=i?1:i-a}i.caseInsensitive=i.i=function(t,e){return i((""+t).toLowerCase(),(""+e).toLowerCase())},Object.defineProperties(i,{alphabet:{get:function(){return e},set:function(t){r=[];var s=0;if(e=t)for(;s0&&(r.value+=".*?");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,i){if(void 0===i&&(i="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var n="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=l.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=""+i+this.options.delimiter+n}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector("."+l.containerTooltip);i.style.visibility="visible",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+"px",i.style.left=a+"px",this.emit("tooltip",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+l.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector("."+l.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+" "+(this.options.tooltipText[p]?this.options.tooltipText[p]:"["+p+"]");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&""+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement("option"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement("div");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,"long"),M.appendChild(L)}var E=document.createElement("div");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),c=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,"day"),c=this.datePicked[0].clone().add(h,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+i}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?"53 / 1":i,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){"true"!==i.options[t]&&"false"!==i.options[t]||(i.options[t]="true"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&"auto"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,"right"!==n[0]&&"right"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){"use strict";var n,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if("function"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if("function"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""}\n',""]),e.locals={showWeekNumbers:"show-week-numbers",litepicker:"litepicker",containerMain:"container__main",containerMonths:"container__months",columns2:"columns-2",columns3:"columns-3",columns4:"columns-4",splitView:"split-view",monthItemHeader:"month-item-header",buttonPreviousMonth:"button-previous-month",buttonNextMonth:"button-next-month",monthItem:"month-item",monthItemName:"month-item-name",monthItemYear:"month-item-year",resetButton:"reset-button",monthItemWeekdaysRow:"month-item-weekdays-row",noPreviousMonth:"no-previous-month",noNextMonth:"no-next-month",containerDays:"container__days",dayItem:"day-item",isToday:"is-today",isLocked:"is-locked",isInRange:"is-in-range",isStartDate:"is-start-date",isFlipped:"is-flipped",isEndDate:"is-end-date",isHighlighted:"is-highlighted",weekNumber:"week-number",containerFooter:"container__footer",previewDateRange:"preview-date-range",buttonCancel:"button-cancel",buttonApply:"button-apply",containerTooltip:"container__tooltip"},t.exports=e},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[i].concat(s).concat([o]).join("\n")}var r,a,l;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit("error:range",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;rMath.abs(o),l=e.options.numberOfMonths,c=null,s=!1,u="",d=Array.from(e.ui.querySelectorAll(".month-item"));if(a){var p=e.DateTime(e.ui.querySelector(".day-item").dataset.time),f=Number("".concat(1-Math.abs(i)/100)),m=0;if(i>0){m=-Math.abs(i),c=p.clone().add(l,"month");var h=e.options.maxDate;s=!h||c.isSameOrBefore(e.DateTime(h),"month"),u="next"}else{m=Math.abs(i),c=p.clone().subtract(l,"month");var b=e.options.minDate;s=!b||c.isSameOrAfter(e.DateTime(b),"month"),u="prev"}s&&d.map((function(e){e.style.opacity=f,e.style.transform="translateX(".concat(m,"px)")}))}Math.abs(i)+Math.abs(o)>100&&a&&c&&s&&(e.touchTargetMonth=u,e.gotoDate(c))}},u=function(t){e.touchTargetMonth||Array.from(e.ui.querySelectorAll(".month-item")).map((function(e){e.style.transform="translateX(0px)",e.style.opacity=1}));e.xTouchDown=null,e.yTouchDown=null};e.backdrop=document.createElement("div"),e.backdrop.className="litepicker-backdrop",e.backdrop.addEventListener("click",e.hide()),t.element&&t.element.parentNode&&t.element.parentNode.appendChild(e.backdrop),window.addEventListener("orientationchange",(function(n){window.addEventListener("resize",(function n(){if(o()&&e.isShowning()){var r=a();switch(r){case"landscape":t.numberOfMonths=2,t.numberOfColumns=2;break;default:t.numberOfMonths=1,t.numberOfColumns=1}e.ui.classList.toggle("mobilefriendly-portrait","portrait"===r),e.ui.classList.toggle("mobilefriendly-landscape","landscape"===r),e.render()}window.removeEventListener("resize",n)}))})),t.inlineMode&&o()&&(window.dispatchEvent(new Event("orientationchange")),window.dispatchEvent(new Event("resize"))),e.on("before:show",(function(t){if(e.triggerElement=t,!e.options.inlineMode&&o()){e.emit("mobilefriendly.before:show",t),e.ui.style.position="fixed",e.ui.style.display="block",l(),e.scrollToDate(t),e.render();var n=a();e.ui.classList.add("mobilefriendly"),e.ui.classList.toggle("mobilefriendly-portrait","portrait"===n),e.ui.classList.toggle("mobilefriendly-landscape","landscape"===n),e.ui.style.top="50%",e.ui.style.left="50%",e.ui.style.right=null,e.ui.style.bottom=null,e.ui.style.zIndex=e.options.zIndex,e.backdrop.style.display="block",e.backdrop.style.zIndex=e.options.zIndex-1,document.body.classList.add("litepicker-open"),(t||e.options.element).blur(),e.emit("mobilefriendly.show",t)}else o()&&(l(),e.render())})),e.on("render",(function(t){e.touchTargetMonth&&Array.from(e.ui.querySelectorAll(".month-item")).map((function(t){return t.classList.add("touch-target-".concat(e.touchTargetMonth))}));e.touchTargetMonth=null})),e.on("hide",(function(){document.body.classList.remove("litepicker-open"),e.backdrop.style.display="none",e.ui.classList.remove("mobilefriendly","mobilefriendly-portrait","mobilefriendly-landscape")})),e.on("destroy",(function(){e.backdrop&&e.backdrop.parentNode&&e.backdrop.parentNode.removeChild(e.backdrop)})),e.ui.addEventListener("touchstart",c,!!n&&{passive:!0}),e.ui.addEventListener("touchmove",s,!!n&&{passive:!0}),e.ui.addEventListener("touchend",u,!!n&&{passive:!0})}})},function(e,t,n){var r=n(7);"string"==typeof r&&(r=[[e.i,r,""]]);var i={insert:function(e){var t=document.querySelector("head"),n=window._lastElementInsertedByStyleLoader;window.disableLitepickerStyles||(n?n.nextSibling?t.insertBefore(e,n.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),window._lastElementInsertedByStyleLoader=e)},singleton:!1};n(1)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(t=n(0)(!1)).push([e.i,':root {\n --litepicker-mobilefriendly-backdrop-color-bg: #000;\n}\n\n.litepicker-backdrop {\n display: none;\n background-color: var(--litepicker-mobilefriendly-backdrop-color-bg);\n opacity: 0.3;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.litepicker-open {\n overflow: hidden;\n}\n\n.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] {\n transform: translate(-50%, -50%);\n font-size: 1.1rem;\n --litepicker-container-months-box-shadow-color: #616161;\n}\n.litepicker.mobilefriendly-portrait {\n --litepicker-day-width: 13.5vw;\n --litepicker-month-width: calc(var(--litepicker-day-width) * 7);\n}\n.litepicker.mobilefriendly-landscape {\n --litepicker-day-width: 5.5vw;\n --litepicker-month-width: calc(var(--litepicker-day-width) * 7);\n}\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months {\n overflow: hidden;\n}\n\n.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] .container__months .month-item-header {\n height: var(--litepicker-day-width);\n}\n\n.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] .container__days > div {\n height: var(--litepicker-day-width);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item {\n transform-origin: center;\n}\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item.touch-target-next {\n animation-name: lp-bounce-target-next;\n animation-duration: .5s;\n animation-timing-function: ease;\n}\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item.touch-target-prev {\n animation-name: lp-bounce-target-prev;\n animation-duration: .5s;\n animation-timing-function: ease;\n}\n\n@keyframes lp-bounce-target-next {\n from {\n transform: translateX(100px) scale(0.5);\n }\n to {\n transform: translateX(0px) scale(1);\n }\n}\n\n@keyframes lp-bounce-target-prev {\n from {\n transform: translateX(-100px) scale(0.5);\n }\n to {\n transform: translateX(0px) scale(1);\n }\n}',""]),e.exports=t}]);/*! + * + * plugins/ranges.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: b9a648207aabe31b2912 + * + */!function(e){var n={};function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(r,a,function(n){return e[n]}.bind(null,a));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=8)}([function(e,n,t){"use strict";e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t=function(e,n){var t=e[1]||"",r=e[3];if(!r)return t;if(n&&"function"==typeof btoa){var a=(i=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),o=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[t].concat(o).concat([a]).join("\n")}var i,s,c;return[t].join("\n")}(n,e);return n[2]?"@media ".concat(n[2]," {").concat(t,"}"):t})).join("")},n.i=function(e,t,r){"string"==typeof e&&(e=[[null,e,""]]);var a={};if(r)for(var o=0;o=0?1:-1,i.dataset.start=o[0].getTime(),i.dataset.end=o[1].getTime(),i.addEventListener("click",(function(n){var r=n.target;if(r){var a=e.DateTime(Number(r.dataset.start)),o=e.DateTime(Number(r.dataset.end));t.autoApply?(e.setDateRange(a,o,t.force),e.emit("ranges.selected",a,o),e.hide()):(e.datePicked=[a,o],e.emit("ranges.preselect",a,o)),!e.options.inlineMode&&t.autoApply||e.gotoDate(a)}})),r.appendChild(i)})),n.querySelector(".container__main").prepend(r)}))}})},function(e,n,t){var r=t(10);"string"==typeof r&&(r=[[e.i,r,""]]);var a={insert:function(e){var n=document.querySelector("head"),t=window._lastElementInsertedByStyleLoader;window.disableLitepickerStyles||(t?t.nextSibling?n.insertBefore(e,t.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),window._lastElementInsertedByStyleLoader=e)},singleton:!1};t(1)(r,a);r.locals&&(e.exports=r.locals)},function(e,n,t){(n=t(0)(!1)).push([e.i,'.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n background: var(--litepicker-container-months-color-bg);\n box-shadow: -2px 0px 5px var(--litepicker-footer-box-shadow-color);\n border-radius: 3px;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="left"] > .container__main {\n /* */\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main{\n flex-direction: row-reverse;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main > .container__predefined-ranges {\n box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color);\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="top"] > .container__main {\n flex-direction: column;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="top"] > .container__main > .container__predefined-ranges {\n flex-direction: row;\n box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color);\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="bottom"] > .container__main {\n flex-direction: column-reverse;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="bottom"] > .container__main > .container__predefined-ranges {\n flex-direction: row;\n box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color);\n}\n.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges button {\n padding: 5px;\n margin: 2px 0;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="left"] > .container__main > .container__predefined-ranges button,\n.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main > .container__predefined-ranges button{\n width: 100%;\n text-align: left;\n}\n.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges button:hover {\n cursor: default;\n opacity: .6;\n}',""]),e.exports=n}]);/*! + * + * plugins/multiselect.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: b9a648207aabe31b2912 + * + */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=11)}([function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(l=r,a=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(c," */")),o=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(o).concat([i]).join("\n")}var l,a,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r=e.pluralSelector(t),i=e.options.tooltipText[r]?e.options.tooltipText[r]:"[".concat(r,"]"),o="".concat(t," ").concat(i);n.innerText=o}};e.on("before:show",(function(){e.preMultipleDates=r(e.multipleDates)})),e.on("show",(function(){t()})),e.on("before:click",(function(n){if(n.classList.contains("day-item")){if(e.preventClick=!0,n.classList.contains("is-locked"))return void n.blur();var r=Number(n.dataset.time);n.classList.contains("is-selected")?(e.preMultipleDates=e.preMultipleDates.filter((function(e){return e!==r})),e.emit("multiselect.deselect",e.DateTime(r))):(e.preMultipleDates[e.preMultipleDates.length]=r,e.emit("multiselect.select",e.DateTime(r))),e.options.autoApply&&e.emit("button:apply"),e.render(),t()}})),e.on("render:day",(function(t){var n=e.preMultipleDates.filter((function(e){return e===Number(t.dataset.time)})).length,r=Number(e.options.multiselect.max);n?t.classList.add("is-selected"):r&&e.preMultipleDates.length>=r&&t.classList.add("is-locked")})),e.on("button:cancel",(function(){e.preMultipleDates.length=0})),e.on("button:apply",(function(){e.multipleDates=r(e.preMultipleDates).sort((function(e,t){return e-t}))})),e.on("clear:selection",(function(){e.clearMultipleDates(),e.render()})),e.clearMultipleDates=function(){e.preMultipleDates.length=0,e.multipleDates.length=0},e.getMultipleDates=function(){return e.multipleDates.map((function(t){return e.DateTime(t)}))},e.multipleDatesToString=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"YYYY-MM-DD",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:",";return e.multipleDates.map((function(n){return e.DateTime(n).format(t)})).join(n)}}})},function(e,t,n){var r=n(13);"string"==typeof r&&(r=[[e.i,r,""]]);var i={insert:function(e){var t=document.querySelector("head"),n=window._lastElementInsertedByStyleLoader;window.disableLitepickerStyles||(n?n.nextSibling?t.insertBefore(e,n.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),window._lastElementInsertedByStyleLoader=e)},singleton:!1};n(1)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(t=n(0)(!1)).push([e.i,':root {\n --litepicker-multiselect-is-selected-color-bg: #2196f3;\n --litepicker-multiselect-is-selected-color: #fff;\n --litepicker-multiselect-hover-color-bg: #2196f3;\n --litepicker-multiselect-hover-color: #fff;\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item {\n position: relative;\n z-index: 1;\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item:not(.is-locked):after {\n content: \'\';\n position: absolute;\n width: 27px;\n height: 27px;\n top: 50%;\n left: 50%;\n z-index: -1;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item:not(.is-locked):hover {\n box-shadow: none;\n color: var(--litepicker-day-color);\n font-weight: bold;\n}\n\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected,\n.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected:hover {\n color: var(--litepicker-multiselect-is-selected-color);\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected:after {\n color: var(--litepicker-multiselect-is-selected-color);\n background-color: var(--litepicker-multiselect-is-selected-color-bg);\n}\n',""]),e.exports=t}]); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/css/litepicker.css b/gin_ops/static/dist/libs/litepicker/dist/css/litepicker.css new file mode 100644 index 0000000..3c69e17 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/css/litepicker.css @@ -0,0 +1,13 @@ +/*! + * + * ../css/litepicker.css + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: 2f11f1f0300ea13b17b5 + * + */ +:root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""} + diff --git a/gin_ops/static/dist/libs/litepicker/dist/css/plugins/keyboardnav.js.css b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/keyboardnav.js.css new file mode 100644 index 0000000..c16ac07 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/keyboardnav.js.css @@ -0,0 +1,12 @@ +/*! + * + * ../css/plugins/keyboardnav.js.css + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: fc3887e0bb19d54c36db + * + */ + diff --git a/gin_ops/static/dist/libs/litepicker/dist/css/plugins/mobilefriendly.js.css b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/mobilefriendly.js.css new file mode 100644 index 0000000..4abcdd1 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/mobilefriendly.js.css @@ -0,0 +1,133 @@ +/*! + * + * ../css/plugins/mobilefriendly.js.css + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: fc3887e0bb19d54c36db + * + */ +:root { + --litepicker-mobilefriendly-backdrop-color-bg: #000; +} + +.litepicker-backdrop { + display: none; + background-color: var(--litepicker-mobilefriendly-backdrop-color-bg); + opacity: 0.3; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.litepicker-open { + overflow: hidden; +} + +.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + font-size: 1.1rem; + --litepicker-container-months-box-shadow-color: #616161; +} +.litepicker.mobilefriendly-portrait { + --litepicker-day-width: 13.5vw; + --litepicker-month-width: calc(var(--litepicker-day-width) * 7); +} +.litepicker.mobilefriendly-landscape { + --litepicker-day-width: 5.5vw; + --litepicker-month-width: calc(var(--litepicker-day-width) * 7); +} + +.litepicker[data-plugins*="mobilefriendly"] .container__months { + overflow: hidden; +} + +.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] .container__months .month-item-header { + height: var(--litepicker-day-width); +} + +.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] .container__days > div { + height: var(--litepicker-day-width); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + + +.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item { + -webkit-transform-origin: center; + transform-origin: center; +} + +.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item.touch-target-next { + -webkit-animation-name: lp-bounce-target-next; + animation-name: lp-bounce-target-next; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-timing-function: ease; + animation-timing-function: ease; +} + +.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item.touch-target-prev { + -webkit-animation-name: lp-bounce-target-prev; + animation-name: lp-bounce-target-prev; + -webkit-animation-duration: .5s; + animation-duration: .5s; + -webkit-animation-timing-function: ease; + animation-timing-function: ease; +} + +@-webkit-keyframes lp-bounce-target-next { + from { + -webkit-transform: translateX(100px) scale(0.5); + transform: translateX(100px) scale(0.5); + } + to { + -webkit-transform: translateX(0px) scale(1); + transform: translateX(0px) scale(1); + } +} + +@keyframes lp-bounce-target-next { + from { + -webkit-transform: translateX(100px) scale(0.5); + transform: translateX(100px) scale(0.5); + } + to { + -webkit-transform: translateX(0px) scale(1); + transform: translateX(0px) scale(1); + } +} + +@-webkit-keyframes lp-bounce-target-prev { + from { + -webkit-transform: translateX(-100px) scale(0.5); + transform: translateX(-100px) scale(0.5); + } + to { + -webkit-transform: translateX(0px) scale(1); + transform: translateX(0px) scale(1); + } +} + +@keyframes lp-bounce-target-prev { + from { + -webkit-transform: translateX(-100px) scale(0.5); + transform: translateX(-100px) scale(0.5); + } + to { + -webkit-transform: translateX(0px) scale(1); + transform: translateX(0px) scale(1); + } +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/css/plugins/multiselect.js.css b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/multiselect.js.css new file mode 100644 index 0000000..3c9933d --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/multiselect.js.css @@ -0,0 +1,54 @@ +/*! + * + * ../css/plugins/multiselect.js.css + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: fc3887e0bb19d54c36db + * + */ +:root { + --litepicker-multiselect-is-selected-color-bg: #2196f3; + --litepicker-multiselect-is-selected-color: #fff; + --litepicker-multiselect-hover-color-bg: #2196f3; + --litepicker-multiselect-hover-color: #fff; +} + +.litepicker[data-plugins*="multiselect"] .container__days .day-item { + position: relative; + z-index: 1; +} + +.litepicker[data-plugins*="multiselect"] .container__days .day-item:not(.is-locked):after { + content: ''; + position: absolute; + width: 27px; + height: 27px; + top: 50%; + left: 50%; + z-index: -1; + border-radius: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.litepicker[data-plugins*="multiselect"] .container__days .day-item:not(.is-locked):hover { + -webkit-box-shadow: none; + box-shadow: none; + color: var(--litepicker-day-color); + font-weight: bold; +} + + +.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected, +.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected:hover { + color: var(--litepicker-multiselect-is-selected-color); +} + +.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected:after { + color: var(--litepicker-multiselect-is-selected-color); + background-color: var(--litepicker-multiselect-is-selected-color-bg); +} + diff --git a/gin_ops/static/dist/libs/litepicker/dist/css/plugins/ranges.js.css b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/ranges.js.css new file mode 100644 index 0000000..616e69c --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/css/plugins/ranges.js.css @@ -0,0 +1,81 @@ +/*! + * + * ../css/plugins/ranges.js.css + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: fc3887e0bb19d54c36db + * + */ +.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + background: var(--litepicker-container-months-color-bg); + -webkit-box-shadow: -2px 0px 5px var(--litepicker-footer-box-shadow-color); + box-shadow: -2px 0px 5px var(--litepicker-footer-box-shadow-color); + border-radius: 3px; +} +.litepicker[data-plugins*="ranges"][data-ranges-position="left"] > .container__main { + /* */ +} +.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main{ + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; +} +.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main > .container__predefined-ranges { + -webkit-box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color); + box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color); +} +.litepicker[data-plugins*="ranges"][data-ranges-position="top"] > .container__main { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.litepicker[data-plugins*="ranges"][data-ranges-position="top"] > .container__main > .container__predefined-ranges { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color); + box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color); +} +.litepicker[data-plugins*="ranges"][data-ranges-position="bottom"] > .container__main { + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; +} +.litepicker[data-plugins*="ranges"][data-ranges-position="bottom"] > .container__main > .container__predefined-ranges { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color); + box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color); +} +.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges button { + padding: 5px; + margin: 2px 0; +} +.litepicker[data-plugins*="ranges"][data-ranges-position="left"] > .container__main > .container__predefined-ranges button, +.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main > .container__predefined-ranges button{ + width: 100%; + text-align: left; +} +.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges button:hover { + cursor: default; + opacity: .6; +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/js/litepicker.js b/gin_ops/static/dist/libs/litepicker/dist/js/litepicker.js new file mode 100644 index 0000000..f5906f8 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/js/litepicker.js @@ -0,0 +1,12 @@ +/*! + * + * litepicker.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: a5019ade4d1fcf3e6277 + * + */ +var Litepicker=function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)i.d(n,o,function(e){return t[e]}.bind(null,o));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=4)}([function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(e,i,n){void 0===e&&(e=null),void 0===i&&(i=null),void 0===n&&(n="en-US"),this.dateInstance="object"==typeof i&&null!==i?i.parse(e instanceof t?e.clone().toJSDate():e):"string"==typeof i?t.parseDateTime(e,i,n):e?t.parseDateTime(e):t.parseDateTime(new Date),this.lang=n}return t.parseDateTime=function(e,i,n){if(void 0===i&&(i="YYYY-MM-DD"),void 0===n&&(n="en-US"),!e)return new Date(NaN);if(e instanceof Date)return new Date(e);if(e instanceof t)return e.clone().toJSDate();if(/^-?\d{10,}$/.test(e))return t.getDateZeroTime(new Date(Number(e)));if("string"==typeof e){for(var o=[],s=null;null!=(s=t.regex.exec(i));)"\\"!==s[1]&&o.push(s);if(o.length){var r={year:null,month:null,shortMonth:null,longMonth:null,day:null,value:""};o[0].index>0&&(r.value+=".*?");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,i){if(void 0===i&&(i="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var n="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=l.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=""+i+this.options.delimiter+n}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector("."+l.containerTooltip);i.style.visibility="visible",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+"px",i.style.left=a+"px",this.emit("tooltip",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+l.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector("."+l.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+" "+(this.options.tooltipText[p]?this.options.tooltipText[p]:"["+p+"]");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&""+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement("option"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement("div");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,"long"),M.appendChild(L)}var E=document.createElement("div");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),c=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,"day"),c=this.datePicked[0].clone().add(h,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+i}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?"53 / 1":i,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){"true"!==i.options[t]&&"false"!==i.options[t]||(i.options[t]="true"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&"auto"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,"right"!==n[0]&&"right"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){"use strict";var n,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if("function"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if("function"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""}\n',""]),e.locals={showWeekNumbers:"show-week-numbers",litepicker:"litepicker",containerMain:"container__main",containerMonths:"container__months",columns2:"columns-2",columns3:"columns-3",columns4:"columns-4",splitView:"split-view",monthItemHeader:"month-item-header",buttonPreviousMonth:"button-previous-month",buttonNextMonth:"button-next-month",monthItem:"month-item",monthItemName:"month-item-name",monthItemYear:"month-item-year",resetButton:"reset-button",monthItemWeekdaysRow:"month-item-weekdays-row",noPreviousMonth:"no-previous-month",noNextMonth:"no-next-month",containerDays:"container__days",dayItem:"day-item",isToday:"is-today",isLocked:"is-locked",isInRange:"is-in-range",isStartDate:"is-start-date",isFlipped:"is-flipped",isEndDate:"is-end-date",isHighlighted:"is-highlighted",weekNumber:"week-number",containerFooter:"container__footer",previewDateRange:"preview-date-range",buttonCancel:"button-cancel",buttonApply:"button-apply",containerTooltip:"container__tooltip"},t.exports=e},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[i].concat(s).concat([o]).join("\n")}var r,a,l;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit("error:range",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,i){if(void 0===i&&(i="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var n="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=l.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=""+i+this.options.delimiter+n}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector("."+l.containerTooltip);i.style.visibility="visible",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+"px",i.style.left=a+"px",this.emit("tooltip",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+l.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector("."+l.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+" "+(this.options.tooltipText[p]?this.options.tooltipText[p]:"["+p+"]");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&""+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement("option"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement("div");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,"long"),M.appendChild(L)}var E=document.createElement("div");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),c=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,"day"),c=this.datePicked[0].clone().add(h,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+i}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?"53 / 1":i,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){"true"!==i.options[t]&&"false"!==i.options[t]||(i.options[t]="true"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&"auto"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,"right"!==n[0]&&"right"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){"use strict";var n,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if("function"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if("function"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""}\n',""]),e.locals={showWeekNumbers:"show-week-numbers",litepicker:"litepicker",containerMain:"container__main",containerMonths:"container__months",columns2:"columns-2",columns3:"columns-3",columns4:"columns-4",splitView:"split-view",monthItemHeader:"month-item-header",buttonPreviousMonth:"button-previous-month",buttonNextMonth:"button-next-month",monthItem:"month-item",monthItemName:"month-item-name",monthItemYear:"month-item-year",resetButton:"reset-button",monthItemWeekdaysRow:"month-item-weekdays-row",noPreviousMonth:"no-previous-month",noNextMonth:"no-next-month",containerDays:"container__days",dayItem:"day-item",isToday:"is-today",isLocked:"is-locked",isInRange:"is-in-range",isStartDate:"is-start-date",isFlipped:"is-flipped",isEndDate:"is-end-date",isHighlighted:"is-highlighted",weekNumber:"week-number",containerFooter:"container__footer",previewDateRange:"preview-date-range",buttonCancel:"button-cancel",buttonApply:"button-apply",containerTooltip:"container__tooltip"},t.exports=e},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[i].concat(s).concat([o]).join("\n")}var r,a,l;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit("error:range",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,i){if(void 0===i&&(i="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var n="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=l.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=""+i+this.options.delimiter+n}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector("."+l.containerTooltip);i.style.visibility="visible",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+"px",i.style.left=a+"px",this.emit("tooltip",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+l.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector("."+l.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+" "+(this.options.tooltipText[p]?this.options.tooltipText[p]:"["+p+"]");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&""+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement("option"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement("div");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,"long"),M.appendChild(L)}var E=document.createElement("div");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),c=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,"day"),c=this.datePicked[0].clone().add(h,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+i}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?"53 / 1":i,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){"true"!==i.options[t]&&"false"!==i.options[t]||(i.options[t]="true"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&"auto"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,"right"!==n[0]&&"right"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){"use strict";var n,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if("function"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if("function"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""}\n',""]),e.locals={showWeekNumbers:"show-week-numbers",litepicker:"litepicker",containerMain:"container__main",containerMonths:"container__months",columns2:"columns-2",columns3:"columns-3",columns4:"columns-4",splitView:"split-view",monthItemHeader:"month-item-header",buttonPreviousMonth:"button-previous-month",buttonNextMonth:"button-next-month",monthItem:"month-item",monthItemName:"month-item-name",monthItemYear:"month-item-year",resetButton:"reset-button",monthItemWeekdaysRow:"month-item-weekdays-row",noPreviousMonth:"no-previous-month",noNextMonth:"no-next-month",containerDays:"container__days",dayItem:"day-item",isToday:"is-today",isLocked:"is-locked",isInRange:"is-in-range",isStartDate:"is-start-date",isFlipped:"is-flipped",isEndDate:"is-end-date",isHighlighted:"is-highlighted",weekNumber:"week-number",containerFooter:"container__footer",previewDateRange:"preview-date-range",buttonCancel:"button-cancel",buttonApply:"button-apply",containerTooltip:"container__tooltip"},t.exports=e},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[i].concat(s).concat([o]).join("\n")}var r,a,l;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit("error:range",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,i){if(void 0===i&&(i="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var n="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=l.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=""+i+this.options.delimiter+n}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector("."+l.containerTooltip);i.style.visibility="visible",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+"px",i.style.left=a+"px",this.emit("tooltip",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+l.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector("."+l.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+" "+(this.options.tooltipText[p]?this.options.tooltipText[p]:"["+p+"]");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&""+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement("option"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement("div");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,"long"),M.appendChild(L)}var E=document.createElement("div");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),c=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,"day"),c=this.datePicked[0].clone().add(h,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+i}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?"53 / 1":i,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){"true"!==i.options[t]&&"false"!==i.options[t]||(i.options[t]="true"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&"auto"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,"right"!==n[0]&&"right"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){"use strict";var n,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if("function"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if("function"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""}\n',""]),e.locals={showWeekNumbers:"show-week-numbers",litepicker:"litepicker",containerMain:"container__main",containerMonths:"container__months",columns2:"columns-2",columns3:"columns-3",columns4:"columns-4",splitView:"split-view",monthItemHeader:"month-item-header",buttonPreviousMonth:"button-previous-month",buttonNextMonth:"button-next-month",monthItem:"month-item",monthItemName:"month-item-name",monthItemYear:"month-item-year",resetButton:"reset-button",monthItemWeekdaysRow:"month-item-weekdays-row",noPreviousMonth:"no-previous-month",noNextMonth:"no-next-month",containerDays:"container__days",dayItem:"day-item",isToday:"is-today",isLocked:"is-locked",isInRange:"is-in-range",isStartDate:"is-start-date",isFlipped:"is-flipped",isEndDate:"is-end-date",isHighlighted:"is-highlighted",weekNumber:"week-number",containerFooter:"container__footer",previewDateRange:"preview-date-range",buttonCancel:"button-cancel",buttonApply:"button-apply",containerTooltip:"container__tooltip"},t.exports=e},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[i].concat(s).concat([o]).join("\n")}var r,a,l;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit("error:range",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,l=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,i){if(void 0===i&&(i="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var n="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(n+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&i.isAfter(e)&&i.setMonth(i.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=i.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=l.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var i=t.format(this.options.format,this.options.lang),n=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=i,this.options.elementEnd.value=n):this.options.element.value=""+i+this.options.delimiter+n}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+l.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+l.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(l.dayItem)){if(t.preventDefault(),e.classList.contains(l.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var i=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=i.clone()}if(this.shouldCheckLockDays())c.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(l.buttonPreviousMonth)){t.preventDefault();var n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()-o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}if(e.classList.contains(l.buttonNextMonth)){t.preventDefault();n=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+l.monthItem);n=c.findNestedMonthItem(r),o=1}return this.calendars[n].setMonth(this.calendars[n].getMonth()+o),this.gotoDate(this.calendars[n],n),void this.emit("change:month",this.calendars[n],n)}e.classList.contains(l.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(l.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var i=this.ui.querySelector("."+l.containerTooltip);i.style.visibility="visible",i.innerHTML=e;var n=this.ui.getBoundingClientRect(),o=i.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var c=this.ui.parentNode.getBoundingClientRect();r-=c.top,a-=c.left}else r-=n.top,a-=n.left;r-=o.height,a-=o.width/2,a+=s.width/2,i.style.top=r+"px",i.style.left=a+"px",this.emit("tooltip",i,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+l.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(l.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(l.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,i=t.target;if(this.isDayItem(i)&&this.shouldAllowMouseEnter(i)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var n=this.ui.querySelector("."+l.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(i.dataset.time),r=!1;if(o.getTime()>s.getTime()){var c=o.clone();o=s.clone(),s=c.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+l.dayItem)).forEach((function(t){var i=new a.DateTime(t.dataset.time),n=e.renderDay(i);i.isBetween(o,s)&&n.classList.add(l.isInRange),t.className=n.className})),i.classList.add(l.isEndDate),r?(n&&n.classList.add(l.isFlipped),i.classList.add(l.isFlipped)):(n&&n.classList.remove(l.isFlipped),i.classList.remove(l.isFlipped)),this.options.showTooltip){var h=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(h=this.options.tooltipNumber.call(this,h)),h>0){var p=this.pluralSelector(h),d=h+" "+(this.options.tooltipText[p]?this.options.tooltipText[p]:"["+p+"]");this.showTooltip(i,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&i.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),i=e[0],n=e[1],o=this.options.format;if(this.options.elementEnd?i instanceof a.DateTime&&n instanceof a.DateTime&&i.format(o)===this.options.element.value&&n.format(o)===this.options.elementEnd.value:this.options.singleMode?i instanceof a.DateTime&&i.format(o)===this.options.element.value:i instanceof a.DateTime&&n instanceof a.DateTime&&""+i.format(o)+this.options.delimiter+n.format(o)===this.options.element.value){if(n&&i.getTime()>n.getTime()){var s=i.clone();i=n.clone(),n=s.clone()}this.options.startDate=new a.DateTime(i,this.options.format,this.options.lang),n&&(this.options.endDate=new a.DateTime(n,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=i.clone(),l=0;(this.options.elementEnd?i.format(o)===t.target.value:t.target.value.startsWith(i.format(o)))||(r=n.clone(),l=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,l)}},e}(r.Calendar);e.Litepicker=h},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,i=0;iy)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=y;d>=v;d-=1){var u=document.createElement("option"),b=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&b.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&b.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var _=1;_<=7;_+=1){var T=3+this.options.firstDay+_,L=document.createElement("div");L.innerHTML=this.weekdayName(T),L.title=this.weekdayName(T,"long"),M.appendChild(L)}var E=document.createElement("div");E.className=a.containerDays;var S=this.calcSkipDays(n);this.options.showWeekNumbers&&S&&E.appendChild(this.renderWeekNumber(n));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),c=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],c,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var h=this.options.maxDays;s=this.datePicked[0].clone().subtract(h,"day"),c=this.datePicked[0].clone().add(h,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(c)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),l.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var i=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+i}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),i=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===i&&0===t.getMonth()?"53 / 1":i,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=c},function(t,e,i){"use strict";var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},function(t,e){function i(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,i=1,n=arguments.length;i',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},i.options=s(s({},i.options),e.element.dataset),Object.keys(i.options).forEach((function(t){"true"!==i.options[t]&&"false"!==i.options[t]||(i.options[t]="true"===i.options[t])}));var n=s(s({},i.options.dropdowns),e.dropdowns),o=s(s({},i.options.buttonText),e.buttonText),r=s(s({},i.options.tooltipText),e.tooltipText);i.options=s(s({},i.options),e),i.options.dropdowns=s({},n),i.options.buttonText=s({},o),i.options.tooltipText=s({},r),i.options.elementEnd||(i.options.allowRepick=!1),i.options.lockDays.length&&(i.options.lockDays=a.DateTime.convertArray(i.options.lockDays,i.options.lockDaysFormat)),i.options.highlightedDays.length&&(i.options.highlightedDays=a.DateTime.convertArray(i.options.highlightedDays,i.options.highlightedDaysFormat));var l=i.parseInput(),c=l[0],h=l[1];i.options.startDate&&(i.options.singleMode||i.options.endDate)&&(c=new a.DateTime(i.options.startDate,i.options.format,i.options.lang)),c&&i.options.endDate&&(h=new a.DateTime(i.options.endDate,i.options.format,i.options.lang)),c instanceof a.DateTime&&!isNaN(c.getTime())&&(i.options.startDate=c),i.options.startDate&&h instanceof a.DateTime&&!isNaN(h.getTime())&&(i.options.endDate=h),!i.options.singleMode||i.options.startDate instanceof a.DateTime||(i.options.startDate=null),i.options.singleMode||i.options.startDate instanceof a.DateTime&&i.options.endDate instanceof a.DateTime||(i.options.startDate=null,i.options.endDate=null);for(var p=0;pwindow.innerHeight,c=e.top+s-i.height>=i.height;l&&c&&(r=e.top+s-i.height)}if(/left|right/.test(n[0])||n[1]&&"auto"!==n[1]&&/left|right/.test(n[1]))a=/left|right/.test(n[0])?e[n[0]]+o:e[n[1]]+o,"right"!==n[0]&&"right"!==n[1]||(a-=i.width);else{a=e.left+o;l=e.left+i.width>window.innerWidth;var h=e.right+o-i.width>=0;l&&h&&(a=e.right+o-i.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=c},function(t,e,i){"use strict";var n,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,i){return Function.prototype.apply.call(t,e,i)};n=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var l=10;function c(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,i,n){var o,s,r,a;if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,i.listener?i.listener:i),s=t._events),r=s[e]),void 0===r)r=s[e]=i,++t._eventsCount;else if("function"==typeof r?r=s[e]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),(o=c(t))>0&&r.length>o&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=r.length,a=l,console&&console.warn&&console.warn(a)}return t}function p(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var l=o[t];if(void 0===l)return!1;if("function"==typeof l)s(l,this,e);else{var c=l.length,h=f(l,c);for(i=0;i=0;s--)if(i[s]===e||i[s].listener===e){r=i[s].listener,o=s;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){(e=i(9)(!1)).push([t.i,':root{--litepicker-container-months-color-bg: #fff;--litepicker-container-months-box-shadow-color: #ddd;--litepicker-footer-color-bg: #fafafa;--litepicker-footer-box-shadow-color: #ddd;--litepicker-tooltip-color-bg: #fff;--litepicker-month-header-color: #333;--litepicker-button-prev-month-color: #9e9e9e;--litepicker-button-next-month-color: #9e9e9e;--litepicker-button-prev-month-color-hover: #2196f3;--litepicker-button-next-month-color-hover: #2196f3;--litepicker-month-width: calc(var(--litepicker-day-width) * 7);--litepicker-month-weekday-color: #9e9e9e;--litepicker-month-week-number-color: #9e9e9e;--litepicker-day-width: 38px;--litepicker-day-color: #333;--litepicker-day-color-hover: #2196f3;--litepicker-is-today-color: #f44336;--litepicker-is-in-range-color: #bbdefb;--litepicker-is-locked-color: #9e9e9e;--litepicker-is-start-color: #fff;--litepicker-is-start-color-bg: #2196f3;--litepicker-is-end-color: #fff;--litepicker-is-end-color-bg: #2196f3;--litepicker-button-cancel-color: #fff;--litepicker-button-cancel-color-bg: #9e9e9e;--litepicker-button-apply-color: #fff;--litepicker-button-apply-color-bg: #2196f3;--litepicker-button-reset-color: #909090;--litepicker-button-reset-color-hover: #2196f3;--litepicker-highlighted-day-color: #333;--litepicker-highlighted-day-color-bg: #ffeb3b}.show-week-numbers{--litepicker-month-width: calc(var(--litepicker-day-width) * 8)}.litepicker{font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:0.8em;display:none}.litepicker button{border:none;background:none}.litepicker .container__main{display:-webkit-box;display:-ms-flexbox;display:flex}.litepicker .container__months{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:var(--litepicker-container-months-color-bg);border-radius:5px;-webkit-box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);box-shadow:0 0 5px var(--litepicker-container-months-box-shadow-color);width:calc(var(--litepicker-month-width) + 10px);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months.columns-2{width:calc((var(--litepicker-month-width) * 2) + 20px)}.litepicker .container__months.columns-3{width:calc((var(--litepicker-month-width) * 3) + 30px)}.litepicker .container__months.columns-4{width:calc((var(--litepicker-month-width) * 4) + 40px)}.litepicker .container__months.split-view .month-item-header .button-previous-month,.litepicker .container__months.split-view .month-item-header .button-next-month{visibility:visible}.litepicker .container__months .month-item{padding:5px;width:var(--litepicker-month-width);-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__months .month-item-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-weight:500;padding:10px 5px;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--litepicker-month-header-color)}.litepicker .container__months .month-item-header div{-webkit-box-flex:1;-ms-flex:1;flex:1}.litepicker .container__months .month-item-header div>.month-item-name{margin-right:5px}.litepicker .container__months .month-item-header div>.month-item-year{padding:0}.litepicker .container__months .month-item-header .reset-button{color:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button>svg{fill:var(--litepicker-button-reset-color)}.litepicker .container__months .month-item-header .reset-button *{pointer-events:none}.litepicker .container__months .month-item-header .reset-button:hover{color:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .reset-button:hover>svg{fill:var(--litepicker-button-reset-color-hover)}.litepicker .container__months .month-item-header .button-previous-month,.litepicker .container__months .month-item-header .button-next-month{visibility:hidden;text-decoration:none;padding:3px 5px;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__months .month-item-header .button-previous-month *,.litepicker .container__months .month-item-header .button-next-month *{pointer-events:none}.litepicker .container__months .month-item-header .button-previous-month{color:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month>svg,.litepicker .container__months .month-item-header .button-previous-month>img{fill:var(--litepicker-button-prev-month-color)}.litepicker .container__months .month-item-header .button-previous-month:hover{color:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-previous-month:hover>svg{fill:var(--litepicker-button-prev-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month{color:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month>svg,.litepicker .container__months .month-item-header .button-next-month>img{fill:var(--litepicker-button-next-month-color)}.litepicker .container__months .month-item-header .button-next-month:hover{color:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-header .button-next-month:hover>svg{fill:var(--litepicker-button-next-month-color-hover)}.litepicker .container__months .month-item-weekdays-row{display:-webkit-box;display:-ms-flexbox;display:flex;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;color:var(--litepicker-month-weekday-color)}.litepicker .container__months .month-item-weekdays-row>div{padding:5px 0;font-size:85%;-webkit-box-flex:1;-ms-flex:1;flex:1;width:var(--litepicker-day-width);text-align:center}.litepicker .container__months .month-item:first-child .button-previous-month{visibility:visible}.litepicker .container__months .month-item:last-child .button-next-month{visibility:visible}.litepicker .container__months .month-item.no-previous-month .button-previous-month{visibility:hidden}.litepicker .container__months .month-item.no-next-month .button-next-month{visibility:hidden}.litepicker .container__days{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-self:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:center;-webkit-box-sizing:content-box;box-sizing:content-box}.litepicker .container__days>div,.litepicker .container__days>a{padding:5px 0;width:var(--litepicker-day-width)}.litepicker .container__days .day-item{color:var(--litepicker-day-color);text-align:center;text-decoration:none;border-radius:3px;-webkit-transition:color 0.3s, border 0.3s;transition:color 0.3s, border 0.3s;cursor:default}.litepicker .container__days .day-item:hover{color:var(--litepicker-day-color-hover);-webkit-box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover);box-shadow:inset 0 0 0 1px var(--litepicker-day-color-hover)}.litepicker .container__days .day-item.is-today{color:var(--litepicker-is-today-color)}.litepicker .container__days .day-item.is-locked{color:var(--litepicker-is-locked-color)}.litepicker .container__days .day-item.is-locked:hover{color:var(--litepicker-is-locked-color);-webkit-box-shadow:none;box-shadow:none;cursor:default}.litepicker .container__days .day-item.is-in-range{background-color:var(--litepicker-is-in-range-color);border-radius:0}.litepicker .container__days .day-item.is-start-date{color:var(--litepicker-is-start-color);background-color:var(--litepicker-is-start-color-bg);border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-flipped{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date{color:var(--litepicker-is-end-color);background-color:var(--litepicker-is-end-color-bg);border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-end-date.is-flipped{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:0;border-bottom-right-radius:0}.litepicker .container__days .day-item.is-start-date.is-end-date{border-top-left-radius:5px;border-bottom-left-radius:5px;border-top-right-radius:5px;border-bottom-right-radius:5px}.litepicker .container__days .day-item.is-highlighted{color:var(--litepicker-highlighted-day-color);background-color:var(--litepicker-highlighted-day-color-bg)}.litepicker .container__days .week-number{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--litepicker-month-week-number-color);font-size:85%}.litepicker .container__footer{text-align:right;padding:10px 5px;margin:0 5px;background-color:var(--litepicker-footer-color-bg);-webkit-box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);box-shadow:inset 0px 3px 3px 0px var(--litepicker-footer-box-shadow-color);border-bottom-left-radius:5px;border-bottom-right-radius:5px}.litepicker .container__footer .preview-date-range{margin-right:10px;font-size:90%}.litepicker .container__footer .button-cancel{background-color:var(--litepicker-button-cancel-color-bg);color:var(--litepicker-button-cancel-color);border:0;padding:3px 7px 4px;border-radius:3px}.litepicker .container__footer .button-cancel *{pointer-events:none}.litepicker .container__footer .button-apply{background-color:var(--litepicker-button-apply-color-bg);color:var(--litepicker-button-apply-color);border:0;padding:3px 7px 4px;border-radius:3px;margin-left:10px;margin-right:10px}.litepicker .container__footer .button-apply:disabled{opacity:0.7}.litepicker .container__footer .button-apply *{pointer-events:none}.litepicker .container__tooltip{position:absolute;margin-top:-4px;padding:4px 8px;border-radius:4px;background-color:var(--litepicker-tooltip-color-bg);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.25);box-shadow:0 1px 3px rgba(0,0,0,0.25);white-space:nowrap;font-size:11px;pointer-events:none;visibility:hidden}.litepicker .container__tooltip:before{position:absolute;bottom:-5px;left:calc(50% - 5px);border-top:5px solid rgba(0,0,0,0.12);border-right:5px solid transparent;border-left:5px solid transparent;content:""}.litepicker .container__tooltip:after{position:absolute;bottom:-4px;left:calc(50% - 4px);border-top:4px solid var(--litepicker-tooltip-color-bg);border-right:4px solid transparent;border-left:4px solid transparent;content:""}\n',""]),e.locals={showWeekNumbers:"show-week-numbers",litepicker:"litepicker",containerMain:"container__main",containerMonths:"container__months",columns2:"columns-2",columns3:"columns-3",columns4:"columns-4",splitView:"split-view",monthItemHeader:"month-item-header",buttonPreviousMonth:"button-previous-month",buttonNextMonth:"button-next-month",monthItem:"month-item",monthItemName:"month-item-name",monthItemYear:"month-item-year",resetButton:"reset-button",monthItemWeekdaysRow:"month-item-weekdays-row",noPreviousMonth:"no-previous-month",noNextMonth:"no-next-month",containerDays:"container__days",dayItem:"day-item",isToday:"is-today",isLocked:"is-locked",isInRange:"is-in-range",isStartDate:"is-start-date",isFlipped:"is-flipped",isEndDate:"is-end-date",isHighlighted:"is-highlighted",weekNumber:"week-number",containerFooter:"container__footer",previewDateRange:"preview-date-range",buttonCancel:"button-cancel",buttonApply:"button-apply",containerTooltip:"container__tooltip"},t.exports=e},function(t,e,i){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i=t[1]||"",n=t[3];if(!n)return i;if(e&&"function"==typeof btoa){var o=(r=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),l="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(l," */")),s=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[i].concat(s).concat([o]).join("\n")}var r,a,l;return[i].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(n)for(var s=0;sthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,i){void 0===i&&(i=!1),this.triggerElement=void 0;var n=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([n,s],this.options):r.dateIsLocked(n,this.options,[n,s])||r.dateIsLocked(s,this.options,[n,s]))&&!i?this.emit("error:range",[n,s]):(this.setStartDate(n),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var i=new o.DateTime(t);i.setDate(1),this.calendars[e]=i.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=n(n({},this.options.dropdowns),t.dropdowns),i=n(n({},this.options.buttonText),t.buttonText),s=n(n({},this.options.tooltipText),t.tooltipText);this.options=n(n({},this.options),t),this.options.dropdowns=n({},e),this.options.buttonText=n({},i),this.options.tooltipText=n({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,h=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,n){if(void 0===n&&(n="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var i="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(i+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&n.isAfter(e)&&n.setMonth(n.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=n.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=h.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var n=t.format(this.options.format,this.options.lang),i=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=n,this.options.elementEnd.value=i):this.options.element.value=""+n+this.options.delimiter+i}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+h.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+h.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(h.dayItem)){if(t.preventDefault(),e.classList.contains(h.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var n=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=n.clone()}if(this.shouldCheckLockDays())l.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(h.buttonPreviousMonth)){t.preventDefault();var i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()-o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}if(e.classList.contains(h.buttonNextMonth)){t.preventDefault();i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()+o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}e.classList.contains(h.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(h.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var n=this.ui.querySelector("."+h.containerTooltip);n.style.visibility="visible",n.innerHTML=e;var i=this.ui.getBoundingClientRect(),o=n.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var l=this.ui.parentNode.getBoundingClientRect();r-=l.top,a-=l.left}else r-=i.top,a-=i.left;r-=o.height,a-=o.width/2,a+=s.width/2,n.style.top=r+"px",n.style.left=a+"px",this.emit("tooltip",n,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+h.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(h.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(h.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,n=t.target;if(this.isDayItem(n)&&this.shouldAllowMouseEnter(n)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var i=this.ui.querySelector("."+h.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(n.dataset.time),r=!1;if(o.getTime()>s.getTime()){var l=o.clone();o=s.clone(),s=l.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+h.dayItem)).forEach((function(t){var n=new a.DateTime(t.dataset.time),i=e.renderDay(n);n.isBetween(o,s)&&i.classList.add(h.isInRange),t.className=i.className})),n.classList.add(h.isEndDate),r?(i&&i.classList.add(h.isFlipped),n.classList.add(h.isFlipped)):(i&&i.classList.remove(h.isFlipped),n.classList.remove(h.isFlipped)),this.options.showTooltip){var p=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(p=this.options.tooltipNumber.call(this,p)),p>0){var c=this.pluralSelector(p),d=p+" "+(this.options.tooltipText[c]?this.options.tooltipText[c]:"["+c+"]");this.showTooltip(n,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&n.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),n=e[0],i=e[1],o=this.options.format;if(this.options.elementEnd?n instanceof a.DateTime&&i instanceof a.DateTime&&n.format(o)===this.options.element.value&&i.format(o)===this.options.elementEnd.value:this.options.singleMode?n instanceof a.DateTime&&n.format(o)===this.options.element.value:n instanceof a.DateTime&&i instanceof a.DateTime&&""+n.format(o)+this.options.delimiter+i.format(o)===this.options.element.value){if(i&&n.getTime()>i.getTime()){var s=n.clone();n=i.clone(),i=s.clone()}this.options.startDate=new a.DateTime(n,this.options.format,this.options.lang),i&&(this.options.endDate=new a.DateTime(i,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=n.clone(),h=0;(this.options.elementEnd?n.format(o)===t.target.value:t.target.value.startsWith(n.format(o)))||(r=i.clone(),h=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,h)}},e}(r.Calendar);e.Litepicker=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,n=0;nv)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=v;d>=y;d-=1){var u=document.createElement("option"),D=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&D.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&D.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var L=1;L<=7;L+=1){var E=3+this.options.firstDay+L,S=document.createElement("div");S.innerHTML=this.weekdayName(E),S.title=this.weekdayName(E,"long"),b.appendChild(S)}var P=document.createElement("div");P.className=a.containerDays;var I=this.calcSkipDays(i);this.options.showWeekNumbers&&I&&P.appendChild(this.renderWeekNumber(i));for(var x=0;x1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),l=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],l,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var p=this.options.maxDays;s=this.datePicked[0].clone().subtract(p,"day"),l=this.datePicked[0].clone().add(p,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(l)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),h.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var n=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+n}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),n=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===n&&0===t.getMonth()?"53 / 1":n,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=l},function(t,e,n){"use strict";var i,o=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,n=1,i=arguments.length;n',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},n.options=s(s({},n.options),e.element.dataset),Object.keys(n.options).forEach((function(t){"true"!==n.options[t]&&"false"!==n.options[t]||(n.options[t]="true"===n.options[t])}));var i=s(s({},n.options.dropdowns),e.dropdowns),o=s(s({},n.options.buttonText),e.buttonText),r=s(s({},n.options.tooltipText),e.tooltipText);n.options=s(s({},n.options),e),n.options.dropdowns=s({},i),n.options.buttonText=s({},o),n.options.tooltipText=s({},r),n.options.elementEnd||(n.options.allowRepick=!1),n.options.lockDays.length&&(n.options.lockDays=a.DateTime.convertArray(n.options.lockDays,n.options.lockDaysFormat)),n.options.highlightedDays.length&&(n.options.highlightedDays=a.DateTime.convertArray(n.options.highlightedDays,n.options.highlightedDaysFormat));var h=n.parseInput(),l=h[0],p=h[1];n.options.startDate&&(n.options.singleMode||n.options.endDate)&&(l=new a.DateTime(n.options.startDate,n.options.format,n.options.lang)),l&&n.options.endDate&&(p=new a.DateTime(n.options.endDate,n.options.format,n.options.lang)),l instanceof a.DateTime&&!isNaN(l.getTime())&&(n.options.startDate=l),n.options.startDate&&p instanceof a.DateTime&&!isNaN(p.getTime())&&(n.options.endDate=p),!n.options.singleMode||n.options.startDate instanceof a.DateTime||(n.options.startDate=null),n.options.singleMode||n.options.startDate instanceof a.DateTime&&n.options.endDate instanceof a.DateTime||(n.options.startDate=null,n.options.endDate=null);for(var c=0;cwindow.innerHeight,l=e.top+s-n.height>=n.height;h&&l&&(r=e.top+s-n.height)}if(/left|right/.test(i[0])||i[1]&&"auto"!==i[1]&&/left|right/.test(i[1]))a=/left|right/.test(i[0])?e[i[0]]+o:e[i[1]]+o,"right"!==i[0]&&"right"!==i[1]||(a-=n.width);else{a=e.left+o;h=e.left+n.width>window.innerWidth;var p=e.right+o-n.width>=0;h&&p&&(a=e.right+o-n.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=l},function(t,e,n){"use strict";var i,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};i=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var h=10;function l(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function p(t,e,n,i){var o,s,r,a;if("function"!=typeof n)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),s=t._events),r=s[e]),void 0===r)r=s[e]=n,++t._eventsCount;else if("function"==typeof r?r=s[e]=i?[n,r]:[r,n]:i?r.unshift(n):r.push(n),(o=l(t))>0&&r.length>o&&!r.warned){r.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=t,h.type=e,h.count=r.length,a=h,console&&console.warn&&console.warn(a)}return t}function c(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)s(h,this,e);else{var l=h.length,p=f(h,l);for(n=0;n=0;s--)if(n[s]===e||n[s].listener===e){r=n[s].listener,o=s;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(t,e,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;nthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,n){void 0===n&&(n=!1),this.triggerElement=void 0;var i=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([i,s],this.options):r.dateIsLocked(i,this.options,[i,s])||r.dateIsLocked(s,this.options,[i,s]))&&!n?this.emit("error:range",[i,s]):(this.setStartDate(i),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var n=new o.DateTime(t);n.setDate(1),this.calendars[e]=n.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=i(i({},this.options.dropdowns),t.dropdowns),n=i(i({},this.options.buttonText),t.buttonText),s=i(i({},this.options.tooltipText),t.tooltipText);this.options=i(i({},this.options),t),this.options.dropdowns=i({},e),this.options.buttonText=i({},n),this.options.tooltipText=i({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,h=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,n){if(void 0===n&&(n="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var i="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(i+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&n.isAfter(e)&&n.setMonth(n.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=n.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=h.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var n=t.format(this.options.format,this.options.lang),i=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=n,this.options.elementEnd.value=i):this.options.element.value=""+n+this.options.delimiter+i}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+h.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+h.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(h.dayItem)){if(t.preventDefault(),e.classList.contains(h.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var n=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=n.clone()}if(this.shouldCheckLockDays())l.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(h.buttonPreviousMonth)){t.preventDefault();var i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()-o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}if(e.classList.contains(h.buttonNextMonth)){t.preventDefault();i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()+o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}e.classList.contains(h.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(h.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var n=this.ui.querySelector("."+h.containerTooltip);n.style.visibility="visible",n.innerHTML=e;var i=this.ui.getBoundingClientRect(),o=n.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var l=this.ui.parentNode.getBoundingClientRect();r-=l.top,a-=l.left}else r-=i.top,a-=i.left;r-=o.height,a-=o.width/2,a+=s.width/2,n.style.top=r+"px",n.style.left=a+"px",this.emit("tooltip",n,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+h.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(h.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(h.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,n=t.target;if(this.isDayItem(n)&&this.shouldAllowMouseEnter(n)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var i=this.ui.querySelector("."+h.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(n.dataset.time),r=!1;if(o.getTime()>s.getTime()){var l=o.clone();o=s.clone(),s=l.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+h.dayItem)).forEach((function(t){var n=new a.DateTime(t.dataset.time),i=e.renderDay(n);n.isBetween(o,s)&&i.classList.add(h.isInRange),t.className=i.className})),n.classList.add(h.isEndDate),r?(i&&i.classList.add(h.isFlipped),n.classList.add(h.isFlipped)):(i&&i.classList.remove(h.isFlipped),n.classList.remove(h.isFlipped)),this.options.showTooltip){var p=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(p=this.options.tooltipNumber.call(this,p)),p>0){var c=this.pluralSelector(p),d=p+" "+(this.options.tooltipText[c]?this.options.tooltipText[c]:"["+c+"]");this.showTooltip(n,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&n.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),n=e[0],i=e[1],o=this.options.format;if(this.options.elementEnd?n instanceof a.DateTime&&i instanceof a.DateTime&&n.format(o)===this.options.element.value&&i.format(o)===this.options.elementEnd.value:this.options.singleMode?n instanceof a.DateTime&&n.format(o)===this.options.element.value:n instanceof a.DateTime&&i instanceof a.DateTime&&""+n.format(o)+this.options.delimiter+i.format(o)===this.options.element.value){if(i&&n.getTime()>i.getTime()){var s=n.clone();n=i.clone(),i=s.clone()}this.options.startDate=new a.DateTime(n,this.options.format,this.options.lang),i&&(this.options.endDate=new a.DateTime(i,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=n.clone(),h=0;(this.options.elementEnd?n.format(o)===t.target.value:t.target.value.startsWith(n.format(o)))||(r=i.clone(),h=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,h)}},e}(r.Calendar);e.Litepicker=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,n=0;nv)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=v;d>=y;d-=1){var u=document.createElement("option"),D=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&D.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&D.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var L=1;L<=7;L+=1){var E=3+this.options.firstDay+L,S=document.createElement("div");S.innerHTML=this.weekdayName(E),S.title=this.weekdayName(E,"long"),b.appendChild(S)}var P=document.createElement("div");P.className=a.containerDays;var I=this.calcSkipDays(i);this.options.showWeekNumbers&&I&&P.appendChild(this.renderWeekNumber(i));for(var x=0;x1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),l=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],l,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var p=this.options.maxDays;s=this.datePicked[0].clone().subtract(p,"day"),l=this.datePicked[0].clone().add(p,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(l)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),h.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var n=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+n}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),n=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===n&&0===t.getMonth()?"53 / 1":n,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=l},function(t,e,n){"use strict";var i,o=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,n=1,i=arguments.length;n',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},n.options=s(s({},n.options),e.element.dataset),Object.keys(n.options).forEach((function(t){"true"!==n.options[t]&&"false"!==n.options[t]||(n.options[t]="true"===n.options[t])}));var i=s(s({},n.options.dropdowns),e.dropdowns),o=s(s({},n.options.buttonText),e.buttonText),r=s(s({},n.options.tooltipText),e.tooltipText);n.options=s(s({},n.options),e),n.options.dropdowns=s({},i),n.options.buttonText=s({},o),n.options.tooltipText=s({},r),n.options.elementEnd||(n.options.allowRepick=!1),n.options.lockDays.length&&(n.options.lockDays=a.DateTime.convertArray(n.options.lockDays,n.options.lockDaysFormat)),n.options.highlightedDays.length&&(n.options.highlightedDays=a.DateTime.convertArray(n.options.highlightedDays,n.options.highlightedDaysFormat));var h=n.parseInput(),l=h[0],p=h[1];n.options.startDate&&(n.options.singleMode||n.options.endDate)&&(l=new a.DateTime(n.options.startDate,n.options.format,n.options.lang)),l&&n.options.endDate&&(p=new a.DateTime(n.options.endDate,n.options.format,n.options.lang)),l instanceof a.DateTime&&!isNaN(l.getTime())&&(n.options.startDate=l),n.options.startDate&&p instanceof a.DateTime&&!isNaN(p.getTime())&&(n.options.endDate=p),!n.options.singleMode||n.options.startDate instanceof a.DateTime||(n.options.startDate=null),n.options.singleMode||n.options.startDate instanceof a.DateTime&&n.options.endDate instanceof a.DateTime||(n.options.startDate=null,n.options.endDate=null);for(var c=0;cwindow.innerHeight,l=e.top+s-n.height>=n.height;h&&l&&(r=e.top+s-n.height)}if(/left|right/.test(i[0])||i[1]&&"auto"!==i[1]&&/left|right/.test(i[1]))a=/left|right/.test(i[0])?e[i[0]]+o:e[i[1]]+o,"right"!==i[0]&&"right"!==i[1]||(a-=n.width);else{a=e.left+o;h=e.left+n.width>window.innerWidth;var p=e.right+o-n.width>=0;h&&p&&(a=e.right+o-n.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=l},function(t,e,n){"use strict";var i,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};i=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var h=10;function l(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function p(t,e,n,i){var o,s,r,a;if("function"!=typeof n)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),s=t._events),r=s[e]),void 0===r)r=s[e]=n,++t._eventsCount;else if("function"==typeof r?r=s[e]=i?[n,r]:[r,n]:i?r.unshift(n):r.push(n),(o=l(t))>0&&r.length>o&&!r.warned){r.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=t,h.type=e,h.count=r.length,a=h,console&&console.warn&&console.warn(a)}return t}function c(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)s(h,this,e);else{var l=h.length,p=f(h,l);for(n=0;n=0;s--)if(n[s]===e||n[s].listener===e){r=n[s].listener,o=s;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(t,e,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;nthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,n){void 0===n&&(n=!1),this.triggerElement=void 0;var i=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([i,s],this.options):r.dateIsLocked(i,this.options,[i,s])||r.dateIsLocked(s,this.options,[i,s]))&&!n?this.emit("error:range",[i,s]):(this.setStartDate(i),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var n=new o.DateTime(t);n.setDate(1),this.calendars[e]=n.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=i(i({},this.options.dropdowns),t.dropdowns),n=i(i({},this.options.buttonText),t.buttonText),s=i(i({},this.options.tooltipText),t.tooltipText);this.options=i(i({},this.options),t),this.options.dropdowns=i({},e),this.options.buttonText=i({},n),this.options.tooltipText=i({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,h=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,n){if(void 0===n&&(n="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var i="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(i+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&n.isAfter(e)&&n.setMonth(n.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=n.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=h.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var n=t.format(this.options.format,this.options.lang),i=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=n,this.options.elementEnd.value=i):this.options.element.value=""+n+this.options.delimiter+i}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+h.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+h.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(h.dayItem)){if(t.preventDefault(),e.classList.contains(h.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var n=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=n.clone()}if(this.shouldCheckLockDays())l.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(h.buttonPreviousMonth)){t.preventDefault();var i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()-o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}if(e.classList.contains(h.buttonNextMonth)){t.preventDefault();i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()+o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}e.classList.contains(h.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(h.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var n=this.ui.querySelector("."+h.containerTooltip);n.style.visibility="visible",n.innerHTML=e;var i=this.ui.getBoundingClientRect(),o=n.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var l=this.ui.parentNode.getBoundingClientRect();r-=l.top,a-=l.left}else r-=i.top,a-=i.left;r-=o.height,a-=o.width/2,a+=s.width/2,n.style.top=r+"px",n.style.left=a+"px",this.emit("tooltip",n,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+h.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(h.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(h.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,n=t.target;if(this.isDayItem(n)&&this.shouldAllowMouseEnter(n)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var i=this.ui.querySelector("."+h.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(n.dataset.time),r=!1;if(o.getTime()>s.getTime()){var l=o.clone();o=s.clone(),s=l.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+h.dayItem)).forEach((function(t){var n=new a.DateTime(t.dataset.time),i=e.renderDay(n);n.isBetween(o,s)&&i.classList.add(h.isInRange),t.className=i.className})),n.classList.add(h.isEndDate),r?(i&&i.classList.add(h.isFlipped),n.classList.add(h.isFlipped)):(i&&i.classList.remove(h.isFlipped),n.classList.remove(h.isFlipped)),this.options.showTooltip){var p=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(p=this.options.tooltipNumber.call(this,p)),p>0){var c=this.pluralSelector(p),d=p+" "+(this.options.tooltipText[c]?this.options.tooltipText[c]:"["+c+"]");this.showTooltip(n,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&n.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),n=e[0],i=e[1],o=this.options.format;if(this.options.elementEnd?n instanceof a.DateTime&&i instanceof a.DateTime&&n.format(o)===this.options.element.value&&i.format(o)===this.options.elementEnd.value:this.options.singleMode?n instanceof a.DateTime&&n.format(o)===this.options.element.value:n instanceof a.DateTime&&i instanceof a.DateTime&&""+n.format(o)+this.options.delimiter+i.format(o)===this.options.element.value){if(i&&n.getTime()>i.getTime()){var s=n.clone();n=i.clone(),i=s.clone()}this.options.startDate=new a.DateTime(n,this.options.format,this.options.lang),i&&(this.options.endDate=new a.DateTime(i,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=n.clone(),h=0;(this.options.elementEnd?n.format(o)===t.target.value:t.target.value.startsWith(n.format(o)))||(r=i.clone(),h=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,h)}},e}(r.Calendar);e.Litepicker=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,n=0;nv)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=v;d>=y;d-=1){var u=document.createElement("option"),D=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&D.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&D.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var L=1;L<=7;L+=1){var E=3+this.options.firstDay+L,S=document.createElement("div");S.innerHTML=this.weekdayName(E),S.title=this.weekdayName(E,"long"),b.appendChild(S)}var P=document.createElement("div");P.className=a.containerDays;var I=this.calcSkipDays(i);this.options.showWeekNumbers&&I&&P.appendChild(this.renderWeekNumber(i));for(var x=0;x1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),l=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],l,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var p=this.options.maxDays;s=this.datePicked[0].clone().subtract(p,"day"),l=this.datePicked[0].clone().add(p,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(l)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),h.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var n=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+n}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),n=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===n&&0===t.getMonth()?"53 / 1":n,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=l},function(t,e,n){"use strict";var i,o=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,n=1,i=arguments.length;n',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},n.options=s(s({},n.options),e.element.dataset),Object.keys(n.options).forEach((function(t){"true"!==n.options[t]&&"false"!==n.options[t]||(n.options[t]="true"===n.options[t])}));var i=s(s({},n.options.dropdowns),e.dropdowns),o=s(s({},n.options.buttonText),e.buttonText),r=s(s({},n.options.tooltipText),e.tooltipText);n.options=s(s({},n.options),e),n.options.dropdowns=s({},i),n.options.buttonText=s({},o),n.options.tooltipText=s({},r),n.options.elementEnd||(n.options.allowRepick=!1),n.options.lockDays.length&&(n.options.lockDays=a.DateTime.convertArray(n.options.lockDays,n.options.lockDaysFormat)),n.options.highlightedDays.length&&(n.options.highlightedDays=a.DateTime.convertArray(n.options.highlightedDays,n.options.highlightedDaysFormat));var h=n.parseInput(),l=h[0],p=h[1];n.options.startDate&&(n.options.singleMode||n.options.endDate)&&(l=new a.DateTime(n.options.startDate,n.options.format,n.options.lang)),l&&n.options.endDate&&(p=new a.DateTime(n.options.endDate,n.options.format,n.options.lang)),l instanceof a.DateTime&&!isNaN(l.getTime())&&(n.options.startDate=l),n.options.startDate&&p instanceof a.DateTime&&!isNaN(p.getTime())&&(n.options.endDate=p),!n.options.singleMode||n.options.startDate instanceof a.DateTime||(n.options.startDate=null),n.options.singleMode||n.options.startDate instanceof a.DateTime&&n.options.endDate instanceof a.DateTime||(n.options.startDate=null,n.options.endDate=null);for(var c=0;cwindow.innerHeight,l=e.top+s-n.height>=n.height;h&&l&&(r=e.top+s-n.height)}if(/left|right/.test(i[0])||i[1]&&"auto"!==i[1]&&/left|right/.test(i[1]))a=/left|right/.test(i[0])?e[i[0]]+o:e[i[1]]+o,"right"!==i[0]&&"right"!==i[1]||(a-=n.width);else{a=e.left+o;h=e.left+n.width>window.innerWidth;var p=e.right+o-n.width>=0;h&&p&&(a=e.right+o-n.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=l},function(t,e,n){"use strict";var i,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};i=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var h=10;function l(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function p(t,e,n,i){var o,s,r,a;if("function"!=typeof n)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),s=t._events),r=s[e]),void 0===r)r=s[e]=n,++t._eventsCount;else if("function"==typeof r?r=s[e]=i?[n,r]:[r,n]:i?r.unshift(n):r.push(n),(o=l(t))>0&&r.length>o&&!r.warned){r.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=t,h.type=e,h.count=r.length,a=h,console&&console.warn&&console.warn(a)}return t}function c(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)s(h,this,e);else{var l=h.length,p=f(h,l);for(n=0;n=0;s--)if(n[s]===e||n[s].listener===e){r=n[s].listener,o=s;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(t,e,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;nthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,n){void 0===n&&(n=!1),this.triggerElement=void 0;var i=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([i,s],this.options):r.dateIsLocked(i,this.options,[i,s])||r.dateIsLocked(s,this.options,[i,s]))&&!n?this.emit("error:range",[i,s]):(this.setStartDate(i),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var n=new o.DateTime(t);n.setDate(1),this.calendars[e]=n.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=i(i({},this.options.dropdowns),t.dropdowns),n=i(i({},this.options.buttonText),t.buttonText),s=i(i({},this.options.tooltipText),t.tooltipText);this.options=i(i({},this.options),t),this.options.dropdowns=i({},e),this.options.buttonText=i({},n),this.options.tooltipText=i({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;r0&&(r.value+=".*?");for(var a=0,h=Object.entries(o);at.getTime()&&this.timestamp()=t.getTime()&&this.timestamp()t.getTime()&&this.timestamp()<=e.getTime();case"[]":return this.timestamp()>=t.getTime()&&this.timestamp()<=e.getTime()}},t.prototype.isBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>new Date(this.getFullYear(),this.getMonth(),1).getTime();case"year":case"years":return t.getFullYear()>this.getFullYear()}throw new Error("isBefore: Invalid unit!")},t.prototype.isSameOrBefore=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return t.getTime()>=this.getTime();case"day":case"days":return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()>=new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime();case"month":case"months":return new Date(t.getFullYear(),t.getMonth(),1).getTime()>=new Date(this.getFullYear(),this.getMonth(),1).getTime()}throw new Error("isSameOrBefore: Invalid unit!")},t.prototype.isAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>new Date(t.getFullYear(),t.getMonth(),1).getTime();case"year":case"years":return this.getFullYear()>t.getFullYear()}throw new Error("isAfter: Invalid unit!")},t.prototype.isSameOrAfter=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()>=t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()>=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()>=new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSameOrAfter: Invalid unit!")},t.prototype.isSame=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":return this.getTime()===t.getTime();case"day":case"days":return new Date(this.getFullYear(),this.getMonth(),this.getDate()).getTime()===new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime();case"month":case"months":return new Date(this.getFullYear(),this.getMonth(),1).getTime()===new Date(t.getFullYear(),t.getMonth(),1).getTime()}throw new Error("isSame: Invalid unit!")},t.prototype.add=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()+t);break;case"day":case"days":this.setDate(this.getDate()+t);break;case"month":case"months":this.setMonth(this.getMonth()+t)}return this},t.prototype.subtract=function(t,e){switch(void 0===e&&(e="seconds"),e){case"second":case"seconds":this.setSeconds(this.getSeconds()-t);break;case"day":case"days":this.setDate(this.getDate()-t);break;case"month":case"months":this.setMonth(this.getMonth()-t)}return this},t.prototype.diff=function(t,e){void 0===e&&(e="seconds");switch(e){default:case"second":case"seconds":return this.getTime()-t.getTime();case"day":case"days":return Math.round((this.timestamp()-t.getTime())/864e5);case"month":case"months":}},t.prototype.format=function(e,n){if(void 0===n&&(n="en-US"),"object"==typeof e)return e.output(this.clone().toJSDate());for(var i="",o=[],s=null;null!=(s=t.regex.exec(e));)"\\"!==s[1]&&o.push(s);if(o.length){o[0].index>0&&(i+=e.substring(0,o[0].index));for(var r=0,a=Object.entries(o);r1&&n.isAfter(e)&&n.setMonth(n.getMonth()-(this.options.numberOfMonths-1)),this.calendars[0]=n.clone()):(e.setDate(1),this.calendars[0]=e.clone())}},e.prototype.bindEvents=function(){document.addEventListener("click",this.onClick.bind(this),!0),this.ui=document.createElement("div"),this.ui.className=h.litepicker,this.ui.style.display="none",this.ui.addEventListener("mouseenter",this.onMouseEnter.bind(this),!0),this.ui.addEventListener("mouseleave",this.onMouseLeave.bind(this),!1),this.options.autoRefresh?(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("keyup",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("keyup",this.onInput.bind(this),!0)):(this.options.element instanceof HTMLElement&&this.options.element.addEventListener("change",this.onInput.bind(this),!0),this.options.elementEnd instanceof HTMLElement&&this.options.elementEnd.addEventListener("change",this.onInput.bind(this),!0)),this.options.parentEl?this.options.parentEl instanceof HTMLElement?this.options.parentEl.appendChild(this.ui):document.querySelector(this.options.parentEl).appendChild(this.ui):this.options.inlineMode?this.options.element instanceof HTMLInputElement?this.options.element.parentNode.appendChild(this.ui):this.options.element.appendChild(this.ui):document.body.appendChild(this.ui),this.updateInput(),this.init(),"function"==typeof this.options.setup&&this.options.setup.call(this,this),this.render(),this.options.inlineMode&&this.show()},e.prototype.updateInput=function(){if(this.options.element instanceof HTMLInputElement){var t=this.options.startDate,e=this.options.endDate;if(this.options.singleMode&&t)this.options.element.value=t.format(this.options.format,this.options.lang);else if(!this.options.singleMode&&t&&e){var n=t.format(this.options.format,this.options.lang),i=e.format(this.options.format,this.options.lang);this.options.elementEnd instanceof HTMLInputElement?(this.options.element.value=n,this.options.elementEnd.value=i):this.options.element.value=""+n+this.options.delimiter+i}t||e||(this.options.element.value="",this.options.elementEnd instanceof HTMLInputElement&&(this.options.elementEnd.value=""))}},e.prototype.isSamePicker=function(t){return t.closest("."+h.litepicker)===this.ui},e.prototype.shouldShown=function(t){return!t.disabled&&(t===this.options.element||this.options.elementEnd&&t===this.options.elementEnd)},e.prototype.shouldResetDatePicked=function(){return this.options.singleMode||2===this.datePicked.length},e.prototype.shouldSwapDatePicked=function(){return 2===this.datePicked.length&&this.datePicked[0].getTime()>this.datePicked[1].getTime()},e.prototype.shouldCheckLockDays=function(){return this.options.disallowLockDaysInRange&&2===this.datePicked.length},e.prototype.onClick=function(t){var e=t.target;if(t.target.shadowRoot&&(e=t.composedPath()[0]),e&&this.ui)if(this.shouldShown(e))this.show(e);else if(e.closest("."+h.litepicker)||!this.isShowning()){if(this.isSamePicker(e))if(this.emit("before:click",e),this.preventClick)this.preventClick=!1;else{if(e.classList.contains(h.dayItem)){if(t.preventDefault(),e.classList.contains(h.isLocked))return;if(this.shouldResetDatePicked()&&(this.datePicked.length=0),this.datePicked[this.datePicked.length]=new a.DateTime(e.dataset.time),this.shouldSwapDatePicked()){var n=this.datePicked[1].clone();this.datePicked[1]=this.datePicked[0].clone(),this.datePicked[0]=n.clone()}if(this.shouldCheckLockDays())l.rangeIsLocked(this.datePicked,this.options)&&(this.emit("error:range",this.datePicked),this.datePicked.length=0);return this.render(),this.emit.apply(this,s(["preselect"],s(this.datePicked).map((function(t){return t.clone()})))),void(this.options.autoApply&&(this.options.singleMode&&this.datePicked.length?(this.setDate(this.datePicked[0]),this.hide()):this.options.singleMode||2!==this.datePicked.length||(this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide())))}if(e.classList.contains(h.buttonPreviousMonth)){t.preventDefault();var i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){var r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()-o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}if(e.classList.contains(h.buttonNextMonth)){t.preventDefault();i=0,o=this.options.switchingMonths||this.options.numberOfMonths;if(this.options.splitView){r=e.closest("."+h.monthItem);i=l.findNestedMonthItem(r),o=1}return this.calendars[i].setMonth(this.calendars[i].getMonth()+o),this.gotoDate(this.calendars[i],i),void this.emit("change:month",this.calendars[i],i)}e.classList.contains(h.buttonCancel)&&(t.preventDefault(),this.hide(),this.emit("button:cancel")),e.classList.contains(h.buttonApply)&&(t.preventDefault(),this.options.singleMode&&this.datePicked.length?this.setDate(this.datePicked[0]):this.options.singleMode||2!==this.datePicked.length||this.setDateRange(this.datePicked[0],this.datePicked[1]),this.hide(),this.emit("button:apply",this.options.startDate,this.options.endDate))}}else this.hide()},e.prototype.showTooltip=function(t,e){var n=this.ui.querySelector("."+h.containerTooltip);n.style.visibility="visible",n.innerHTML=e;var i=this.ui.getBoundingClientRect(),o=n.getBoundingClientRect(),s=t.getBoundingClientRect(),r=s.top,a=s.left;if(this.options.inlineMode&&this.options.parentEl){var l=this.ui.parentNode.getBoundingClientRect();r-=l.top,a-=l.left}else r-=i.top,a-=i.left;r-=o.height,a-=o.width/2,a+=s.width/2,n.style.top=r+"px",n.style.left=a+"px",this.emit("tooltip",n,t)},e.prototype.hideTooltip=function(){this.ui.querySelector("."+h.containerTooltip).style.visibility="hidden"},e.prototype.shouldAllowMouseEnter=function(t){return!this.options.singleMode&&!t.classList.contains(h.isLocked)},e.prototype.shouldAllowRepick=function(){return this.options.elementEnd&&this.options.allowRepick&&this.options.startDate&&this.options.endDate},e.prototype.isDayItem=function(t){return t.classList.contains(h.dayItem)},e.prototype.onMouseEnter=function(t){var e=this,n=t.target;if(this.isDayItem(n)&&this.shouldAllowMouseEnter(n)){if(this.shouldAllowRepick()&&(this.triggerElement===this.options.element?this.datePicked[0]=this.options.endDate.clone():this.triggerElement===this.options.elementEnd&&(this.datePicked[0]=this.options.startDate.clone())),1!==this.datePicked.length)return;var i=this.ui.querySelector("."+h.dayItem+'[data-time="'+this.datePicked[0].getTime()+'"]'),o=this.datePicked[0].clone(),s=new a.DateTime(n.dataset.time),r=!1;if(o.getTime()>s.getTime()){var l=o.clone();o=s.clone(),s=l.clone(),r=!0}if(Array.prototype.slice.call(this.ui.querySelectorAll("."+h.dayItem)).forEach((function(t){var n=new a.DateTime(t.dataset.time),i=e.renderDay(n);n.isBetween(o,s)&&i.classList.add(h.isInRange),t.className=i.className})),n.classList.add(h.isEndDate),r?(i&&i.classList.add(h.isFlipped),n.classList.add(h.isFlipped)):(i&&i.classList.remove(h.isFlipped),n.classList.remove(h.isFlipped)),this.options.showTooltip){var p=s.diff(o,"day")+1;if("function"==typeof this.options.tooltipNumber&&(p=this.options.tooltipNumber.call(this,p)),p>0){var c=this.pluralSelector(p),d=p+" "+(this.options.tooltipText[c]?this.options.tooltipText[c]:"["+c+"]");this.showTooltip(n,d);var u=window.navigator.userAgent,m=/(iphone|ipad)/i.test(u),f=/OS 1([0-2])/i.test(u);m&&f&&n.dispatchEvent(new Event("click"))}else this.hideTooltip()}}},e.prototype.onMouseLeave=function(t){t.target;this.options.allowRepick&&(!this.options.allowRepick||this.options.startDate||this.options.endDate)&&(this.datePicked.length=0,this.render())},e.prototype.onInput=function(t){var e=this.parseInput(),n=e[0],i=e[1],o=this.options.format;if(this.options.elementEnd?n instanceof a.DateTime&&i instanceof a.DateTime&&n.format(o)===this.options.element.value&&i.format(o)===this.options.elementEnd.value:this.options.singleMode?n instanceof a.DateTime&&n.format(o)===this.options.element.value:n instanceof a.DateTime&&i instanceof a.DateTime&&""+n.format(o)+this.options.delimiter+i.format(o)===this.options.element.value){if(i&&n.getTime()>i.getTime()){var s=n.clone();n=i.clone(),i=s.clone()}this.options.startDate=new a.DateTime(n,this.options.format,this.options.lang),i&&(this.options.endDate=new a.DateTime(i,this.options.format,this.options.lang)),this.updateInput(),this.render();var r=n.clone(),h=0;(this.options.elementEnd?n.format(o)===t.target.value:t.target.value.startsWith(n.format(o)))||(r=i.clone(),h=this.options.numberOfMonths-1),this.emit("selected",this.getStartDate(),this.getEndDate()),this.gotoDate(r,h)}},e}(r.Calendar);e.Litepicker=p},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findNestedMonthItem=function(t){for(var e=t.parentNode.childNodes,n=0;nv)(u=document.createElement("option")).value=String(t.getFullYear()),u.text=String(t.getFullYear()),u.selected=!0,u.disabled=!0,g.appendChild(u);for(d=v;d>=y;d-=1){var u=document.createElement("option"),D=new r.DateTime(new Date(d,0,1,0,0,0));u.value=String(d),u.text=String(d),u.disabled=this.options.minDate&&D.isBefore(new r.DateTime(this.options.minDate),"year")||this.options.maxDate&&D.isAfter(new r.DateTime(this.options.maxDate),"year"),u.selected=t.getFullYear()===d,g.appendChild(u)}if(t.getFullYear()W");for(var L=1;L<=7;L+=1){var E=3+this.options.firstDay+L,S=document.createElement("div");S.innerHTML=this.weekdayName(E),S.title=this.weekdayName(E,"long"),b.appendChild(S)}var P=document.createElement("div");P.className=a.containerDays;var x=this.calcSkipDays(i);this.options.showWeekNumbers&&x&&P.appendChild(this.renderWeekNumber(i));for(var I=0;I1&&1===this.datePicked.length){var o=this.options.minDays-1,s=this.datePicked[0].clone().subtract(o,"day"),l=this.datePicked[0].clone().add(o,"day");t.isBetween(s,this.datePicked[0],"(]")&&e.classList.add(a.isLocked),t.isBetween(this.datePicked[0],l,"[)")&&e.classList.add(a.isLocked)}if(this.options.maxDays&&1===this.datePicked.length){var p=this.options.maxDays;s=this.datePicked[0].clone().subtract(p,"day"),l=this.datePicked[0].clone().add(p,"day");t.isSameOrBefore(s)&&e.classList.add(a.isLocked),t.isSameOrAfter(l)&&e.classList.add(a.isLocked)}(this.options.selectForward&&1===this.datePicked.length&&t.isBefore(this.datePicked[0])&&e.classList.add(a.isLocked),this.options.selectBackward&&1===this.datePicked.length&&t.isAfter(this.datePicked[0])&&e.classList.add(a.isLocked),h.dateIsLocked(t,this.options,this.datePicked)&&e.classList.add(a.isLocked),this.options.highlightedDays.length)&&(this.options.highlightedDays.filter((function(e){return e instanceof Array?t.isBetween(e[0],e[1],"[]"):e.isSame(t,"day")})).length&&e.classList.add(a.isHighlighted));return e.tabIndex=e.classList.contains("is-locked")?-1:0,this.emit("render:day",e,t),e},e.prototype.renderFooter=function(){var t=document.createElement("div");if(t.className=a.containerFooter,this.options.footerHTML?t.innerHTML=this.options.footerHTML:t.innerHTML='\n \n \n \n ",this.options.singleMode){if(1===this.datePicked.length){var e=this.datePicked[0].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=e}}else if(1===this.datePicked.length&&t.querySelector("."+a.buttonApply).setAttribute("disabled",""),2===this.datePicked.length){e=this.datePicked[0].format(this.options.format,this.options.lang);var n=this.datePicked[1].format(this.options.format,this.options.lang);t.querySelector("."+a.previewDateRange).innerHTML=""+e+this.options.delimiter+n}return this.emit("render:footer",t),t},e.prototype.renderWeekNumber=function(t){var e=document.createElement("div"),n=t.getWeek(this.options.firstDay);return e.className=a.weekNumber,e.innerHTML=53===n&&0===t.getMonth()?"53 / 1":n,e},e.prototype.renderTooltip=function(){var t=document.createElement("div");return t.className=a.containerTooltip,t},e.prototype.weekdayName=function(t,e){return void 0===e&&(e="short"),new Date(1970,0,t,12,0,0,0).toLocaleString(this.options.lang,{weekday:e})},e.prototype.calcSkipDays=function(t){var e=t.getDay()-this.options.firstDay;return e<0&&(e+=7),e},e}(s.LPCore);e.Calendar=l},function(t,e,n){"use strict";var i,o=this&&this.__extends||(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),s=this&&this.__assign||function(){return(s=Object.assign||function(t){for(var e,n=1,i=arguments.length;n',nextMonth:'',reset:'\n \n \n '},tooltipText:{one:"day",other:"days"}},n.options=s(s({},n.options),e.element.dataset),Object.keys(n.options).forEach((function(t){"true"!==n.options[t]&&"false"!==n.options[t]||(n.options[t]="true"===n.options[t])}));var i=s(s({},n.options.dropdowns),e.dropdowns),o=s(s({},n.options.buttonText),e.buttonText),r=s(s({},n.options.tooltipText),e.tooltipText);n.options=s(s({},n.options),e),n.options.dropdowns=s({},i),n.options.buttonText=s({},o),n.options.tooltipText=s({},r),n.options.elementEnd||(n.options.allowRepick=!1),n.options.lockDays.length&&(n.options.lockDays=a.DateTime.convertArray(n.options.lockDays,n.options.lockDaysFormat)),n.options.highlightedDays.length&&(n.options.highlightedDays=a.DateTime.convertArray(n.options.highlightedDays,n.options.highlightedDaysFormat));var h=n.parseInput(),l=h[0],p=h[1];n.options.startDate&&(n.options.singleMode||n.options.endDate)&&(l=new a.DateTime(n.options.startDate,n.options.format,n.options.lang)),l&&n.options.endDate&&(p=new a.DateTime(n.options.endDate,n.options.format,n.options.lang)),l instanceof a.DateTime&&!isNaN(l.getTime())&&(n.options.startDate=l),n.options.startDate&&p instanceof a.DateTime&&!isNaN(p.getTime())&&(n.options.endDate=p),!n.options.singleMode||n.options.startDate instanceof a.DateTime||(n.options.startDate=null),n.options.singleMode||n.options.startDate instanceof a.DateTime&&n.options.endDate instanceof a.DateTime||(n.options.startDate=null,n.options.endDate=null);for(var c=0;cwindow.innerHeight,l=e.top+s-n.height>=n.height;h&&l&&(r=e.top+s-n.height)}if(/left|right/.test(i[0])||i[1]&&"auto"!==i[1]&&/left|right/.test(i[1]))a=/left|right/.test(i[0])?e[i[0]]+o:e[i[1]]+o,"right"!==i[0]&&"right"!==i[1]||(a-=n.width);else{a=e.left+o;h=e.left+n.width>window.innerWidth;var p=e.right+o-n.width>=0;h&&p&&(a=e.right+o-n.width)}return{left:a,top:r}},e}(r.EventEmitter);e.LPCore=l},function(t,e,n){"use strict";var i,o="object"==typeof Reflect?Reflect:null,s=o&&"function"==typeof o.apply?o.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};i=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var h=10;function l(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function p(t,e,n,i){var o,s,r,a;if("function"!=typeof n)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n);if(void 0===(s=t._events)?(s=t._events=Object.create(null),t._eventsCount=0):(void 0!==s.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),s=t._events),r=s[e]),void 0===r)r=s[e]=n,++t._eventsCount;else if("function"==typeof r?r=s[e]=i?[n,r]:[r,n]:i?r.unshift(n):r.push(n),(o=l(t))>0&&r.length>o&&!r.warned){r.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=t,h.type=e,h.count=r.length,a=h,console&&console.warn&&console.warn(a)}return t}function c(){for(var t=[],e=0;e0&&(r=e[0]),r instanceof Error)throw r;var a=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw a.context=r,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)s(h,this,e);else{var l=h.length,p=f(h,l);for(n=0;n=0;s--)if(n[s]===e||n[s].listener===e){r=n[s].listener,o=s;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},a.prototype.listeners=function(t){return u(this,t,!0)},a.prototype.rawListeners=function(t){return u(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):m.call(t,e)},a.prototype.listenerCount=m,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},function(t,e,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(t){for(var e,n=1,i=arguments.length;nthis.options.endDate.getTime()&&(this.options.endDate=this.options.startDate.clone(),this.options.startDate=new o.DateTime(t,this.options.format,this.options.lang)),this.updateInput())},s.Litepicker.prototype.setDateRange=function(t,e,n){void 0===n&&(n=!1),this.triggerElement=void 0;var i=new o.DateTime(t,this.options.format,this.options.lang),s=new o.DateTime(e,this.options.format,this.options.lang);(this.options.disallowLockDaysInRange?r.rangeIsLocked([i,s],this.options):r.dateIsLocked(i,this.options,[i,s])||r.dateIsLocked(s,this.options,[i,s]))&&!n?this.emit("error:range",[i,s]):(this.setStartDate(i),this.setEndDate(s),this.options.inlineMode&&this.render(),this.updateInput(),this.emit("selected",this.getStartDate(),this.getEndDate()))},s.Litepicker.prototype.gotoDate=function(t,e){void 0===e&&(e=0);var n=new o.DateTime(t);n.setDate(1),this.calendars[e]=n.clone(),this.render()},s.Litepicker.prototype.setLockDays=function(t){this.options.lockDays=o.DateTime.convertArray(t,this.options.lockDaysFormat),this.render()},s.Litepicker.prototype.setHighlightedDays=function(t){this.options.highlightedDays=o.DateTime.convertArray(t,this.options.highlightedDaysFormat),this.render()},s.Litepicker.prototype.setOptions=function(t){delete t.element,delete t.elementEnd,delete t.parentEl,t.startDate&&(t.startDate=new o.DateTime(t.startDate,this.options.format,this.options.lang)),t.endDate&&(t.endDate=new o.DateTime(t.endDate,this.options.format,this.options.lang));var e=i(i({},this.options.dropdowns),t.dropdowns),n=i(i({},this.options.buttonText),t.buttonText),s=i(i({},this.options.tooltipText),t.tooltipText);this.options=i(i({},this.options),t),this.options.dropdowns=i({},e),this.options.buttonText=i({},n),this.options.tooltipText=i({},s),!this.options.singleMode||this.options.startDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null),this.options.singleMode||this.options.startDate instanceof o.DateTime&&this.options.endDate instanceof o.DateTime||(this.options.startDate=null,this.options.endDate=null);for(var r=0;rMath.abs(i),l=e.options.numberOfMonths,c=null,s=!1,u="",d=Array.from(e.ui.querySelectorAll(".month-item"));if(a){var p=e.DateTime(e.ui.querySelector(".day-item").dataset.time),f=Number("".concat(1-Math.abs(r)/100)),m=0;if(r>0){m=-Math.abs(r),c=p.clone().add(l,"month");var b=e.options.maxDate;s=!b||c.isSameOrBefore(e.DateTime(b),"month"),u="next"}else{m=Math.abs(r),c=p.clone().subtract(l,"month");var h=e.options.minDate;s=!h||c.isSameOrAfter(e.DateTime(h),"month"),u="prev"}s&&d.map((function(e){e.style.opacity=f,e.style.transform="translateX(".concat(m,"px)")}))}Math.abs(r)+Math.abs(i)>100&&a&&c&&s&&(e.touchTargetMonth=u,e.gotoDate(c))}},u=function(t){e.touchTargetMonth||Array.from(e.ui.querySelectorAll(".month-item")).map((function(e){e.style.transform="translateX(0px)",e.style.opacity=1}));e.xTouchDown=null,e.yTouchDown=null};e.backdrop=document.createElement("div"),e.backdrop.className="litepicker-backdrop",e.backdrop.addEventListener("click",e.hide()),t.element&&t.element.parentNode&&t.element.parentNode.appendChild(e.backdrop),window.addEventListener("orientationchange",(function(n){window.addEventListener("resize",(function n(){if(i()&&e.isShowning()){var o=a();switch(o){case"landscape":t.numberOfMonths=2,t.numberOfColumns=2;break;default:t.numberOfMonths=1,t.numberOfColumns=1}e.ui.classList.toggle("mobilefriendly-portrait","portrait"===o),e.ui.classList.toggle("mobilefriendly-landscape","landscape"===o),e.render()}window.removeEventListener("resize",n)}))})),t.inlineMode&&i()&&(window.dispatchEvent(new Event("orientationchange")),window.dispatchEvent(new Event("resize"))),e.on("before:show",(function(t){if(e.triggerElement=t,!e.options.inlineMode&&i()){e.emit("mobilefriendly.before:show",t),e.ui.style.position="fixed",e.ui.style.display="block",l(),e.scrollToDate(t),e.render();var n=a();e.ui.classList.add("mobilefriendly"),e.ui.classList.toggle("mobilefriendly-portrait","portrait"===n),e.ui.classList.toggle("mobilefriendly-landscape","landscape"===n),e.ui.style.top="50%",e.ui.style.left="50%",e.ui.style.right=null,e.ui.style.bottom=null,e.ui.style.zIndex=e.options.zIndex,e.backdrop.style.display="block",e.backdrop.style.zIndex=e.options.zIndex-1,document.body.classList.add("litepicker-open"),(t||e.options.element).blur(),e.emit("mobilefriendly.show",t)}else i()&&(l(),e.render())})),e.on("render",(function(t){e.touchTargetMonth&&Array.from(e.ui.querySelectorAll(".month-item")).map((function(t){return t.classList.add("touch-target-".concat(e.touchTargetMonth))}));e.touchTargetMonth=null})),e.on("hide",(function(){document.body.classList.remove("litepicker-open"),e.backdrop.style.display="none",e.ui.classList.remove("mobilefriendly","mobilefriendly-portrait","mobilefriendly-landscape")})),e.on("destroy",(function(){e.backdrop&&e.backdrop.parentNode&&e.backdrop.parentNode.removeChild(e.backdrop)})),e.ui.addEventListener("touchstart",c,!!n&&{passive:!0}),e.ui.addEventListener("touchmove",s,!!n&&{passive:!0}),e.ui.addEventListener("touchend",u,!!n&&{passive:!0})}})},function(e,t,n){e.exports={litepickerBackdrop:"litepicker-backdrop",litepickerOpen:"litepicker-open",litepicker:"litepicker",mobilefriendly:"mobilefriendly",mobilefriendlyPortrait:"mobilefriendly-portrait",mobilefriendlyLandscape:"mobilefriendly-landscape",containerMonths:"container__months",monthItemHeader:"month-item-header",containerDays:"container__days",monthItem:"month-item",touchTargetNext:"touch-target-next",lpBounceTargetNext:"lp-bounce-target-next",touchTargetPrev:"touch-target-prev",lpBounceTargetPrev:"lp-bounce-target-prev"}}]); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/nocss/plugins/multiselect.js b/gin_ops/static/dist/libs/litepicker/dist/nocss/plugins/multiselect.js new file mode 100644 index 0000000..6ea0da4 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/nocss/plugins/multiselect.js @@ -0,0 +1,11 @@ +/*! + * + * plugins/multiselect.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: fc3887e0bb19d54c36db + * + */!function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=6)}({6:function(e,t,r){"use strict";r.r(t);r(7);function n(e){return function(e){if(Array.isArray(e))return i(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return i(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return i(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0){var n=e.pluralSelector(t),i=e.options.tooltipText[n]?e.options.tooltipText[n]:"[".concat(n,"]"),o="".concat(t," ").concat(i);r.innerText=o}};e.on("before:show",(function(){e.preMultipleDates=n(e.multipleDates)})),e.on("show",(function(){t()})),e.on("before:click",(function(r){if(r.classList.contains("day-item")){if(e.preventClick=!0,r.classList.contains("is-locked"))return void r.blur();var n=Number(r.dataset.time);r.classList.contains("is-selected")?(e.preMultipleDates=e.preMultipleDates.filter((function(e){return e!==n})),e.emit("multiselect.deselect",e.DateTime(n))):(e.preMultipleDates[e.preMultipleDates.length]=n,e.emit("multiselect.select",e.DateTime(n))),e.options.autoApply&&e.emit("button:apply"),e.render(),t()}})),e.on("render:day",(function(t){var r=e.preMultipleDates.filter((function(e){return e===Number(t.dataset.time)})).length,n=Number(e.options.multiselect.max);r?t.classList.add("is-selected"):n&&e.preMultipleDates.length>=n&&t.classList.add("is-locked")})),e.on("button:cancel",(function(){e.preMultipleDates.length=0})),e.on("button:apply",(function(){e.multipleDates=n(e.preMultipleDates).sort((function(e,t){return e-t}))})),e.on("clear:selection",(function(){e.clearMultipleDates(),e.render()})),e.clearMultipleDates=function(){e.preMultipleDates.length=0,e.multipleDates.length=0},e.getMultipleDates=function(){return e.multipleDates.map((function(t){return e.DateTime(t)}))},e.multipleDatesToString=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"YYYY-MM-DD",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:",";return e.multipleDates.map((function(r){return e.DateTime(r).format(t)})).join(r)}}})},7:function(e,t,r){e.exports={litepicker:"litepicker",containerDays:"container__days",dayItem:"day-item",isLocked:"is-locked",isSelected:"is-selected"}}}); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/nocss/plugins/ranges.js b/gin_ops/static/dist/libs/litepicker/dist/nocss/plugins/ranges.js new file mode 100644 index 0000000..25c08a6 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/nocss/plugins/ranges.js @@ -0,0 +1,11 @@ +/*! + * + * plugins/ranges.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: fc3887e0bb19d54c36db + * + */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}({4:function(e,t,n){"use strict";n.r(t);n(5);function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0?1:-1,i.dataset.start=a[0].getTime(),i.dataset.end=a[1].getTime(),i.addEventListener("click",(function(t){var r=t.target;if(r){var o=e.DateTime(Number(r.dataset.start)),a=e.DateTime(Number(r.dataset.end));n.autoApply?(e.setDateRange(o,a,n.force),e.emit("ranges.selected",o,a),e.hide()):(e.datePicked=[o,a],e.emit("ranges.preselect",o,a)),!e.options.inlineMode&&n.autoApply||e.gotoDate(o)}})),r.appendChild(i)})),t.querySelector(".container__main").prepend(r)}))}})},5:function(e,t,n){e.exports={litepicker:"litepicker",containerMain:"container__main",containerPredefinedRanges:"container__predefined-ranges"}}}); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/plugins/keyboardnav.js b/gin_ops/static/dist/libs/litepicker/dist/plugins/keyboardnav.js new file mode 100644 index 0000000..4aa4b97 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/plugins/keyboardnav.js @@ -0,0 +1,11 @@ +/*! + * + * plugins/keyboardnav.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: b9a648207aabe31b2912 + * + */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(a=r,c=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(c),"/*# ".concat(s," */")),i=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(i).concat([o]).join("\n")}var a,c,s;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(r)for(var i=0;iMath.abs(o),l=e.options.numberOfMonths,c=null,s=!1,u="",d=Array.from(e.ui.querySelectorAll(".month-item"));if(a){var p=e.DateTime(e.ui.querySelector(".day-item").dataset.time),f=Number("".concat(1-Math.abs(i)/100)),m=0;if(i>0){m=-Math.abs(i),c=p.clone().add(l,"month");var h=e.options.maxDate;s=!h||c.isSameOrBefore(e.DateTime(h),"month"),u="next"}else{m=Math.abs(i),c=p.clone().subtract(l,"month");var b=e.options.minDate;s=!b||c.isSameOrAfter(e.DateTime(b),"month"),u="prev"}s&&d.map((function(e){e.style.opacity=f,e.style.transform="translateX(".concat(m,"px)")}))}Math.abs(i)+Math.abs(o)>100&&a&&c&&s&&(e.touchTargetMonth=u,e.gotoDate(c))}},u=function(t){e.touchTargetMonth||Array.from(e.ui.querySelectorAll(".month-item")).map((function(e){e.style.transform="translateX(0px)",e.style.opacity=1}));e.xTouchDown=null,e.yTouchDown=null};e.backdrop=document.createElement("div"),e.backdrop.className="litepicker-backdrop",e.backdrop.addEventListener("click",e.hide()),t.element&&t.element.parentNode&&t.element.parentNode.appendChild(e.backdrop),window.addEventListener("orientationchange",(function(n){window.addEventListener("resize",(function n(){if(o()&&e.isShowning()){var r=a();switch(r){case"landscape":t.numberOfMonths=2,t.numberOfColumns=2;break;default:t.numberOfMonths=1,t.numberOfColumns=1}e.ui.classList.toggle("mobilefriendly-portrait","portrait"===r),e.ui.classList.toggle("mobilefriendly-landscape","landscape"===r),e.render()}window.removeEventListener("resize",n)}))})),t.inlineMode&&o()&&(window.dispatchEvent(new Event("orientationchange")),window.dispatchEvent(new Event("resize"))),e.on("before:show",(function(t){if(e.triggerElement=t,!e.options.inlineMode&&o()){e.emit("mobilefriendly.before:show",t),e.ui.style.position="fixed",e.ui.style.display="block",l(),e.scrollToDate(t),e.render();var n=a();e.ui.classList.add("mobilefriendly"),e.ui.classList.toggle("mobilefriendly-portrait","portrait"===n),e.ui.classList.toggle("mobilefriendly-landscape","landscape"===n),e.ui.style.top="50%",e.ui.style.left="50%",e.ui.style.right=null,e.ui.style.bottom=null,e.ui.style.zIndex=e.options.zIndex,e.backdrop.style.display="block",e.backdrop.style.zIndex=e.options.zIndex-1,document.body.classList.add("litepicker-open"),(t||e.options.element).blur(),e.emit("mobilefriendly.show",t)}else o()&&(l(),e.render())})),e.on("render",(function(t){e.touchTargetMonth&&Array.from(e.ui.querySelectorAll(".month-item")).map((function(t){return t.classList.add("touch-target-".concat(e.touchTargetMonth))}));e.touchTargetMonth=null})),e.on("hide",(function(){document.body.classList.remove("litepicker-open"),e.backdrop.style.display="none",e.ui.classList.remove("mobilefriendly","mobilefriendly-portrait","mobilefriendly-landscape")})),e.on("destroy",(function(){e.backdrop&&e.backdrop.parentNode&&e.backdrop.parentNode.removeChild(e.backdrop)})),e.ui.addEventListener("touchstart",c,!!n&&{passive:!0}),e.ui.addEventListener("touchmove",s,!!n&&{passive:!0}),e.ui.addEventListener("touchend",u,!!n&&{passive:!0})}})},function(e,t,n){var r=n(7);"string"==typeof r&&(r=[[e.i,r,""]]);var i={insert:function(e){var t=document.querySelector("head"),n=window._lastElementInsertedByStyleLoader;window.disableLitepickerStyles||(n?n.nextSibling?t.insertBefore(e,n.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),window._lastElementInsertedByStyleLoader=e)},singleton:!1};n(1)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(t=n(0)(!1)).push([e.i,':root {\n --litepicker-mobilefriendly-backdrop-color-bg: #000;\n}\n\n.litepicker-backdrop {\n display: none;\n background-color: var(--litepicker-mobilefriendly-backdrop-color-bg);\n opacity: 0.3;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.litepicker-open {\n overflow: hidden;\n}\n\n.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] {\n transform: translate(-50%, -50%);\n font-size: 1.1rem;\n --litepicker-container-months-box-shadow-color: #616161;\n}\n.litepicker.mobilefriendly-portrait {\n --litepicker-day-width: 13.5vw;\n --litepicker-month-width: calc(var(--litepicker-day-width) * 7);\n}\n.litepicker.mobilefriendly-landscape {\n --litepicker-day-width: 5.5vw;\n --litepicker-month-width: calc(var(--litepicker-day-width) * 7);\n}\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months {\n overflow: hidden;\n}\n\n.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] .container__months .month-item-header {\n height: var(--litepicker-day-width);\n}\n\n.litepicker.mobilefriendly[data-plugins*="mobilefriendly"] .container__days > div {\n height: var(--litepicker-day-width);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item {\n transform-origin: center;\n}\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item.touch-target-next {\n animation-name: lp-bounce-target-next;\n animation-duration: .5s;\n animation-timing-function: ease;\n}\n\n.litepicker[data-plugins*="mobilefriendly"] .container__months .month-item.touch-target-prev {\n animation-name: lp-bounce-target-prev;\n animation-duration: .5s;\n animation-timing-function: ease;\n}\n\n@keyframes lp-bounce-target-next {\n from {\n transform: translateX(100px) scale(0.5);\n }\n to {\n transform: translateX(0px) scale(1);\n }\n}\n\n@keyframes lp-bounce-target-prev {\n from {\n transform: translateX(-100px) scale(0.5);\n }\n to {\n transform: translateX(0px) scale(1);\n }\n}',""]),e.exports=t}]); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/plugins/multiselect.js b/gin_ops/static/dist/libs/litepicker/dist/plugins/multiselect.js new file mode 100644 index 0000000..7689309 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/plugins/multiselect.js @@ -0,0 +1,11 @@ +/*! + * + * plugins/multiselect.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: b9a648207aabe31b2912 + * + */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=11)}([function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(l=r,a=btoa(unescape(encodeURIComponent(JSON.stringify(l)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(c," */")),o=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(o).concat([i]).join("\n")}var l,a,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var r=e.pluralSelector(t),i=e.options.tooltipText[r]?e.options.tooltipText[r]:"[".concat(r,"]"),o="".concat(t," ").concat(i);n.innerText=o}};e.on("before:show",(function(){e.preMultipleDates=r(e.multipleDates)})),e.on("show",(function(){t()})),e.on("before:click",(function(n){if(n.classList.contains("day-item")){if(e.preventClick=!0,n.classList.contains("is-locked"))return void n.blur();var r=Number(n.dataset.time);n.classList.contains("is-selected")?(e.preMultipleDates=e.preMultipleDates.filter((function(e){return e!==r})),e.emit("multiselect.deselect",e.DateTime(r))):(e.preMultipleDates[e.preMultipleDates.length]=r,e.emit("multiselect.select",e.DateTime(r))),e.options.autoApply&&e.emit("button:apply"),e.render(),t()}})),e.on("render:day",(function(t){var n=e.preMultipleDates.filter((function(e){return e===Number(t.dataset.time)})).length,r=Number(e.options.multiselect.max);n?t.classList.add("is-selected"):r&&e.preMultipleDates.length>=r&&t.classList.add("is-locked")})),e.on("button:cancel",(function(){e.preMultipleDates.length=0})),e.on("button:apply",(function(){e.multipleDates=r(e.preMultipleDates).sort((function(e,t){return e-t}))})),e.on("clear:selection",(function(){e.clearMultipleDates(),e.render()})),e.clearMultipleDates=function(){e.preMultipleDates.length=0,e.multipleDates.length=0},e.getMultipleDates=function(){return e.multipleDates.map((function(t){return e.DateTime(t)}))},e.multipleDatesToString=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"YYYY-MM-DD",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:",";return e.multipleDates.map((function(n){return e.DateTime(n).format(t)})).join(n)}}})},function(e,t,n){var r=n(13);"string"==typeof r&&(r=[[e.i,r,""]]);var i={insert:function(e){var t=document.querySelector("head"),n=window._lastElementInsertedByStyleLoader;window.disableLitepickerStyles||(n?n.nextSibling?t.insertBefore(e,n.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),window._lastElementInsertedByStyleLoader=e)},singleton:!1};n(1)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(t=n(0)(!1)).push([e.i,':root {\n --litepicker-multiselect-is-selected-color-bg: #2196f3;\n --litepicker-multiselect-is-selected-color: #fff;\n --litepicker-multiselect-hover-color-bg: #2196f3;\n --litepicker-multiselect-hover-color: #fff;\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item {\n position: relative;\n z-index: 1;\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item:not(.is-locked):after {\n content: \'\';\n position: absolute;\n width: 27px;\n height: 27px;\n top: 50%;\n left: 50%;\n z-index: -1;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item:not(.is-locked):hover {\n box-shadow: none;\n color: var(--litepicker-day-color);\n font-weight: bold;\n}\n\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected,\n.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected:hover {\n color: var(--litepicker-multiselect-is-selected-color);\n}\n\n.litepicker[data-plugins*="multiselect"] .container__days .day-item.is-selected:after {\n color: var(--litepicker-multiselect-is-selected-color);\n background-color: var(--litepicker-multiselect-is-selected-color-bg);\n}\n',""]),e.exports=t}]); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/plugins/ranges.js b/gin_ops/static/dist/libs/litepicker/dist/plugins/ranges.js new file mode 100644 index 0000000..ff586f9 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/plugins/ranges.js @@ -0,0 +1,11 @@ +/*! + * + * plugins/ranges.js + * Litepicker v2.0.12 (https://github.com/wakirin/Litepicker) + * Package: litepicker (https://www.npmjs.com/package/litepicker) + * License: MIT (https://github.com/wakirin/Litepicker/blob/master/LICENCE.md) + * Copyright 2019-2021 Rinat G. + * + * Hash: b9a648207aabe31b2912 + * + */!function(e){var n={};function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(r,a,function(n){return e[n]}.bind(null,a));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=8)}([function(e,n,t){"use strict";e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t=function(e,n){var t=e[1]||"",r=e[3];if(!r)return t;if(n&&"function"==typeof btoa){var a=(i=r,s=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),"/*# ".concat(c," */")),o=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[t].concat(o).concat([a]).join("\n")}var i,s,c;return[t].join("\n")}(n,e);return n[2]?"@media ".concat(n[2]," {").concat(t,"}"):t})).join("")},n.i=function(e,t,r){"string"==typeof e&&(e=[[null,e,""]]);var a={};if(r)for(var o=0;o=0?1:-1,i.dataset.start=o[0].getTime(),i.dataset.end=o[1].getTime(),i.addEventListener("click",(function(n){var r=n.target;if(r){var a=e.DateTime(Number(r.dataset.start)),o=e.DateTime(Number(r.dataset.end));t.autoApply?(e.setDateRange(a,o,t.force),e.emit("ranges.selected",a,o),e.hide()):(e.datePicked=[a,o],e.emit("ranges.preselect",a,o)),!e.options.inlineMode&&t.autoApply||e.gotoDate(a)}})),r.appendChild(i)})),n.querySelector(".container__main").prepend(r)}))}})},function(e,n,t){var r=t(10);"string"==typeof r&&(r=[[e.i,r,""]]);var a={insert:function(e){var n=document.querySelector("head"),t=window._lastElementInsertedByStyleLoader;window.disableLitepickerStyles||(t?t.nextSibling?n.insertBefore(e,t.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),window._lastElementInsertedByStyleLoader=e)},singleton:!1};t(1)(r,a);r.locals&&(e.exports=r.locals)},function(e,n,t){(n=t(0)(!1)).push([e.i,'.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n background: var(--litepicker-container-months-color-bg);\n box-shadow: -2px 0px 5px var(--litepicker-footer-box-shadow-color);\n border-radius: 3px;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="left"] > .container__main {\n /* */\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main{\n flex-direction: row-reverse;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main > .container__predefined-ranges {\n box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color);\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="top"] > .container__main {\n flex-direction: column;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="top"] > .container__main > .container__predefined-ranges {\n flex-direction: row;\n box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color);\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="bottom"] > .container__main {\n flex-direction: column-reverse;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="bottom"] > .container__main > .container__predefined-ranges {\n flex-direction: row;\n box-shadow: 2px 0px 2px var(--litepicker-footer-box-shadow-color);\n}\n.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges button {\n padding: 5px;\n margin: 2px 0;\n}\n.litepicker[data-plugins*="ranges"][data-ranges-position="left"] > .container__main > .container__predefined-ranges button,\n.litepicker[data-plugins*="ranges"][data-ranges-position="right"] > .container__main > .container__predefined-ranges button{\n width: 100%;\n text-align: left;\n}\n.litepicker[data-plugins*="ranges"] > .container__main > .container__predefined-ranges button:hover {\n cursor: default;\n opacity: .6;\n}',""]),e.exports=n}]); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/calendar.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/calendar.d.ts new file mode 100644 index 0000000..493692a --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/calendar.d.ts @@ -0,0 +1,14 @@ +import { LPCore } from './core'; +import { DateTime } from './datetime'; +import { ILPConfiguration } from './interfaces'; +export declare class Calendar extends LPCore { + constructor(options: ILPConfiguration); + protected render(): void; + protected renderMonth(date: DateTime, calendarIdx: number): HTMLDivElement; + protected renderDay(date: DateTime): HTMLDivElement; + protected renderFooter(): HTMLDivElement; + protected renderWeekNumber(date: any): HTMLDivElement; + protected renderTooltip(): HTMLDivElement; + private weekdayName; + private calcSkipDays; +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/core.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/core.d.ts new file mode 100644 index 0000000..f807e48 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/core.d.ts @@ -0,0 +1,23 @@ +/// +import { EventEmitter } from 'events'; +import { DateTime } from './datetime'; +import { ILPConfiguration } from './interfaces'; +export declare class LPCore extends EventEmitter { + static add(name: string, data: object): void; + protected plugins: string[]; + protected ui: HTMLElement; + protected datePicked: DateTime[]; + protected nextFocusElement: HTMLElement; + protected calendars: DateTime[]; + protected readonly pluralSelector: (arg: number) => string; + protected options: ILPConfiguration; + constructor(options: ILPConfiguration); + DateTime(date: any, format?: any): DateTime; + protected init(): void; + protected parseInput(): DateTime[]; + protected isShowning(): boolean; + protected findPosition(element: any): { + left: number; + top: number; + }; +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/datetime.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/datetime.d.ts new file mode 100644 index 0000000..c8a0452 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/datetime.d.ts @@ -0,0 +1,41 @@ +export declare class DateTime { + static parseDateTime(date: Date | DateTime | string | number, format?: string, lang?: string): Date; + static convertArray(array: Array, format: string): Array; + static getDateZeroTime(date: Date): Date; + private static regex; + private static readonly MONTH_JS; + private static shortMonths; + private static longMonths; + private static formatPatterns; + protected lang: string; + private dateInstance; + constructor(date?: Date | DateTime | number | string, format?: object | string, lang?: string); + toJSDate(): Date; + toLocaleString(arg0: string, arg1: Intl.DateTimeFormatOptions): string; + toDateString(): string; + getSeconds(): number; + getDay(): number; + getTime(): number; + getDate(): number; + getMonth(): number; + getFullYear(): number; + setMonth(arg: number): number; + setHours(hours?: number, minutes?: number, seconds?: number, ms?: number): void; + setSeconds(arg: number): number; + setDate(arg: number): number; + setFullYear(arg: number): number; + getWeek(firstDay: number): number; + clone(): DateTime; + isBetween(date1: DateTime, date2: DateTime, inclusivity?: string): boolean; + isBefore(date: DateTime, unit?: string): boolean; + isSameOrBefore(date: DateTime, unit?: string): boolean; + isAfter(date: DateTime, unit?: string): boolean; + isSameOrAfter(date: DateTime, unit?: string): boolean; + isSame(date: DateTime, unit?: string): boolean; + add(duration: number, unit?: string): DateTime; + subtract(duration: number, unit?: string): DateTime; + diff(date: DateTime, unit?: string): number; + format(format: object | string, lang?: string): string; + private timestamp; + private formatTokens; +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/index.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/index.d.ts new file mode 100644 index 0000000..4c94106 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/index.d.ts @@ -0,0 +1,4 @@ +import { Litepicker } from './litepicker'; +import './methods'; +export { Litepicker }; +export default Litepicker; diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/interfaces.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/interfaces.d.ts new file mode 100644 index 0000000..98cb7da --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/interfaces.d.ts @@ -0,0 +1,80 @@ +import { DateTime } from './datetime'; +import { Litepicker } from './litepicker'; +interface ILPOptionDropdowns { + minYear: number; + maxYear: number | null; + months: boolean; + years: boolean | string; +} +interface ILPOptionButtonText { + apply: string; + cancel: string; + previousMonth: string; + nextMonth: string; + reset: string; +} +interface ILPOptionTooltip { + one: string; + other: string; + many?: string; +} +export interface ILPConfiguration { + element: HTMLElement | HTMLInputElement; + elementEnd?: HTMLElement | HTMLInputElement | null; + parentEl?: HTMLElement | null; + firstDay?: number; + format?: string | object; + lang?: string; + delimiter?: string; + numberOfMonths?: number; + numberOfColumns?: number; + startDate?: DateTime | Date | string | number; + endDate?: DateTime | Date | string | number; + zIndex?: number; + minDate?: DateTime | Date | string | number; + maxDate?: DateTime | Date | string | number; + minDays?: number; + maxDays?: number; + switchingMonths?: number | null; + selectForward?: boolean; + selectBackward?: boolean; + splitView?: boolean; + inlineMode?: boolean; + singleMode?: boolean; + autoApply?: boolean; + allowRepick?: boolean; + showWeekNumbers?: boolean; + showTooltip?: boolean; + scrollToDate?: boolean; + mobileFriendly?: boolean; + resetButton?: boolean | object; + autoRefresh?: boolean; + lockDaysFormat?: string; + lockDays?: any[]; + disallowLockDaysInRange?: boolean; + lockDaysInclusivity?: string; + lockDaysFilter?: (date1: DateTime | null, date2: DateTime | null, totalPicked: number) => boolean; + highlightedDaysFormat?: string; + highlightedDays?: any[]; + dropdowns?: ILPOptionDropdowns; + buttonText?: ILPOptionButtonText; + tooltipText?: ILPOptionTooltip; + tooltipPluralSelector?: (arg: number) => string; + footerHTML?: string | null; + setup?: (picker: Litepicker) => void; + tooltipNumber?: (totalDays: number) => number; + plugins?: string[]; + position?: string; + ranges?: { + position?: string; + customRanges?: object; + force?: boolean; + }; + multiselect?: { + max?: number | null; + }; + keyboardnav?: { + firstTabIndex?: number; + }; +} +export {}; diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/litepicker.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/litepicker.d.ts new file mode 100644 index 0000000..aaeaf0e --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/litepicker.d.ts @@ -0,0 +1,25 @@ +import { Calendar } from './calendar'; +import { ILPConfiguration } from './interfaces'; +export declare class Litepicker extends Calendar { + preventClick: boolean; + protected triggerElement: any; + protected backdrop: any; + constructor(options: ILPConfiguration); + protected scrollToDate(el: any): void; + private bindEvents; + private updateInput; + private isSamePicker; + private shouldShown; + private shouldResetDatePicked; + private shouldSwapDatePicked; + private shouldCheckLockDays; + private onClick; + private showTooltip; + private hideTooltip; + private shouldAllowMouseEnter; + private shouldAllowRepick; + private isDayItem; + private onMouseEnter; + private onMouseLeave; + private onInput; +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/methods.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/methods.d.ts new file mode 100644 index 0000000..aa6f6af --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/methods.d.ts @@ -0,0 +1,20 @@ +import { DateTime } from './datetime'; +declare module './litepicker' { + interface Litepicker { + show(element?: any): void; + hide(): void; + gotoDate(date: any, idx?: any): void; + clearSelection(): void; + destroy(): void; + getDate(): DateTime | null; + getStartDate(): DateTime | null; + getEndDate(): DateTime | null; + setDate(date: any): void; + setStartDate(date: any): void; + setEndDate(date: any): void; + setDateRange(date1: any, date2: any): void; + setLockDays(array: any): void; + setHighlightedDays(array: any): void; + setOptions(options: any): void; + } +} diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/utils.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/utils.d.ts new file mode 100644 index 0000000..a56a832 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/utils.d.ts @@ -0,0 +1,4 @@ +import { DateTime } from './datetime'; +export declare function findNestedMonthItem(monthItem: Element): number; +export declare function dateIsLocked(date: DateTime, options: any, pickedDates: DateTime[]): boolean; +export declare function rangeIsLocked(days: DateTime[], options: any): boolean; diff --git a/gin_ops/static/dist/libs/litepicker/dist/types/window.d.ts b/gin_ops/static/dist/libs/litepicker/dist/types/window.d.ts new file mode 100644 index 0000000..c2474f9 --- /dev/null +++ b/gin_ops/static/dist/libs/litepicker/dist/types/window.d.ts @@ -0,0 +1,6 @@ +declare global { + interface Window { + Litepicker: any; + } +} +export {}; diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.css b/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.css new file mode 100644 index 0000000..23152a4 --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.css @@ -0,0 +1,577 @@ +.clr-picker { + display: none; + flex-wrap: wrap; + position: absolute; + width: 200px; + z-index: 1000; + border-radius: 10px; + background-color: #fff; + justify-content: flex-end; + direction: ltr; + box-shadow: 0 0 5px rgba(0,0,0,.05), 0 5px 20px rgba(0,0,0,.1); + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; +} + +.clr-picker.clr-open, +.clr-picker[data-inline="true"] { + display: flex; +} + +.clr-picker[data-inline="true"] { + position: relative; +} + +.clr-gradient { + position: relative; + width: 100%; + height: 100px; + margin-bottom: 15px; + border-radius: 3px 3px 0 0; + background-image: linear-gradient(rgba(0,0,0,0), #000), linear-gradient(90deg, #fff, currentColor); + cursor: pointer; +} + +.clr-marker { + position: absolute; + width: 12px; + height: 12px; + margin: -6px 0 0 -6px; + border: 1px solid #fff; + border-radius: 50%; + background-color: currentColor; + cursor: pointer; +} + +.clr-picker input[type="range"]::-webkit-slider-runnable-track { + width: 100%; + height: 8px; +} + +.clr-picker input[type="range"]::-webkit-slider-thumb { + width: 8px; + height: 8px; + -webkit-appearance: none; +} + +.clr-picker input[type="range"]::-moz-range-track { + width: 100%; + height: 8px; + border: 0; +} + +.clr-picker input[type="range"]::-moz-range-thumb { + width: 8px; + height: 8px; + border: 0; +} + +.clr-hue { + background-image: linear-gradient(to right, #f00 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #f00 100%); +} + +.clr-hue, +.clr-alpha { + position: relative; + width: calc(100% - 40px); + height: 8px; + margin: 5px 20px; + border-radius: 4px; +} + +.clr-alpha span { + display: block; + height: 100%; + width: 100%; + border-radius: inherit; + background-image: linear-gradient(90deg, rgba(0,0,0,0), currentColor); +} + +.clr-hue input, +.clr-alpha input { + position: absolute; + width: calc(100% + 16px); + height: 16px; + left: -8px; + top: -4px; + margin: 0; + background-color: transparent; + opacity: 0; + cursor: pointer; + appearance: none; + -webkit-appearance: none; +} + +.clr-hue div, +.clr-alpha div { + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 50%; + margin-left: -8px; + transform: translateY(-50%); + border: 2px solid #fff; + border-radius: 50%; + background-color: currentColor; + box-shadow: 0 0 1px #888; + pointer-events: none; +} + +.clr-alpha div:before { + content: ''; + position: absolute; + height: 100%; + width: 100%; + left: 0; + top: 0; + border-radius: 50%; + background-color: currentColor; +} + +.clr-format { + display: none; + order: 1; + width: calc(100% - 40px); + margin: 0 20px 20px; +} + +.clr-segmented { + display: flex; + position: relative; + width: 100%; + margin: 0; + padding: 0; + border: 1px solid #ddd; + border-radius: 15px; + box-sizing: border-box; + color: #999; + font-size: 12px; +} + +.clr-segmented input, +.clr-segmented legend { + position: absolute; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border: 0; + left: 0; + top: 0; + opacity: 0; + pointer-events: none; +} + +.clr-segmented label { + flex-grow: 1; + margin: 0; + padding: 4px 0; + font-size: inherit; + font-weight: normal; + line-height: initial; + text-align: center; + cursor: pointer; +} + +.clr-segmented label:first-of-type { + border-radius: 10px 0 0 10px; +} + +.clr-segmented label:last-of-type { + border-radius: 0 10px 10px 0; +} + +.clr-segmented input:checked + label { + color: #fff; + background-color: #666; +} + +.clr-swatches { + order: 2; + width: calc(100% - 32px); + margin: 0 16px; +} + +.clr-swatches div { + display: flex; + flex-wrap: wrap; + padding-bottom: 12px; + justify-content: center; +} + +.clr-swatches button { + position: relative; + width: 20px; + height: 20px; + margin: 0 4px 6px 4px; + padding: 0; + border: 0; + border-radius: 50%; + color: inherit; + text-indent: -1000px; + white-space: nowrap; + overflow: hidden; + cursor: pointer; +} + +.clr-swatches button:after { + content: ''; + display: block; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + border-radius: inherit; + background-color: currentColor; + box-shadow: inset 0 0 0 1px rgba(0,0,0,.1); +} + +input.clr-color { + order: 1; + width: calc(100% - 80px); + height: 32px; + margin: 15px 20px 20px auto; + padding: 0 10px; + border: 1px solid #ddd; + border-radius: 16px; + color: #444; + background-color: #fff; + font-family: sans-serif; + font-size: 14px; + text-align: center; + box-shadow: none; +} + +input.clr-color:focus { + outline: none; + border: 1px solid #1e90ff; +} + +.clr-close, +.clr-clear { + display: none; + order: 2; + height: 24px; + margin: 0 20px 20px; + padding: 0 20px; + border: 0; + border-radius: 12px; + color: #fff; + background-color: #666; + font-family: inherit; + font-size: 12px; + font-weight: 400; + cursor: pointer; +} + +.clr-close { + display: block; + margin: 0 20px 20px auto; +} + +.clr-preview { + position: relative; + width: 32px; + height: 32px; + margin: 15px 0 20px 20px; + border-radius: 50%; + overflow: hidden; +} + +.clr-preview:before, +.clr-preview:after { + content: ''; + position: absolute; + height: 100%; + width: 100%; + left: 0; + top: 0; + border: 1px solid #fff; + border-radius: 50%; +} + +.clr-preview:after { + border: 0; + background-color: currentColor; + box-shadow: inset 0 0 0 1px rgba(0,0,0,.1); +} + +.clr-preview button { + position: absolute; + width: 100%; + height: 100%; + z-index: 1; + margin: 0; + padding: 0; + border: 0; + border-radius: 50%; + outline-offset: -2px; + background-color: transparent; + text-indent: -9999px; + cursor: pointer; + overflow: hidden; +} + +.clr-marker, +.clr-hue div, +.clr-alpha div, +.clr-color { + box-sizing: border-box; +} + +.clr-field { + display: inline-block; + position: relative; + color: transparent; +} + +.clr-field input { + margin: 0; + direction: ltr; +} + +.clr-field.clr-rtl input { + text-align: right; +} + +.clr-field button { + position: absolute; + width: 30px; + height: 100%; + right: 0; + top: 50%; + transform: translateY(-50%); + margin: 0; + padding: 0; + border: 0; + color: inherit; + text-indent: -1000px; + white-space: nowrap; + overflow: hidden; + pointer-events: none; +} + +.clr-field.clr-rtl button { + right: auto; + left: 0; +} + +.clr-field button:after { + content: ''; + display: block; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + border-radius: inherit; + background-color: currentColor; + box-shadow: inset 0 0 1px rgba(0,0,0,.5); +} + +.clr-alpha, +.clr-alpha div, +.clr-swatches button, +.clr-preview:before, +.clr-field button { + background-image: repeating-linear-gradient(45deg, #aaa 25%, transparent 25%, transparent 75%, #aaa 75%, #aaa), repeating-linear-gradient(45deg, #aaa 25%, #fff 25%, #fff 75%, #aaa 75%, #aaa); + background-position: 0 0, 4px 4px; + background-size: 8px 8px; +} + +.clr-marker:focus { + outline: none; +} + +.clr-keyboard-nav .clr-marker:focus, +.clr-keyboard-nav .clr-hue input:focus + div, +.clr-keyboard-nav .clr-alpha input:focus + div, +.clr-keyboard-nav .clr-segmented input:focus + label { + outline: none; + box-shadow: 0 0 0 2px #1e90ff, 0 0 2px 2px #fff; +} + +.clr-picker[data-alpha="false"] .clr-alpha { + display: none; +} + +.clr-picker[data-minimal="true"] { + padding-top: 16px; +} + +.clr-picker[data-minimal="true"] .clr-gradient, +.clr-picker[data-minimal="true"] .clr-hue, +.clr-picker[data-minimal="true"] .clr-alpha, +.clr-picker[data-minimal="true"] .clr-color, +.clr-picker[data-minimal="true"] .clr-preview { + display: none; +} + +/** Dark theme **/ + +.clr-dark { + background-color: #444; +} + +.clr-dark .clr-segmented { + border-color: #777; +} + +.clr-dark .clr-swatches button:after { + box-shadow: inset 0 0 0 1px rgba(255,255,255,.3); +} + +.clr-dark input.clr-color { + color: #fff; + border-color: #777; + background-color: #555; +} + +.clr-dark input.clr-color:focus { + border-color: #1e90ff; +} + +.clr-dark .clr-preview:after { + box-shadow: inset 0 0 0 1px rgba(255,255,255,.5); +} + +.clr-dark .clr-alpha, +.clr-dark .clr-alpha div, +.clr-dark .clr-swatches button, +.clr-dark .clr-preview:before { + background-image: repeating-linear-gradient(45deg, #666 25%, transparent 25%, transparent 75%, #888 75%, #888), repeating-linear-gradient(45deg, #888 25%, #444 25%, #444 75%, #888 75%, #888); +} + +/** Polaroid theme **/ + +.clr-picker.clr-polaroid { + border-radius: 6px; + box-shadow: 0 0 5px rgba(0,0,0,.1), 0 5px 30px rgba(0,0,0,.2); +} + +.clr-picker.clr-polaroid:before { + content: ''; + display: block; + position: absolute; + width: 16px; + height: 10px; + left: 20px; + top: -10px; + border: solid transparent; + border-width: 0 8px 10px 8px; + border-bottom-color: currentColor; + box-sizing: border-box; + color: #fff; + filter: drop-shadow(0 -4px 3px rgba(0,0,0,.1)); + pointer-events: none; +} + +.clr-picker.clr-polaroid.clr-dark:before { + color: #444; +} + +.clr-picker.clr-polaroid.clr-left:before { + left: auto; + right: 20px; +} + +.clr-picker.clr-polaroid.clr-top:before { + top: auto; + bottom: -10px; + transform: rotateZ(180deg); +} + +.clr-polaroid .clr-gradient { + width: calc(100% - 20px); + height: 120px; + margin: 10px; + border-radius: 3px; +} + +.clr-polaroid .clr-hue, +.clr-polaroid .clr-alpha { + width: calc(100% - 30px); + height: 10px; + margin: 6px 15px; + border-radius: 5px; +} + +.clr-polaroid .clr-hue div, +.clr-polaroid .clr-alpha div { + box-shadow: 0 0 5px rgba(0,0,0,.2); +} + +.clr-polaroid .clr-format { + width: calc(100% - 20px); + margin: 0 10px 15px; +} + +.clr-polaroid .clr-swatches { + width: calc(100% - 12px); + margin: 0 6px; +} +.clr-polaroid .clr-swatches div { + padding-bottom: 10px; +} + +.clr-polaroid .clr-swatches button { + width: 22px; + height: 22px; +} + +.clr-polaroid input.clr-color { + width: calc(100% - 60px); + margin: 10px 10px 15px auto; +} + +.clr-polaroid .clr-clear { + margin: 0 10px 15px 10px; +} + +.clr-polaroid .clr-close { + margin: 0 10px 15px auto; +} + +.clr-polaroid .clr-preview { + margin: 10px 0 15px 10px; +} + +/** Large theme **/ + +.clr-picker.clr-large { + width: 275px; +} + +.clr-large .clr-gradient { + height: 150px; +} + +.clr-large .clr-swatches button { + width: 22px; + height: 22px; +} + +/** Pill (horizontal) theme **/ + +.clr-picker.clr-pill { + width: 380px; + padding-left: 180px; + box-sizing: border-box; +} + +.clr-pill .clr-gradient { + position: absolute; + width: 180px; + height: 100%; + left: 0; + top: 0; + margin-bottom: 0; + border-radius: 3px 0 0 3px; +} + +.clr-pill .clr-hue { + margin-top: 20px; +} \ No newline at end of file diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.d.ts b/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.d.ts new file mode 100644 index 0000000..3bd8525 --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.d.ts @@ -0,0 +1,475 @@ +/** + * Converts an input field to a color picker input. + */ +declare function Coloris(opts: Coloris.ColorisOptions): void; + +declare global { + interface GlobalEventHandlersEventMap { + "coloris:pick": CustomEvent; + } +} + +declare namespace Coloris { + /** + * All color themes supported by the color picker. More themes might be added + * in the future. + */ + type Theme = + | "default" + | "large" + | "polaroid" + | "pill"; + + /** + * All theme modes. + */ + type ThemeMode = + | "light" + | "dark" + | "auto"; + + /** + * Color format used by the color picker. The format affects which value is + * shown in the input field. + * - `hex` outputs `#RRGGBB` or `#RRGGBBAA`. + * - `rgb` outputs `rgb(R, G, B)` or `rgba(R, G, B, A)`. + * - `hsl` outputs `hsl(H, S, L)` or `hsla(H, S, L, A)`. + * - `auto` guesses the format from the active input field. Defaults to `hex` if + * it fails. + * - `mixed` outputs `#RRGGBB` when alpha is 1; otherwise `rgba(R, G, B, A)`. + */ + type ColorFormat = + | "hex" + | "rgb" + | "hsl" + | "auto" + | "mixed"; + + /** + * A function that is called whenever a new color is picked. + * + * @param color The newly selected color, as a CSS color string. + * @since 0.18.0 + */ + type OnChangeCallback = (color: string) => void; + + interface Accessibility { + /** + * @default "Open color picker" + */ + open: string; + + /** + * @default "Close color picker" + */ + close: string; + + /** + * @default "Clear the selected color" + */ + clear: string; + + /** + * @default "Saturation: {s}. Brightness: {v}." + */ + marker: string; + + /** + * @default "Hue slider" + */ + hueSlider: string; + + /** + * @default "Opacity slider" + */ + alphaSlider: string; + + /** + * @default "Color swatch" + */ + input: string; + + /** + * @default "Color format" + */ + format: string; + + /** + * @default "Color swatch" + */ + swatch: string; + + /** + * @default "Saturation and brightness selector. Use up, down, left and right arrow keys to select." + */ + instruction: string; + } + + /** + * Configuration for the optional clear button on the color picker. + * @deprecated Use the `clearLabel` setting to specify the label. + */ + interface ClearButtonOptions { + /** + * Whether the clear button is displayed when the color picker is opened. + */ + show: boolean; + + /** + * The label text shown on the clear button. + */ + label: string; + } + + /** + * Configuration for the optional close button on the color picker. + * @deprecated Use the `closeLabel` setting to specify the label. + */ + interface CloseButtonOptions { + /** + * Whether the close button is displayed when the color picker is opened. + */ + show: boolean; + + /** + * The label text shown on the close button. + */ + label: string; + } + + interface PickEventData { + /** + * The newly selected color which was picked. + */ + color: string; + } + + /** + * Settings that can be configured for each color picker instance separately. + * @since 0.15.0 + */ + interface ColorisVirtualInstanceOptions { + /** + * CSS selector for the parent. + * + * The default behavior is to append the color picker's dialog to the end of the document's + * body. but it is possible to append it to a custom parent instead. This is especially useful + * if the color fields are in a scrollable container and you want color picker' dialog to stay + * anchored to them. You will need to set the position of the container to relative or absolute. + * Note: This should be a scrollable container with enough space to display the picker. + * + * @default null + */ + parent?: null | string; + + /** + * The color theme to use for the color picker. More themes might be added + * in the future. Available themes: default, large, polaroid. + * + * @default "default" + */ + theme?: Theme; + + /** + * Set the theme to light or dark mode: + * - light: light mode. + * - dark: dark mode. + * - auto: automatically enables dark mode when the user prefers a dark color scheme. + * + * @default "light" + */ + themeMode?: ThemeMode, + + /** + * The margin in pixels between the input fields and the color picker's + * dialog. + * + * @default 2 + */ + margin?: number; + + /** + * Sets the preferred color string format. The format affects which value is + * shown in the input field. See {@link ColorFormat} for more details. + * + * @default "hex" + */ + format?: ColorFormat; + + /** + * Set to true to enable format toggle buttons in the color picker dialog. + * + * This will also force the format to auto. + * + * @default true + */ + formatToggle?: boolean; + + /** + * Focus the color value input when the color picker dialog is opened. + * + * @default true + */ + focusInput?: boolean; + + /** + * Select and focus the color value input when the color picker dialog is opened. + * + * @default false + */ + selectInput?: boolean; + + /** + * Set to true to hide all the color picker widgets (spectrum, hue, ...) except the swatches. + * + * @default false + */ + swatchesOnly?: boolean; + + /** + * Enable or disable alpha support. + * + * When disabled, it will strip the alpha value from the existing color + * value in all formats. + * + * @default true + */ + alpha?: boolean; + + /** + * Set to true to always include the alpha value in the color value even if the opacity is 100%. + * + * @default false + */ + forceAlpha?: boolean, + + /** + * Whether to show an optional clear button. Use `clearLabel` to set the label. + * + * Note that this should be a boolean, a `ClearButtonOptions` object is still + * supported for backwards compatibility, but it is deprecated. + * + * @default false + */ + clearButton?: boolean | ClearButtonOptions; + + /** + * Set the label of the clear button. + * @default Clear + * @since 0.17.0 + */ + clearLabel?: string, + + /** + * Whether to show an optional close button. Use `closeLabel` to set the label. + * + * Note that this should be a boolean, a `CloseButtonOptions` object is still + * supported for backwards compatibility, but it is deprecated. + * + * @default false + */ + closeButton?: boolean | CloseButtonOptions; + + /** + * Set the label of the close button. + * + * @default Close + * @since 0.17.0 + */ + closeLabel?: string; + + /** + * An array of the desired color swatches to display. If omitted or the + * array is empty, the color swatches will be disabled. + * + * @default [] + */ + swatches?: string[]; + + /** + * A function that is called whenever a new color is picked. + * @since 0.18.0 + */ + onChange?: OnChangeCallback; + } + + interface ColorisOptions extends ColorisVirtualInstanceOptions { + /** + * Accessibility messages for various aria attribute etc. + */ + a11y?: Accessibility; + + /** + * In inline mode, this is the default color that is set when the picker is initialized. + */ + defaultColor?: string; + + /** + * A custom CSS selector to bind the color picker to. This must point to + * one or more {@link HTMLInputElement}s. + */ + el: string; + + /** + * Set to `true` to use the color picker as an inline widget. In this mode the color picker is + * always visible and positioned statically within its container, which is by default the body + * of the document. Use the "parent" option to set a custom container. + * + * Note: In this mode, the best way to get the picked color is by listening to the `coloris:pick` + * event and reading the value from the event detail (see the example below). The other way is + * to read the value of the input field with the ID `clr-color-value`. + * + * @example + * ```js + * document.addEventListener("coloris:pick", event => { + * console.log("New color", event.detail.color); + * }); + * ``` + */ + inline?: boolean; + + /** + * Set to true to activate basic right-to-left support. + * + * @default false + */ + rtl?: boolean; + + /** + * The bound input fields are wrapped in a div that adds a thumbnail + * showing the current color and a button to open the color picker (for + * accessibility only). + * + * If you wish to keep your fields unaltered, set this to `false`, in which + * case you will lose the color thumbnail and the accessible button (not + * recommended). + * + * @default true + */ + wrap?: boolean; + } + + /** + * The color picker dialog can be closed by clicking anywhere on the + * page or by pressing the ESC on the keyboard. The later will also + * revert the color to its original value. + * + * If you would like to close the dialog programmatically, you can do so + * by calling this method. + * + * @param {boolean} revert When `true`, resets the color to its original + * value. Defaults to `false`. + */ + function close(revert?: boolean): void; + + /** + * Update the color picker's position and the color gradient's offset. + */ + function updatePosition(): void; + + /** + * Converts an input field to a color picker input. + */ + function coloris(opts: ColorisOptions): void; + + /** + * Adds a virtual instance with separate options. + * + * Although there is only one physical instance of the color picker in the document, it is possible + * to simulate multiple instances, each with its own appearance and behavior, by updating the + * configuration at runtime, when the color picker is opened. + * + * Here is an example of how to do it by manually setting configuration options in response to click events: + * + * ```js + * // Regular color fields use the default light theme + * document.querySelectorAll('.color-fields').forEach(input => { + * input.addEventListener('click', e => { + * Coloris({ + * theme: 'default', + * themeMode: 'light', + * }); + * }); + * }); + * + * // But the special color fields use the polaroid dark theme + * document.querySelectorAll('.special-color-fields').forEach(input => { + * input.addEventListener('click', e => { + * Coloris({ + * theme: 'polaroid', + * themeMode: 'dark', + * }); + * }); + * }); + * ``` + * + * This works well and is quite versatile, but it can get a little hard to keep track of each + * change every "instance" makes and revert them to the default values. + * + * So as of version 0.15.0, there is a new way to automatically manage virtual instances. This works + * by assigning configuration overrides to a CSS selector representing one or more color fields. + * + * @example + * ```js + * // Color fields that have the class "instance1" have a format toggle, + * // no alpha slider, a dark theme and custom swatches + * Coloris.setInstance('.instance1', { + * theme: 'polaroid', + * themeMode: 'dark', + * alpha: false, + * formatToggle: true, + * swatches: [ + * '#264653', + * '#2a9d8f', + * '#e9c46a' + * ] + * }); + * + * // Fields matching the class "instance2" show color swatches only + * Coloris.setInstance('.instance2', { + * swatchesOnly: true, + * swatches: [ + * '#264653', + * '#2a9d8f', + * '#e9c46a' + * ] + * }); + * ``` + * @param selector CSS selector for the input fields to which the options should apply. + * @param opts Options to apply to all color picker input fields matching the given selector. + * @since 0.15.0 + */ + function setInstance(selector: string, opts: Partial): void; + + /** + * Removes a virtual instance that was added by {@link setInstance}. Note that + * to remove an instance, the selector must be exactly equal to what was passed + * to `setInstance`, it cannot merely be a different selector that happens to + * match the same elements. + * @param selector CSS selector to remove from the set of virtual instances. + */ + function removeInstance(selector: string): void; + + /** + * Initializes the Coloris color picker and binds the color picker to all + * input fields with the `data-coloris` attribute. + * + * When the script file is loaded directly in a browser, this method is + * called automatically. When called in a module environment (e.g. + * browserify, rollup, or webpack), you need to call this method once before + * any other calls to any {@link Coloris} methods. This method checks for + * when the document is ready, so you do not have to call this method inside + * some document ready block. + */ + function init(): void; +} + +export as namespace Coloris; + +/** + * The main entry point or namespace for Coloris. This object is callable and + * can be used to initialize Coloris. It also contains several utility + * methods. + */ +export = Coloris; + diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.min.css b/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.min.css new file mode 100644 index 0000000..fd03a93 --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/coloris.min.css @@ -0,0 +1 @@ +.clr-picker{display:none;flex-wrap:wrap;position:absolute;width:200px;z-index:1000;border-radius:10px;background-color:#fff;justify-content:flex-end;direction:ltr;box-shadow:0 0 5px rgba(0,0,0,.05),0 5px 20px rgba(0,0,0,.1);-moz-user-select:none;-webkit-user-select:none;user-select:none}.clr-picker.clr-open,.clr-picker[data-inline=true]{display:flex}.clr-picker[data-inline=true]{position:relative}.clr-gradient{position:relative;width:100%;height:100px;margin-bottom:15px;border-radius:3px 3px 0 0;background-image:linear-gradient(rgba(0,0,0,0),#000),linear-gradient(90deg,#fff,currentColor);cursor:pointer}.clr-marker{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border:1px solid #fff;border-radius:50%;background-color:currentColor;cursor:pointer}.clr-picker input[type=range]::-webkit-slider-runnable-track{width:100%;height:8px}.clr-picker input[type=range]::-webkit-slider-thumb{width:8px;height:8px;-webkit-appearance:none}.clr-picker input[type=range]::-moz-range-track{width:100%;height:8px;border:0}.clr-picker input[type=range]::-moz-range-thumb{width:8px;height:8px;border:0}.clr-hue{background-image:linear-gradient(to right,red 0,#ff0 16.66%,#0f0 33.33%,#0ff 50%,#00f 66.66%,#f0f 83.33%,red 100%)}.clr-alpha,.clr-hue{position:relative;width:calc(100% - 40px);height:8px;margin:5px 20px;border-radius:4px}.clr-alpha span{display:block;height:100%;width:100%;border-radius:inherit;background-image:linear-gradient(90deg,rgba(0,0,0,0),currentColor)}.clr-alpha input,.clr-hue input{position:absolute;width:calc(100% + 16px);height:16px;left:-8px;top:-4px;margin:0;background-color:transparent;opacity:0;cursor:pointer;appearance:none;-webkit-appearance:none}.clr-alpha div,.clr-hue div{position:absolute;width:16px;height:16px;left:0;top:50%;margin-left:-8px;transform:translateY(-50%);border:2px solid #fff;border-radius:50%;background-color:currentColor;box-shadow:0 0 1px #888;pointer-events:none}.clr-alpha div:before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;border-radius:50%;background-color:currentColor}.clr-format{display:none;order:1;width:calc(100% - 40px);margin:0 20px 20px}.clr-segmented{display:flex;position:relative;width:100%;margin:0;padding:0;border:1px solid #ddd;border-radius:15px;box-sizing:border-box;color:#999;font-size:12px}.clr-segmented input,.clr-segmented legend{position:absolute;width:100%;height:100%;margin:0;padding:0;border:0;left:0;top:0;opacity:0;pointer-events:none}.clr-segmented label{flex-grow:1;margin:0;padding:4px 0;font-size:inherit;font-weight:400;line-height:initial;text-align:center;cursor:pointer}.clr-segmented label:first-of-type{border-radius:10px 0 0 10px}.clr-segmented label:last-of-type{border-radius:0 10px 10px 0}.clr-segmented input:checked+label{color:#fff;background-color:#666}.clr-swatches{order:2;width:calc(100% - 32px);margin:0 16px}.clr-swatches div{display:flex;flex-wrap:wrap;padding-bottom:12px;justify-content:center}.clr-swatches button{position:relative;width:20px;height:20px;margin:0 4px 6px 4px;padding:0;border:0;border-radius:50%;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;cursor:pointer}.clr-swatches button:after{content:'';display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}input.clr-color{order:1;width:calc(100% - 80px);height:32px;margin:15px 20px 20px auto;padding:0 10px;border:1px solid #ddd;border-radius:16px;color:#444;background-color:#fff;font-family:sans-serif;font-size:14px;text-align:center;box-shadow:none}input.clr-color:focus{outline:0;border:1px solid #1e90ff}.clr-clear,.clr-close{display:none;order:2;height:24px;margin:0 20px 20px;padding:0 20px;border:0;border-radius:12px;color:#fff;background-color:#666;font-family:inherit;font-size:12px;font-weight:400;cursor:pointer}.clr-close{display:block;margin:0 20px 20px auto}.clr-preview{position:relative;width:32px;height:32px;margin:15px 0 20px 20px;border-radius:50%;overflow:hidden}.clr-preview:after,.clr-preview:before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;border:1px solid #fff;border-radius:50%}.clr-preview:after{border:0;background-color:currentColor;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}.clr-preview button{position:absolute;width:100%;height:100%;z-index:1;margin:0;padding:0;border:0;border-radius:50%;outline-offset:-2px;background-color:transparent;text-indent:-9999px;cursor:pointer;overflow:hidden}.clr-alpha div,.clr-color,.clr-hue div,.clr-marker{box-sizing:border-box}.clr-field{display:inline-block;position:relative;color:transparent}.clr-field input{margin:0;direction:ltr}.clr-field.clr-rtl input{text-align:right}.clr-field button{position:absolute;width:30px;height:100%;right:0;top:50%;transform:translateY(-50%);margin:0;padding:0;border:0;color:inherit;text-indent:-1000px;white-space:nowrap;overflow:hidden;pointer-events:none}.clr-field.clr-rtl button{right:auto;left:0}.clr-field button:after{content:'';display:block;position:absolute;width:100%;height:100%;left:0;top:0;border-radius:inherit;background-color:currentColor;box-shadow:inset 0 0 1px rgba(0,0,0,.5)}.clr-alpha,.clr-alpha div,.clr-field button,.clr-preview:before,.clr-swatches button{background-image:repeating-linear-gradient(45deg,#aaa 25%,transparent 25%,transparent 75%,#aaa 75%,#aaa),repeating-linear-gradient(45deg,#aaa 25%,#fff 25%,#fff 75%,#aaa 75%,#aaa);background-position:0 0,4px 4px;background-size:8px 8px}.clr-marker:focus{outline:0}.clr-keyboard-nav .clr-alpha input:focus+div,.clr-keyboard-nav .clr-hue input:focus+div,.clr-keyboard-nav .clr-marker:focus,.clr-keyboard-nav .clr-segmented input:focus+label{outline:0;box-shadow:0 0 0 2px #1e90ff,0 0 2px 2px #fff}.clr-picker[data-alpha=false] .clr-alpha{display:none}.clr-picker[data-minimal=true]{padding-top:16px}.clr-picker[data-minimal=true] .clr-alpha,.clr-picker[data-minimal=true] .clr-color,.clr-picker[data-minimal=true] .clr-gradient,.clr-picker[data-minimal=true] .clr-hue,.clr-picker[data-minimal=true] .clr-preview{display:none}.clr-dark{background-color:#444}.clr-dark .clr-segmented{border-color:#777}.clr-dark .clr-swatches button:after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}.clr-dark input.clr-color{color:#fff;border-color:#777;background-color:#555}.clr-dark input.clr-color:focus{border-color:#1e90ff}.clr-dark .clr-preview:after{box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}.clr-dark .clr-alpha,.clr-dark .clr-alpha div,.clr-dark .clr-preview:before,.clr-dark .clr-swatches button{background-image:repeating-linear-gradient(45deg,#666 25%,transparent 25%,transparent 75%,#888 75%,#888),repeating-linear-gradient(45deg,#888 25%,#444 25%,#444 75%,#888 75%,#888)}.clr-picker.clr-polaroid{border-radius:6px;box-shadow:0 0 5px rgba(0,0,0,.1),0 5px 30px rgba(0,0,0,.2)}.clr-picker.clr-polaroid:before{content:'';display:block;position:absolute;width:16px;height:10px;left:20px;top:-10px;border:solid transparent;border-width:0 8px 10px 8px;border-bottom-color:currentColor;box-sizing:border-box;color:#fff;filter:drop-shadow(0 -4px 3px rgba(0,0,0,.1));pointer-events:none}.clr-picker.clr-polaroid.clr-dark:before{color:#444}.clr-picker.clr-polaroid.clr-left:before{left:auto;right:20px}.clr-picker.clr-polaroid.clr-top:before{top:auto;bottom:-10px;transform:rotateZ(180deg)}.clr-polaroid .clr-gradient{width:calc(100% - 20px);height:120px;margin:10px;border-radius:3px}.clr-polaroid .clr-alpha,.clr-polaroid .clr-hue{width:calc(100% - 30px);height:10px;margin:6px 15px;border-radius:5px}.clr-polaroid .clr-alpha div,.clr-polaroid .clr-hue div{box-shadow:0 0 5px rgba(0,0,0,.2)}.clr-polaroid .clr-format{width:calc(100% - 20px);margin:0 10px 15px}.clr-polaroid .clr-swatches{width:calc(100% - 12px);margin:0 6px}.clr-polaroid .clr-swatches div{padding-bottom:10px}.clr-polaroid .clr-swatches button{width:22px;height:22px}.clr-polaroid input.clr-color{width:calc(100% - 60px);margin:10px 10px 15px auto}.clr-polaroid .clr-clear{margin:0 10px 15px 10px}.clr-polaroid .clr-close{margin:0 10px 15px auto}.clr-polaroid .clr-preview{margin:10px 0 15px 10px}.clr-picker.clr-large{width:275px}.clr-large .clr-gradient{height:150px}.clr-large .clr-swatches button{width:22px;height:22px}.clr-picker.clr-pill{width:380px;padding-left:180px;box-sizing:border-box}.clr-pill .clr-gradient{position:absolute;width:180px;height:100%;left:0;top:0;margin-bottom:0;border-radius:3px 0 0 3px}.clr-pill .clr-hue{margin-top:20px} \ No newline at end of file diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/esm/coloris.js b/gin_ops/static/dist/libs/melloware/coloris/dist/esm/coloris.js new file mode 100644 index 0000000..4b0aae3 --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/esm/coloris.js @@ -0,0 +1,1266 @@ +var Coloris = function () { + /*! + * Copyright (c) 2021-2023 Momo Bassit. + * Licensed under the MIT License (MIT) + * https://github.com/mdbassit/Coloris + * Version: 0.19.0 + * NPM: https://github.com/melloware/coloris-npm + */ + + return function (window, document, Math) { + var ctx = document.createElement('canvas').getContext('2d'); + var currentColor = { r: 0, g: 0, b: 0, h: 0, s: 0, v: 0, a: 1 }; + var container, picker, colorArea, colorAreaDims, colorMarker, colorPreview, colorValue, clearButton, closeButton, + hueSlider, hueMarker, alphaSlider, alphaMarker, currentEl, currentFormat, oldColor, keyboardNav; + + // Default settings + var settings = { + el: '[data-coloris]', + parent: 'body', + theme: 'default', + themeMode: 'light', + rtl: false, + wrap: true, + margin: 2, + format: 'hex', + formatToggle: false, + swatches: [], + swatchesOnly: false, + alpha: true, + forceAlpha: false, + focusInput: true, + selectInput: false, + inline: false, + defaultColor: '#000000', + clearButton: false, + clearLabel: 'Clear', + closeButton: false, + closeLabel: 'Close', + onChange: function onChange() {return undefined;}, + a11y: { + open: 'Open color picker', + close: 'Close color picker', + clear: 'Clear the selected color', + marker: 'Saturation: {s}. Brightness: {v}.', + hueSlider: 'Hue slider', + alphaSlider: 'Opacity slider', + input: 'Color value field', + format: 'Color format', + swatch: 'Color swatch', + instruction: 'Saturation and brightness selector. Use up, down, left and right arrow keys to select.' + } + }; + + // Virtual instances cache + var instances = {}; + var currentInstanceId = ''; + var defaultInstance = {}; + var hasInstance = false; + + /** + * Configure the color picker. + * @param {object} options Configuration options. + */ + function configure(options) { + if (typeof options !== 'object') { + return; + }var _loop = function _loop() + + { + switch (key) { + case 'el': + bindFields(options.el); + if (options.wrap !== false) { + wrapFields(options.el); + } + break; + case 'parent': + container = document.querySelector(options.parent); + if (container) { + container.appendChild(picker); + settings.parent = options.parent; + + // document.body is special + if (container === document.body) { + container = null; + } + } + break; + case 'themeMode': + settings.themeMode = options.themeMode; + if (options.themeMode === 'auto' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + settings.themeMode = 'dark'; + } + // The lack of a break statement is intentional + case 'theme': + if (options.theme) { + settings.theme = options.theme; + } + + // Set the theme and color scheme + picker.className = "clr-picker clr-" + settings.theme + " clr-" + settings.themeMode; + + // Update the color picker's position if inline mode is in use + if (settings.inline) { + updatePickerPosition(); + } + break; + case 'rtl': + settings.rtl = !!options.rtl; + document.querySelectorAll('.clr-field').forEach(function (field) {return field.classList.toggle('clr-rtl', settings.rtl);}); + break; + case 'margin': + options.margin *= 1; + settings.margin = !isNaN(options.margin) ? options.margin : settings.margin; + break; + case 'wrap': + if (options.el && options.wrap) { + wrapFields(options.el); + } + break; + case 'formatToggle': + settings.formatToggle = !!options.formatToggle; + getEl('clr-format').style.display = settings.formatToggle ? 'block' : 'none'; + if (settings.formatToggle) { + settings.format = 'auto'; + } + break; + case 'swatches': + if (Array.isArray(options.swatches)) { + var swatches = []; + + options.swatches.forEach(function (swatch, i) { + swatches.push(""); + }); + + getEl('clr-swatches').innerHTML = swatches.length ? "
    " + swatches.join('') + "
    " : ''; + settings.swatches = options.swatches.slice(); + } + break; + case 'swatchesOnly': + settings.swatchesOnly = !!options.swatchesOnly; + picker.setAttribute('data-minimal', settings.swatchesOnly); + break; + case 'alpha': + settings.alpha = !!options.alpha; + picker.setAttribute('data-alpha', settings.alpha); + break; + case 'inline': + settings.inline = !!options.inline; + picker.setAttribute('data-inline', settings.inline); + + if (settings.inline) { + var defaultColor = options.defaultColor || settings.defaultColor; + + currentFormat = getColorFormatFromStr(defaultColor); + updatePickerPosition(); + setColorFromStr(defaultColor); + } + break; + case 'clearButton': + // Backward compatibility + if (typeof options.clearButton === 'object') { + if (options.clearButton.label) { + settings.clearLabel = options.clearButton.label; + clearButton.innerHTML = settings.clearLabel; + } + + options.clearButton = options.clearButton.show; + } + + settings.clearButton = !!options.clearButton; + clearButton.style.display = settings.clearButton ? 'block' : 'none'; + break; + case 'clearLabel': + settings.clearLabel = options.clearLabel; + clearButton.innerHTML = settings.clearLabel; + break; + case 'closeButton': + settings.closeButton = !!options.closeButton; + + if (settings.closeButton) { + picker.insertBefore(closeButton, colorPreview); + } else { + colorPreview.appendChild(closeButton); + } + + break; + case 'closeLabel': + settings.closeLabel = options.closeLabel; + closeButton.innerHTML = settings.closeLabel; + break; + case 'a11y': + var labels = options.a11y; + var update = false; + + if (typeof labels === 'object') { + for (var label in labels) { + if (labels[label] && settings.a11y[label]) { + settings.a11y[label] = labels[label]; + update = true; + } + } + } + + if (update) { + var openLabel = getEl('clr-open-label'); + var swatchLabel = getEl('clr-swatch-label'); + + openLabel.innerHTML = settings.a11y.open; + swatchLabel.innerHTML = settings.a11y.swatch; + closeButton.setAttribute('aria-label', settings.a11y.close); + clearButton.setAttribute('aria-label', settings.a11y.clear); + hueSlider.setAttribute('aria-label', settings.a11y.hueSlider); + alphaSlider.setAttribute('aria-label', settings.a11y.alphaSlider); + colorValue.setAttribute('aria-label', settings.a11y.input); + colorArea.setAttribute('aria-label', settings.a11y.instruction); + } + break; + default: + settings[key] = options[key];} + + };for (var key in options) {_loop();} + } + + /** + * Add or update a virtual instance. + * @param {String} selector The CSS selector of the elements to which the instance is attached. + * @param {Object} options Per-instance options to apply. + */ + function setVirtualInstance(selector, options) { + if (typeof selector === 'string' && typeof options === 'object') { + instances[selector] = options; + hasInstance = true; + } + } + + /** + * Remove a virtual instance. + * @param {String} selector The CSS selector of the elements to which the instance is attached. + */ + function removeVirtualInstance(selector) { + delete instances[selector]; + + if (Object.keys(instances).length === 0) { + hasInstance = false; + + if (selector === currentInstanceId) { + resetVirtualInstance(); + } + } + } + + /** + * Attach a virtual instance to an element if it matches a selector. + * @param {Object} element Target element that will receive a virtual instance if applicable. + */ + function attachVirtualInstance(element) { + if (hasInstance) { + // These options can only be set globally, not per instance + var unsupportedOptions = ['el', 'wrap', 'rtl', 'inline', 'defaultColor', 'a11y'];var _loop2 = function _loop2() + + { + var options = instances[selector]; + + // If the element matches an instance's CSS selector + if (element.matches(selector)) { + currentInstanceId = selector; + defaultInstance = {}; + + // Delete unsupported options + unsupportedOptions.forEach(function (option) {return delete options[option];}); + + // Back up the default options so we can restore them later + for (var option in options) { + defaultInstance[option] = Array.isArray(settings[option]) ? settings[option].slice() : settings[option]; + } + + // Set the instance's options + configure(options);return "break"; + + } + };for (var selector in instances) {var _ret = _loop2();if (_ret === "break") break;} + } + } + + /** + * Revert any per-instance options that were previously applied. + */ + function resetVirtualInstance() { + if (Object.keys(defaultInstance).length > 0) { + configure(defaultInstance); + currentInstanceId = ''; + defaultInstance = {}; + } + } + + /** + * Bind the color picker to input fields that match the selector. + * @param {string} selector One or more selectors pointing to input fields. + */ + function bindFields(selector) { + // Show the color picker on click on the input fields that match the selector + addListener(document, 'click', selector, function (event) { + // Skip if inline mode is in use + if (settings.inline) { + return; + } + + // Apply any per-instance options first + attachVirtualInstance(event.target); + + currentEl = event.target; + oldColor = currentEl.value; + currentFormat = getColorFormatFromStr(oldColor); + picker.classList.add('clr-open'); + + updatePickerPosition(); + setColorFromStr(oldColor); + + if (settings.focusInput || settings.selectInput) { + colorValue.focus({ preventScroll: true }); + } + + if (settings.selectInput) { + colorValue.select(); + } + + // Always focus the first element when using keyboard navigation + if (keyboardNav || settings.swatchesOnly) { + getFocusableElements().shift().focus(); + } + + // Trigger an "open" event + currentEl.dispatchEvent(new Event('open', { bubbles: true })); + }); + + // Update the color preview of the input fields that match the selector + addListener(document, 'input', selector, function (event) { + var parent = event.target.parentNode; + + // Only update the preview if the field has been previously wrapped + if (parent.classList.contains('clr-field')) { + parent.style.color = event.target.value; + } + }); + } + + /** + * Update the color picker's position and the color gradient's offset + */ + function updatePickerPosition() { + if (!picker || !currentEl && !settings.inline) return; //** DO NOT REMOVE: in case called before initialized + var parent = container; + var scrollY = window.scrollY; + var pickerWidth = picker.offsetWidth; + var pickerHeight = picker.offsetHeight; + var reposition = { left: false, top: false }; + var parentStyle, parentMarginTop, parentBorderTop; + var offset = { x: 0, y: 0 }; + + if (parent) { + parentStyle = window.getComputedStyle(parent); + parentMarginTop = parseFloat(parentStyle.marginTop); + parentBorderTop = parseFloat(parentStyle.borderTopWidth); + + offset = parent.getBoundingClientRect(); + offset.y += parentBorderTop + scrollY; + } + + if (!settings.inline) { + var coords = currentEl.getBoundingClientRect(); + var left = coords.x; + var top = scrollY + coords.y + coords.height + settings.margin; + + // If the color picker is inside a custom container + // set the position relative to it + if (parent) { + left -= offset.x; + top -= offset.y; + + if (left + pickerWidth > parent.clientWidth) { + left += coords.width - pickerWidth; + reposition.left = true; + } + + if (top + pickerHeight > parent.clientHeight - parentMarginTop) { + if (pickerHeight + settings.margin <= coords.top - (offset.y - scrollY)) { + top -= coords.height + pickerHeight + settings.margin * 2; + reposition.top = true; + } + } + + top += parent.scrollTop; + + // Otherwise set the position relative to the whole document + } else { + if (left + pickerWidth > document.documentElement.clientWidth) { + left += coords.width - pickerWidth; + reposition.left = true; + } + + if (top + pickerHeight - scrollY > document.documentElement.clientHeight) { + if (pickerHeight + settings.margin <= coords.top) { + top = scrollY + coords.y - pickerHeight - settings.margin; + reposition.top = true; + } + } + } + + picker.classList.toggle('clr-left', reposition.left); + picker.classList.toggle('clr-top', reposition.top); + picker.style.left = left + "px"; + picker.style.top = top + "px"; + offset.x += picker.offsetLeft; + offset.y += picker.offsetTop; + } + + colorAreaDims = { + width: colorArea.offsetWidth, + height: colorArea.offsetHeight, + x: colorArea.offsetLeft + offset.x, + y: colorArea.offsetTop + offset.y + }; + } + + /** + * Wrap the linked input fields in a div that adds a color preview. + * @param {string} selector One or more selectors pointing to input fields. + */ + function wrapFields(selector) { + document.querySelectorAll(selector).forEach(function (field) { + var parentNode = field.parentNode; + + if (!parentNode.classList.contains('clr-field')) { + var wrapper = document.createElement('div'); + var classes = 'clr-field'; + + if (settings.rtl || field.classList.contains('clr-rtl')) { + classes += ' clr-rtl'; + } + + wrapper.innerHTML = ""; + parentNode.insertBefore(wrapper, field); + wrapper.setAttribute('class', classes); + wrapper.style.color = field.value; + wrapper.appendChild(field); + } + }); + } + + /** + * Close the color picker. + * @param {boolean} [revert] If true, revert the color to the original value. + */ + function closePicker(revert) { + if (currentEl && !settings.inline) { + var prevEl = currentEl; + + // Revert the color to the original value if needed + if (revert) { + // This will prevent the "change" event on the colorValue input to execute its handler + currentEl = null; + + if (oldColor !== prevEl.value) { + prevEl.value = oldColor; + + // Trigger an "input" event to force update the thumbnail next to the input field + prevEl.dispatchEvent(new Event('input', { bubbles: true })); + } + } + + // Trigger a "change" event if needed + setTimeout(function () {// Add this to the end of the event loop + if (oldColor !== prevEl.value) { + prevEl.dispatchEvent(new Event('change', { bubbles: true })); + } + }); + + // Hide the picker dialog + picker.classList.remove('clr-open'); + + // Reset any previously set per-instance options + if (hasInstance) { + resetVirtualInstance(); + } + + // Trigger a "close" event + prevEl.dispatchEvent(new Event('close', { bubbles: true })); + + if (settings.focusInput) { + prevEl.focus({ preventScroll: true }); + } + + // This essentially marks the picker as closed + currentEl = null; + } + } + + /** + * Set the active color from a string. + * @param {string} str String representing a color. + */ + function setColorFromStr(str) { + var rgba = strToRGBA(str); + var hsva = RGBAtoHSVA(rgba); + + updateMarkerA11yLabel(hsva.s, hsva.v); + updateColor(rgba, hsva); + + // Update the UI + hueSlider.value = hsva.h; + picker.style.color = "hsl(" + hsva.h + ", 100%, 50%)"; + hueMarker.style.left = hsva.h / 360 * 100 + "%"; + + colorMarker.style.left = colorAreaDims.width * hsva.s / 100 + "px"; + colorMarker.style.top = colorAreaDims.height - colorAreaDims.height * hsva.v / 100 + "px"; + + alphaSlider.value = hsva.a * 100; + alphaMarker.style.left = hsva.a * 100 + "%"; + } + + /** + * Guess the color format from a string. + * @param {string} str String representing a color. + * @return {string} The color format. + */ + function getColorFormatFromStr(str) { + var format = str.substring(0, 3).toLowerCase(); + + if (format === 'rgb' || format === 'hsl') { + return format; + } + + return 'hex'; + } + + /** + * Copy the active color to the linked input field. + * @param {number} [color] Color value to override the active color. + */ + function pickColor(color) { + color = color !== undefined ? color : colorValue.value; + + if (currentEl) { + currentEl.value = color; + currentEl.dispatchEvent(new Event('input', { bubbles: true })); + } + + if (settings.onChange) { + settings.onChange.call(window, color); + } + + document.dispatchEvent(new CustomEvent('coloris:pick', { detail: { color: color } })); + } + + /** + * Set the active color based on a specific point in the color gradient. + * @param {number} x Left position. + * @param {number} y Top position. + */ + function setColorAtPosition(x, y) { + var hsva = { + h: hueSlider.value * 1, + s: x / colorAreaDims.width * 100, + v: 100 - y / colorAreaDims.height * 100, + a: alphaSlider.value / 100 + }; + var rgba = HSVAtoRGBA(hsva); + + updateMarkerA11yLabel(hsva.s, hsva.v); + updateColor(rgba, hsva); + pickColor(); + } + + /** + * Update the color marker's accessibility label. + * @param {number} saturation + * @param {number} value + */ + function updateMarkerA11yLabel(saturation, value) { + var label = settings.a11y.marker; + + saturation = saturation.toFixed(1) * 1; + value = value.toFixed(1) * 1; + label = label.replace('{s}', saturation); + label = label.replace('{v}', value); + colorMarker.setAttribute('aria-label', label); + } + + // + /** + * Get the pageX and pageY positions of the pointer. + * @param {object} event The MouseEvent or TouchEvent object. + * @return {object} The pageX and pageY positions. + */ + function getPointerPosition(event) { + return { + pageX: event.changedTouches ? event.changedTouches[0].pageX : event.pageX, + pageY: event.changedTouches ? event.changedTouches[0].pageY : event.pageY + }; + } + + /** + * Move the color marker when dragged. + * @param {object} event The MouseEvent object. + */ + function moveMarker(event) { + var pointer = getPointerPosition(event); + var x = pointer.pageX - colorAreaDims.x; + var y = pointer.pageY - colorAreaDims.y; + + if (container) { + y += container.scrollTop; + } + + setMarkerPosition(x, y); + + // Prevent scrolling while dragging the marker + event.preventDefault(); + event.stopPropagation(); + } + + /** + * Move the color marker when the arrow keys are pressed. + * @param {number} offsetX The horizontal amount to move. + * @param {number} offsetY The vertical amount to move. + */ + function moveMarkerOnKeydown(offsetX, offsetY) { + var x = colorMarker.style.left.replace('px', '') * 1 + offsetX; + var y = colorMarker.style.top.replace('px', '') * 1 + offsetY; + + setMarkerPosition(x, y); + } + + /** + * Set the color marker's position. + * @param {number} x Left position. + * @param {number} y Top position. + */ + function setMarkerPosition(x, y) { + // Make sure the marker doesn't go out of bounds + x = x < 0 ? 0 : x > colorAreaDims.width ? colorAreaDims.width : x; + y = y < 0 ? 0 : y > colorAreaDims.height ? colorAreaDims.height : y; + + // Set the position + colorMarker.style.left = x + "px"; + colorMarker.style.top = y + "px"; + + // Update the color + setColorAtPosition(x, y); + + // Make sure the marker is focused + colorMarker.focus(); + } + + /** + * Update the color picker's input field and preview thumb. + * @param {Object} rgba Red, green, blue and alpha values. + * @param {Object} [hsva] Hue, saturation, value and alpha values. + */ + function updateColor(rgba, hsva) {if (rgba === void 0) {rgba = {};}if (hsva === void 0) {hsva = {};} + var format = settings.format; + + for (var key in rgba) { + currentColor[key] = rgba[key]; + } + + for (var _key in hsva) { + currentColor[_key] = hsva[_key]; + } + + var hex = RGBAToHex(currentColor); + var opaqueHex = hex.substring(0, 7); + + colorMarker.style.color = opaqueHex; + alphaMarker.parentNode.style.color = opaqueHex; + alphaMarker.style.color = hex; + colorPreview.style.color = hex; + + // Force repaint the color and alpha gradients as a workaround for a Google Chrome bug + colorArea.style.display = 'none'; + colorArea.offsetHeight; + colorArea.style.display = ''; + alphaMarker.nextElementSibling.style.display = 'none'; + alphaMarker.nextElementSibling.offsetHeight; + alphaMarker.nextElementSibling.style.display = ''; + + if (format === 'mixed') { + format = currentColor.a === 1 ? 'hex' : 'rgb'; + } else if (format === 'auto') { + format = currentFormat; + } + + switch (format) { + case 'hex': + colorValue.value = hex; + break; + case 'rgb': + colorValue.value = RGBAToStr(currentColor); + break; + case 'hsl': + colorValue.value = HSLAToStr(HSVAtoHSLA(currentColor)); + break;} + + + // Select the current format in the format switcher + document.querySelector(".clr-format [value=\"" + format + "\"]").checked = true; + } + + /** + * Set the hue when its slider is moved. + */ + function setHue() { + var hue = hueSlider.value * 1; + var x = colorMarker.style.left.replace('px', '') * 1; + var y = colorMarker.style.top.replace('px', '') * 1; + + picker.style.color = "hsl(" + hue + ", 100%, 50%)"; + hueMarker.style.left = hue / 360 * 100 + "%"; + + setColorAtPosition(x, y); + } + + /** + * Set the alpha when its slider is moved. + */ + function setAlpha() { + var alpha = alphaSlider.value / 100; + + alphaMarker.style.left = alpha * 100 + "%"; + updateColor({ a: alpha }); + pickColor(); + } + + /** + * Convert HSVA to RGBA. + * @param {object} hsva Hue, saturation, value and alpha values. + * @return {object} Red, green, blue and alpha values. + */ + function HSVAtoRGBA(hsva) { + var saturation = hsva.s / 100; + var value = hsva.v / 100; + var chroma = saturation * value; + var hueBy60 = hsva.h / 60; + var x = chroma * (1 - Math.abs(hueBy60 % 2 - 1)); + var m = value - chroma; + + chroma = chroma + m; + x = x + m; + + var index = Math.floor(hueBy60) % 6; + var red = [chroma, x, m, m, x, chroma][index]; + var green = [x, chroma, chroma, x, m, m][index]; + var blue = [m, m, x, chroma, chroma, x][index]; + + return { + r: Math.round(red * 255), + g: Math.round(green * 255), + b: Math.round(blue * 255), + a: hsva.a + }; + } + + /** + * Convert HSVA to HSLA. + * @param {object} hsva Hue, saturation, value and alpha values. + * @return {object} Hue, saturation, lightness and alpha values. + */ + function HSVAtoHSLA(hsva) { + var value = hsva.v / 100; + var lightness = value * (1 - hsva.s / 100 / 2); + var saturation; + + if (lightness > 0 && lightness < 1) { + saturation = Math.round((value - lightness) / Math.min(lightness, 1 - lightness) * 100); + } + + return { + h: hsva.h, + s: saturation || 0, + l: Math.round(lightness * 100), + a: hsva.a + }; + } + + /** + * Convert RGBA to HSVA. + * @param {object} rgba Red, green, blue and alpha values. + * @return {object} Hue, saturation, value and alpha values. + */ + function RGBAtoHSVA(rgba) { + var red = rgba.r / 255; + var green = rgba.g / 255; + var blue = rgba.b / 255; + var xmax = Math.max(red, green, blue); + var xmin = Math.min(red, green, blue); + var chroma = xmax - xmin; + var value = xmax; + var hue = 0; + var saturation = 0; + + if (chroma) { + if (xmax === red) {hue = (green - blue) / chroma;} + if (xmax === green) {hue = 2 + (blue - red) / chroma;} + if (xmax === blue) {hue = 4 + (red - green) / chroma;} + if (xmax) {saturation = chroma / xmax;} + } + + hue = Math.floor(hue * 60); + + return { + h: hue < 0 ? hue + 360 : hue, + s: Math.round(saturation * 100), + v: Math.round(value * 100), + a: rgba.a + }; + } + + /** + * Parse a string to RGBA. + * @param {string} str String representing a color. + * @return {object} Red, green, blue and alpha values. + */ + function strToRGBA(str) { + var regex = /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i; + var match, rgba; + + // Default to black for invalid color strings + ctx.fillStyle = '#000'; + + // Use canvas to convert the string to a valid color string + ctx.fillStyle = str; + match = regex.exec(ctx.fillStyle); + + if (match) { + rgba = { + r: match[3] * 1, + g: match[4] * 1, + b: match[5] * 1, + a: match[6] * 1 + }; + + // Workaround to mitigate a Chromium bug where the alpha value is rounded incorrectly + rgba.a = +rgba.a.toFixed(2); + + } else { + match = ctx.fillStyle.replace('#', '').match(/.{2}/g).map(function (h) {return parseInt(h, 16);}); + rgba = { + r: match[0], + g: match[1], + b: match[2], + a: 1 + }; + } + + return rgba; + } + + /** + * Convert RGBA to Hex. + * @param {object} rgba Red, green, blue and alpha values. + * @return {string} Hex color string. + */ + function RGBAToHex(rgba) { + var R = rgba.r.toString(16); + var G = rgba.g.toString(16); + var B = rgba.b.toString(16); + var A = ''; + + if (rgba.r < 16) { + R = '0' + R; + } + + if (rgba.g < 16) { + G = '0' + G; + } + + if (rgba.b < 16) { + B = '0' + B; + } + + if (settings.alpha && (rgba.a < 1 || settings.forceAlpha)) { + var alpha = rgba.a * 255 | 0; + A = alpha.toString(16); + + if (alpha < 16) { + A = '0' + A; + } + } + + return '#' + R + G + B + A; + } + + /** + * Convert RGBA values to a CSS rgb/rgba string. + * @param {object} rgba Red, green, blue and alpha values. + * @return {string} CSS color string. + */ + function RGBAToStr(rgba) { + if (!settings.alpha || rgba.a === 1 && !settings.forceAlpha) { + return "rgb(" + rgba.r + ", " + rgba.g + ", " + rgba.b + ")"; + } else { + return "rgba(" + rgba.r + ", " + rgba.g + ", " + rgba.b + ", " + rgba.a + ")"; + } + } + + /** + * Convert HSLA values to a CSS hsl/hsla string. + * @param {object} hsla Hue, saturation, lightness and alpha values. + * @return {string} CSS color string. + */ + function HSLAToStr(hsla) { + if (!settings.alpha || hsla.a === 1 && !settings.forceAlpha) { + return "hsl(" + hsla.h + ", " + hsla.s + "%, " + hsla.l + "%)"; + } else { + return "hsla(" + hsla.h + ", " + hsla.s + "%, " + hsla.l + "%, " + hsla.a + ")"; + } + } + + /** + * Init the color picker. + */ + function init() { + if (document.getElementById('clr-picker')) return; //** DO NOT REMOVE: Prevent binding events multiple times + // Render the UI + container = null; + picker = document.createElement('div'); + picker.setAttribute('id', 'clr-picker'); + picker.className = 'clr-picker'; + picker.innerHTML = + "" + ("
    ") + + '
    ' + + '
    ' + + '
    ' + ("") + + '
    ' + + '
    ' + + '
    ' + ("") + + '
    ' + + '' + + '
    ' + + '
    ' + + '
    ' + ("" + + settings.a11y.format + "") + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    ' + + '
    ' + + '
    ' + ("") + + '
    ' + ("") + + '
    ' + ("") + (""); + + // Append the color picker to the DOM + document.body.appendChild(picker); + + // Reference the UI elements + colorArea = getEl('clr-color-area'); + colorMarker = getEl('clr-color-marker'); + clearButton = getEl('clr-clear'); + closeButton = getEl('clr-close'); + colorPreview = getEl('clr-color-preview'); + colorValue = getEl('clr-color-value'); + hueSlider = getEl('clr-hue-slider'); + hueMarker = getEl('clr-hue-marker'); + alphaSlider = getEl('clr-alpha-slider'); + alphaMarker = getEl('clr-alpha-marker'); + + // Bind the picker to the default selector + bindFields(settings.el); + wrapFields(settings.el); + + addListener(picker, 'mousedown', function (event) { + picker.classList.remove('clr-keyboard-nav'); + event.stopPropagation(); + }); + + addListener(colorArea, 'mousedown', function (event) { + addListener(document, 'mousemove', moveMarker); + }); + + addListener(colorArea, 'touchstart', function (event) { + document.addEventListener('touchmove', moveMarker, { passive: false }); + }); + + addListener(colorMarker, 'mousedown', function (event) { + addListener(document, 'mousemove', moveMarker); + }); + + addListener(colorMarker, 'touchstart', function (event) { + document.addEventListener('touchmove', moveMarker, { passive: false }); + }); + + addListener(colorValue, 'change', function (event) { + if (currentEl || settings.inline) { + setColorFromStr(colorValue.value); + pickColor(); + } + }); + + addListener(clearButton, 'click', function (event) { + pickColor(''); + closePicker(); + }); + + addListener(closeButton, 'click', function (event) { + pickColor(); + closePicker(); + }); + + addListener(document, 'click', '.clr-format input', function (event) { + currentFormat = event.target.value; + updateColor(); + pickColor(); + }); + + addListener(picker, 'click', '.clr-swatches button', function (event) { + setColorFromStr(event.target.textContent); + pickColor(); + + if (settings.swatchesOnly) { + closePicker(); + } + }); + + addListener(document, 'mouseup', function (event) { + document.removeEventListener('mousemove', moveMarker); + }); + + addListener(document, 'touchend', function (event) { + document.removeEventListener('touchmove', moveMarker); + }); + + addListener(document, 'mousedown', function (event) { + keyboardNav = false; + picker.classList.remove('clr-keyboard-nav'); + closePicker(); + }); + + addListener(document, 'keydown', function (event) { + var key = event.key; + var target = event.target; + var shiftKey = event.shiftKey; + var navKeys = ['Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']; + + if (key === 'Escape') { + closePicker(true); + + // Display focus rings when using the keyboard + } else if (navKeys.includes(key)) { + keyboardNav = true; + picker.classList.add('clr-keyboard-nav'); + } + + // Trap the focus within the color picker while it's open + if (key === 'Tab' && target.matches('.clr-picker *')) { + var focusables = getFocusableElements(); + var firstFocusable = focusables.shift(); + var lastFocusable = focusables.pop(); + + if (shiftKey && target === firstFocusable) { + lastFocusable.focus(); + event.preventDefault(); + } else if (!shiftKey && target === lastFocusable) { + firstFocusable.focus(); + event.preventDefault(); + } + } + }); + + addListener(document, 'click', '.clr-field button', function (event) { + // Reset any previously set per-instance options + if (hasInstance) { + resetVirtualInstance(); + } + + // Open the color picker + event.target.nextElementSibling.dispatchEvent(new Event('click', { bubbles: true })); + }); + + addListener(colorMarker, 'keydown', function (event) { + var movements = { + ArrowUp: [0, -1], + ArrowDown: [0, 1], + ArrowLeft: [-1, 0], + ArrowRight: [1, 0] + }; + + if (Object.keys(movements).includes(event.key)) { + moveMarkerOnKeydown.apply(void 0, movements[event.key]); + event.preventDefault(); + } + }); + + addListener(colorArea, 'click', moveMarker); + addListener(hueSlider, 'input', setHue); + addListener(alphaSlider, 'input', setAlpha); + } + + /** + * Return a list of focusable elements within the color picker. + * @return {array} The list of focusable DOM elemnts. + */ + function getFocusableElements() { + var controls = Array.from(picker.querySelectorAll('input, button')); + var focusables = controls.filter(function (node) {return !!node.offsetWidth;}); + + return focusables; + } + + /** + * Shortcut for getElementById to optimize the minified JS. + * @param {string} id The element id. + * @return {object} The DOM element with the provided id. + */ + function getEl(id) { + return document.getElementById(id); + } + + /** + * Shortcut for addEventListener to optimize the minified JS. + * @param {object} context The context to which the listener is attached. + * @param {string} type Event type. + * @param {(string|function)} selector Event target if delegation is used, event handler if not. + * @param {function} [fn] Event handler if delegation is used. + */ + function addListener(context, type, selector, fn) { + var matches = Element.prototype.matches || Element.prototype.msMatchesSelector; + + // Delegate event to the target of the selector + if (typeof selector === 'string') { + context.addEventListener(type, function (event) { + if (matches.call(event.target, selector)) { + fn.call(event.target, event); + } + }); + + // If the selector is not a string then it's a function + // in which case we need a regular event listener + } else { + fn = selector; + context.addEventListener(type, fn); + } + } + + /** + * Call a function only when the DOM is ready. + * @param {function} fn The function to call. + * @param {array} [args] Arguments to pass to the function. + */ + function DOMReady(fn, args) { + args = args !== undefined ? args : []; + + if (document.readyState !== 'loading') { + fn.apply(void 0, args); + } else { + document.addEventListener('DOMContentLoaded', function () { + fn.apply(void 0, args); + }); + } + } + + // Polyfill for Nodelist.forEach + if (NodeList !== undefined && NodeList.prototype && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = Array.prototype.forEach; + } + + //***************************************************** + //******* NPM: Custom code starts here **************** + //***************************************************** + + /** + * Copy the active color to the linked input field and set the color. + * @param {string} [color] Color value to override the active color. + * @param {HTMLelement} [target] the element setting the color on + */ + function setColor(color, target) { + currentEl = target; + oldColor = currentEl.value; + attachVirtualInstance(target); + currentFormat = getColorFormatFromStr(color); + updatePickerPosition(); + setColorFromStr(color); + pickColor(); + if (oldColor !== color) { + currentEl.dispatchEvent(new Event('change', { bubbles: true })); + } + } + + // Expose the color picker to the global scope + var Coloris = function () { + var methods = { + init: init, + set: configure, + wrap: wrapFields, + close: closePicker, + setInstance: setVirtualInstance, + setColor: setColor, + removeInstance: removeVirtualInstance, + updatePosition: updatePickerPosition + }; + + function Coloris(options) { + DOMReady(function () { + if (options) { + if (typeof options === 'string') { + bindFields(options); + } else { + configure(options); + } + } + }); + }var _loop3 = function _loop3(key) + + { + Coloris[key] = function () {for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {args[_key2] = arguments[_key2];} + DOMReady(methods[key], args); + }; + };for (var key in methods) {_loop3(key);} + + // handle window resize events re-aligning the panel + DOMReady(function () { + window.addEventListener('resize', function (event) {Coloris.updatePosition();}); + window.addEventListener('scroll', function (event) {Coloris.updatePosition();}); + }); + + return Coloris; + }(); + + // Ensure init function is available not only as as a default import + Coloris.coloris = Coloris; + + // Init the color picker when the DOM is ready + return Coloris; + + }(window, document, Math); +}(); + +var _coloris = Coloris.coloris; +var _init = Coloris.init; +var _set = Coloris.set; +var _wrap = Coloris.wrap; +var _close = Coloris.close; +var _setInstance = Coloris.setInstance; +var _removeInstance = Coloris.removeInstance; +var _updatePosition = Coloris.updatePosition; +export default Coloris; +export { +_coloris as coloris, +_close as close, +_init as init, +_set as set, +_wrap as wrap, +_setInstance as setInstance, +_removeInstance as removeInstance, +_updatePosition as updatePosition }; \ No newline at end of file diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/esm/coloris.min.js b/gin_ops/static/dist/libs/melloware/coloris/dist/esm/coloris.min.js new file mode 100644 index 0000000..b72550d --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/esm/coloris.min.js @@ -0,0 +1,9 @@ +var Coloris=function(){ +/*! + * Copyright (c) 2021-2023 Momo Bassit. + * Licensed under the MIT License (MIT) + * https://github.com/mdbassit/Coloris + * Version: 0.19.0 + * NPM: https://github.com/melloware/coloris-npm + */ +return h=window,b=document,v=Math,i=b.createElement("canvas").getContext("2d"),H={el:"[data-coloris]",parent:"body",theme:"default",themeMode:"light",rtl:!(I={r:0,g:0,b:0,h:0,s:0,v:0,a:1}),wrap:!0,margin:2,format:"hex",formatToggle:!1,swatches:[],swatchesOnly:!1,alpha:!0,forceAlpha:!1,focusInput:!0,selectInput:!1,inline:!1,defaultColor:"#000000",clearButton:!1,clearLabel:"Clear",closeButton:!1,closeLabel:"Close",onChange:function(){},a11y:{open:"Open color picker",close:"Close color picker",clear:"Clear the selected color",marker:"Saturation: {s}. Brightness: {v}.",hueSlider:"Hue slider",alphaSlider:"Opacity slider",input:"Color value field",format:"Color format",swatch:"Color swatch",instruction:"Saturation and brightness selector. Use up, down, left and right arrow keys to select."}},_={},O="",N=!(D={}),void 0!==NodeList&&NodeList.prototype&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),(V=function(){var r={init:z,set:n,wrap:s,close:o,setInstance:P,setColor:$,removeInstance:j,updatePosition:c};function t(e){K(function(){e&&("string"==typeof e?q:n)(e)})}for(var e in r)!function(l){t[l]=function(){for(var e=arguments.length,t=new Array(e),a=0;a'+e+"")}),f("clr-swatches").innerHTML=a.length?"
    "+a.join("")+"
    ":"",H.swatches=o.swatches.slice());break;case"swatchesOnly":H.swatchesOnly=!!o.swatchesOnly,g.setAttribute("data-minimal",H.swatchesOnly);break;case"alpha":H.alpha=!!o.alpha,g.setAttribute("data-alpha",H.alpha);break;case"inline":H.inline=!!o.inline,g.setAttribute("data-inline",H.inline),H.inline&&(e=o.defaultColor||H.defaultColor,M=F(e),c(),u(e));break;case"clearButton":"object"==typeof o.clearButton&&(o.clearButton.label&&(H.clearLabel=o.clearButton.label,x.innerHTML=H.clearLabel),o.clearButton=o.clearButton.show),H.clearButton=!!o.clearButton,x.style.display=H.clearButton?"block":"none";break;case"clearLabel":H.clearLabel=o.clearLabel,x.innerHTML=H.clearLabel;break;case"closeButton":H.closeButton=!!o.closeButton,H.closeButton?g.insertBefore(C,L):L.appendChild(C);break;case"closeLabel":H.closeLabel=o.closeLabel,C.innerHTML=H.closeLabel;break;case"a11y":var e,t,l=o.a11y,r=!1;if("object"==typeof l)for(var n in l)l[n]&&H.a11y[n]&&(H.a11y[n]=l[n],r=!0);r&&(e=f("clr-open-label"),t=f("clr-swatch-label"),e.innerHTML=H.a11y.open,t.innerHTML=H.a11y.swatch,C.setAttribute("aria-label",H.a11y.close),x.setAttribute("aria-label",H.a11y.clear),A.setAttribute("aria-label",H.a11y.hueSlider),S.setAttribute("aria-label",H.a11y.alphaSlider),E.setAttribute("aria-label",H.a11y.input),m.setAttribute("aria-label",H.a11y.instruction));break;default:H[i]=o[i]}}()}function P(e,t){"string"==typeof e&&"object"==typeof t&&(_[e]=t,N=!0)}function j(e){delete _[e],0===Object.keys(_).length&&(N=!1,e===O)&&a()}function W(a){if(N){var l,r=["el","wrap","rtl","inline","defaultColor","a11y"];for(l in _)if("break"===function(){var t=_[l];if(a.matches(l)){for(var e in O=l,D={},r.forEach(function(e){return delete t[e]}),t)D[e]=Array.isArray(H[e])?H[e].slice():H[e];return n(t),"break"}}())break}}function a(){0e.clientWidth&&(c+=i.width-a,r.left=!0),s+l>e.clientHeight-n&&l+H.margin<=i.top-(o.y-t)&&(s-=i.height+l+2*H.margin,r.top=!0),s+=e.scrollTop):(c+a>b.documentElement.clientWidth&&(c+=i.width-a,r.left=!0),s+l-t>b.documentElement.clientHeight&&l+H.margin<=i.top&&(s=t+i.y-l-H.margin,r.top=!0)),g.classList.toggle("clr-left",r.left),g.classList.toggle("clr-top",r.top),g.style.left=c+"px",g.style.top=s+"px",o.x+=g.offsetLeft,o.y+=g.offsetTop),w={width:m.offsetWidth,height:m.offsetHeight,x:m.offsetLeft+o.x,y:m.offsetTop+o.y})}function s(e){b.querySelectorAll(e).forEach(function(e){var t,a,l=e.parentNode;l.classList.contains("clr-field")||(t=b.createElement("div"),a="clr-field",(H.rtl||e.classList.contains("clr-rtl"))&&(a+=" clr-rtl"),t.innerHTML='',l.insertBefore(t,e),t.setAttribute("class",a),t.style.color=e.value,t.appendChild(e))})}function o(e){var t;B&&!H.inline&&(t=B,e&&(B=null,r!==t.value)&&(t.value=r,t.dispatchEvent(new Event("input",{bubbles:!0}))),setTimeout(function(){r!==t.value&&t.dispatchEvent(new Event("change",{bubbles:!0}))}),g.classList.remove("clr-open"),N&&a(),t.dispatchEvent(new Event("close",{bubbles:!0})),H.focusInput&&t.focus({preventScroll:!0}),B=null)}function u(e){var e=function(e){var t;i.fillStyle="#000",i.fillStyle=e,(e=/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i.exec(i.fillStyle))?(t={r:+e[3],g:+e[4],b:+e[5],a:+e[6]}).a=+t.a.toFixed(2):(e=i.fillStyle.replace("#","").match(/.{2}/g).map(function(e){return parseInt(e,16)}),t={r:e[0],g:e[1],b:e[2],a:1});return t}(e),t=function(e){var t=e.r/255,a=e.g/255,l=e.b/255,r=v.max(t,a,l),n=v.min(t,a,l),n=r-n,o=r,i=0,c=0;n&&(r===t&&(i=(a-l)/n),r===a&&(i=2+(l-t)/n),r===l&&(i=4+(t-a)/n),r)&&(c=n/r);return{h:(i=v.floor(60*i))<0?i+360:i,s:v.round(100*c),v:v.round(100*o),a:e.a}}(e);Y(t.s,t.v),p(e,t),A.value=t.h,g.style.color="hsl("+t.h+", 100%, 50%)",J.style.left=t.h/360*100+"%",k.style.left=w.width*t.s/100+"px",k.style.top=w.height-w.height*t.v/100+"px",S.value=100*t.a,T.style.left=100*t.a+"%"}function F(e){e=e.substring(0,3).toLowerCase();return"rgb"===e||"hsl"===e?e:"hex"}function d(e){e=void 0!==e?e:E.value,B&&(B.value=e,B.dispatchEvent(new Event("input",{bubbles:!0}))),H.onChange&&H.onChange.call(h,e),b.dispatchEvent(new CustomEvent("coloris:pick",{detail:{color:e}}))}function R(e,t){var a,l,r,n,o,e={h:+A.value,s:e/w.width*100,v:100-t/w.height*100,a:S.value/100},i=(i=(t=e).s/100,a=t.v/100,i*=a,l=t.h/60,r=i*(1-v.abs(l%2-1)),i+=a-=i,r+=a,l=v.floor(l)%6,n=[i,r,a,a,r,i][l],o=[r,i,i,r,a,a][l],a=[a,a,r,i,i,r][l],{r:v.round(255*n),g:v.round(255*o),b:v.round(255*a),a:t.a});Y(e.s,e.v),p(i,e),d()}function Y(e,t){var a=H.a11y.marker;e=+e.toFixed(1),t=+t.toFixed(1),a=(a=a.replace("{s}",e)).replace("{v}",t),k.setAttribute("aria-label",a)}function t(e){var t={pageX:((t=e).changedTouches?t.changedTouches[0]:t).pageX,pageY:(t.changedTouches?t.changedTouches[0]:t).pageY},a=t.pageX-w.x,t=t.pageY-w.y;y&&(t+=y.scrollTop),U(a,t),e.preventDefault(),e.stopPropagation()}function U(e,t){e=e<0?0:e>w.width?w.width:e,t=t<0?0:t>w.height?w.height:t,k.style.left=e+"px",k.style.top=t+"px",R(e,t),k.focus()}function p(e,t){void 0===t&&(t={});var a,l,r=H.format;for(a in e=void 0===e?{}:e)I[a]=e[a];for(l in t)I[l]=t[l];var n,o=function(e){var t=e.r.toString(16),a=e.g.toString(16),l=e.b.toString(16),r="";e.r<16&&(t="0"+t);e.g<16&&(a="0"+a);e.b<16&&(l="0"+l);H.alpha&&(e.a<1||H.forceAlpha)&&(e=255*e.a|0,r=e.toString(16),e<16)&&(r="0"+r);return"#"+t+a+l+r}(I),i=o.substring(0,7);switch(k.style.color=i,T.parentNode.style.color=i,T.style.color=o,L.style.color=o,m.style.display="none",m.offsetHeight,m.style.display="",T.nextElementSibling.style.display="none",T.nextElementSibling.offsetHeight,T.nextElementSibling.style.display="","mixed"===r?r=1===I.a?"hex":"rgb":"auto"===r&&(r=M),r){case"hex":E.value=o;break;case"rgb":E.value=(n=I,!H.alpha||1===n.a&&!H.forceAlpha?"rgb("+n.r+", "+n.g+", "+n.b+")":"rgba("+n.r+", "+n.g+", "+n.b+", "+n.a+")");break;case"hsl":E.value=(n=function(e){var t,a=e.v/100,l=a*(1-e.s/100/2);0
    '+H.a11y.format+'
    ",b.body.appendChild(g),m=f("clr-color-area"),k=f("clr-color-marker"),x=f("clr-clear"),C=f("clr-close"),L=f("clr-color-preview"),E=f("clr-color-value"),A=f("clr-hue-slider"),J=f("clr-hue-marker"),S=f("clr-alpha-slider"),T=f("clr-alpha-marker"),q(H.el),s(H.el),l(g,"mousedown",function(e){g.classList.remove("clr-keyboard-nav"),e.stopPropagation()}),l(m,"mousedown",function(e){l(b,"mousemove",t)}),l(m,"touchstart",function(e){b.addEventListener("touchmove",t,{passive:!1})}),l(k,"mousedown",function(e){l(b,"mousemove",t)}),l(k,"touchstart",function(e){b.addEventListener("touchmove",t,{passive:!1})}),l(E,"change",function(e){(B||H.inline)&&(u(E.value),d())}),l(x,"click",function(e){d(""),o()}),l(C,"click",function(e){d(),o()}),l(b,"click",".clr-format input",function(e){M=e.target.value,p(),d()}),l(g,"click",".clr-swatches button",function(e){u(e.target.textContent),d(),H.swatchesOnly&&o()}),l(b,"mouseup",function(e){b.removeEventListener("mousemove",t)}),l(b,"touchend",function(e){b.removeEventListener("touchmove",t)}),l(b,"mousedown",function(e){Q=!1,g.classList.remove("clr-keyboard-nav"),o()}),l(b,"keydown",function(e){var t,a=e.key,l=e.target,r=e.shiftKey;"Escape"===a?o(!0):["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(a)&&(Q=!0,g.classList.add("clr-keyboard-nav")),"Tab"===a&&l.matches(".clr-picker *")&&(t=(a=G()).shift(),a=a.pop(),r&&l===t?(a.focus(),e.preventDefault()):r||l!==a||(t.focus(),e.preventDefault()))}),l(b,"click",".clr-field button",function(e){N&&a(),e.target.nextElementSibling.dispatchEvent(new Event("click",{bubbles:!0}))}),l(k,"keydown",function(e){var t={ArrowUp:[0,-1],ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0]};Object.keys(t).includes(e.key)&&(!function(e,t){U(+k.style.left.replace("px","")+e,+k.style.top.replace("px","")+t)}.apply(void 0,t[e.key]),e.preventDefault())}),l(m,"click",t),l(A,"input",e),l(S,"input",X))}function G(){return Array.from(g.querySelectorAll("input, button")).filter(function(e){return!!e.offsetWidth})}function f(e){return b.getElementById(e)}function l(e,t,a,l){var r=Element.prototype.matches||Element.prototype.msMatchesSelector;"string"==typeof a?e.addEventListener(t,function(e){r.call(e.target,a)&&l.call(e.target,e)}):(l=a,e.addEventListener(t,l))}function K(e,t){t=void 0!==t?t:[],"loading"!==b.readyState?e.apply(void 0,t):b.addEventListener("DOMContentLoaded",function(){e.apply(void 0,t)})}function $(e,t){r=(B=t).value,W(t),M=F(e),c(),u(e),d(),r!==e&&B.dispatchEvent(new Event("change",{bubbles:!0}))}var h,b,v,y,g,m,w,k,L,E,x,C,A,J,S,T,B,M,r,Q,i,I,H,_,O,D,N,V}(),_coloris=Coloris.coloris,_init=Coloris.init,_set=Coloris.set,_wrap=Coloris.wrap,_close=Coloris.close,_setInstance=Coloris.setInstance,_removeInstance=Coloris.removeInstance,_updatePosition=Coloris.updatePosition;export default Coloris;export{_coloris as coloris,_close as close,_init as init,_set as set,_wrap as wrap,_setInstance as setInstance,_removeInstance as removeInstance,_updatePosition as updatePosition}; \ No newline at end of file diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/esm/package.json b/gin_ops/static/dist/libs/melloware/coloris/dist/esm/package.json new file mode 100644 index 0000000..4720025 --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/umd/coloris.js b/gin_ops/static/dist/libs/melloware/coloris/dist/umd/coloris.js new file mode 100644 index 0000000..090408b --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/umd/coloris.js @@ -0,0 +1,1288 @@ + // https://github.com/umdjs/umd/blob/master/templates/returnExports.js + +// Uses Node, AMD or browser globals to create a module. + +// If you want something that will work in other stricter CommonJS environments, +// or if you need to create a circular dependency, see commonJsStrict.js + +// Defines a module "returnExports" that depends another module called "b". +// Note that the name of the module is implied by the file name. It is best +// if the file name and the exported global have matching names. + +// If the 'b' module also uses this type of boilerplate, then +// in the browser, it will create a global .b that is used below. + +// If you do not want to support the browser global path, then you +// can remove the `root` use and the passing `this` as the first arg to +// the top function. + +// if the module has no dependencies, the above pattern can be simplified to +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an unnamed module. + define([], factory); + } else + if (typeof module === 'object' && module.exports) { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else + { + // Browser globals (root is window) + root.Coloris = factory(); + if (typeof window === "object") { + // Init the color picker when the DOM is ready + root.Coloris.init(); + } + } +})(typeof self !== 'undefined' ? self : void 0, function () { + // Just return a value to define the module export. + // This example returns an object, but the module + // can return a function as the exported value. + /*! + * Copyright (c) 2021-2023 Momo Bassit. + * Licensed under the MIT License (MIT) + * https://github.com/mdbassit/Coloris + * Version: 0.19.0 + * NPM: https://github.com/melloware/coloris-npm + */ + + return function (window, document, Math) { + var ctx = document.createElement('canvas').getContext('2d'); + var currentColor = { r: 0, g: 0, b: 0, h: 0, s: 0, v: 0, a: 1 }; + var container, picker, colorArea, colorAreaDims, colorMarker, colorPreview, colorValue, clearButton, closeButton, + hueSlider, hueMarker, alphaSlider, alphaMarker, currentEl, currentFormat, oldColor, keyboardNav; + + // Default settings + var settings = { + el: '[data-coloris]', + parent: 'body', + theme: 'default', + themeMode: 'light', + rtl: false, + wrap: true, + margin: 2, + format: 'hex', + formatToggle: false, + swatches: [], + swatchesOnly: false, + alpha: true, + forceAlpha: false, + focusInput: true, + selectInput: false, + inline: false, + defaultColor: '#000000', + clearButton: false, + clearLabel: 'Clear', + closeButton: false, + closeLabel: 'Close', + onChange: function onChange() {return undefined;}, + a11y: { + open: 'Open color picker', + close: 'Close color picker', + clear: 'Clear the selected color', + marker: 'Saturation: {s}. Brightness: {v}.', + hueSlider: 'Hue slider', + alphaSlider: 'Opacity slider', + input: 'Color value field', + format: 'Color format', + swatch: 'Color swatch', + instruction: 'Saturation and brightness selector. Use up, down, left and right arrow keys to select.' + } + }; + + // Virtual instances cache + var instances = {}; + var currentInstanceId = ''; + var defaultInstance = {}; + var hasInstance = false; + + /** + * Configure the color picker. + * @param {object} options Configuration options. + */ + function configure(options) { + if (typeof options !== 'object') { + return; + }var _loop = function _loop() + + { + switch (key) { + case 'el': + bindFields(options.el); + if (options.wrap !== false) { + wrapFields(options.el); + } + break; + case 'parent': + container = document.querySelector(options.parent); + if (container) { + container.appendChild(picker); + settings.parent = options.parent; + + // document.body is special + if (container === document.body) { + container = null; + } + } + break; + case 'themeMode': + settings.themeMode = options.themeMode; + if (options.themeMode === 'auto' && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + settings.themeMode = 'dark'; + } + // The lack of a break statement is intentional + case 'theme': + if (options.theme) { + settings.theme = options.theme; + } + + // Set the theme and color scheme + picker.className = "clr-picker clr-" + settings.theme + " clr-" + settings.themeMode; + + // Update the color picker's position if inline mode is in use + if (settings.inline) { + updatePickerPosition(); + } + break; + case 'rtl': + settings.rtl = !!options.rtl; + document.querySelectorAll('.clr-field').forEach(function (field) {return field.classList.toggle('clr-rtl', settings.rtl);}); + break; + case 'margin': + options.margin *= 1; + settings.margin = !isNaN(options.margin) ? options.margin : settings.margin; + break; + case 'wrap': + if (options.el && options.wrap) { + wrapFields(options.el); + } + break; + case 'formatToggle': + settings.formatToggle = !!options.formatToggle; + getEl('clr-format').style.display = settings.formatToggle ? 'block' : 'none'; + if (settings.formatToggle) { + settings.format = 'auto'; + } + break; + case 'swatches': + if (Array.isArray(options.swatches)) { + var swatches = []; + + options.swatches.forEach(function (swatch, i) { + swatches.push(""); + }); + + getEl('clr-swatches').innerHTML = swatches.length ? "
    " + swatches.join('') + "
    " : ''; + settings.swatches = options.swatches.slice(); + } + break; + case 'swatchesOnly': + settings.swatchesOnly = !!options.swatchesOnly; + picker.setAttribute('data-minimal', settings.swatchesOnly); + break; + case 'alpha': + settings.alpha = !!options.alpha; + picker.setAttribute('data-alpha', settings.alpha); + break; + case 'inline': + settings.inline = !!options.inline; + picker.setAttribute('data-inline', settings.inline); + + if (settings.inline) { + var defaultColor = options.defaultColor || settings.defaultColor; + + currentFormat = getColorFormatFromStr(defaultColor); + updatePickerPosition(); + setColorFromStr(defaultColor); + } + break; + case 'clearButton': + // Backward compatibility + if (typeof options.clearButton === 'object') { + if (options.clearButton.label) { + settings.clearLabel = options.clearButton.label; + clearButton.innerHTML = settings.clearLabel; + } + + options.clearButton = options.clearButton.show; + } + + settings.clearButton = !!options.clearButton; + clearButton.style.display = settings.clearButton ? 'block' : 'none'; + break; + case 'clearLabel': + settings.clearLabel = options.clearLabel; + clearButton.innerHTML = settings.clearLabel; + break; + case 'closeButton': + settings.closeButton = !!options.closeButton; + + if (settings.closeButton) { + picker.insertBefore(closeButton, colorPreview); + } else { + colorPreview.appendChild(closeButton); + } + + break; + case 'closeLabel': + settings.closeLabel = options.closeLabel; + closeButton.innerHTML = settings.closeLabel; + break; + case 'a11y': + var labels = options.a11y; + var update = false; + + if (typeof labels === 'object') { + for (var label in labels) { + if (labels[label] && settings.a11y[label]) { + settings.a11y[label] = labels[label]; + update = true; + } + } + } + + if (update) { + var openLabel = getEl('clr-open-label'); + var swatchLabel = getEl('clr-swatch-label'); + + openLabel.innerHTML = settings.a11y.open; + swatchLabel.innerHTML = settings.a11y.swatch; + closeButton.setAttribute('aria-label', settings.a11y.close); + clearButton.setAttribute('aria-label', settings.a11y.clear); + hueSlider.setAttribute('aria-label', settings.a11y.hueSlider); + alphaSlider.setAttribute('aria-label', settings.a11y.alphaSlider); + colorValue.setAttribute('aria-label', settings.a11y.input); + colorArea.setAttribute('aria-label', settings.a11y.instruction); + } + break; + default: + settings[key] = options[key];} + + };for (var key in options) {_loop();} + } + + /** + * Add or update a virtual instance. + * @param {String} selector The CSS selector of the elements to which the instance is attached. + * @param {Object} options Per-instance options to apply. + */ + function setVirtualInstance(selector, options) { + if (typeof selector === 'string' && typeof options === 'object') { + instances[selector] = options; + hasInstance = true; + } + } + + /** + * Remove a virtual instance. + * @param {String} selector The CSS selector of the elements to which the instance is attached. + */ + function removeVirtualInstance(selector) { + delete instances[selector]; + + if (Object.keys(instances).length === 0) { + hasInstance = false; + + if (selector === currentInstanceId) { + resetVirtualInstance(); + } + } + } + + /** + * Attach a virtual instance to an element if it matches a selector. + * @param {Object} element Target element that will receive a virtual instance if applicable. + */ + function attachVirtualInstance(element) { + if (hasInstance) { + // These options can only be set globally, not per instance + var unsupportedOptions = ['el', 'wrap', 'rtl', 'inline', 'defaultColor', 'a11y'];var _loop2 = function _loop2() + + { + var options = instances[selector]; + + // If the element matches an instance's CSS selector + if (element.matches(selector)) { + currentInstanceId = selector; + defaultInstance = {}; + + // Delete unsupported options + unsupportedOptions.forEach(function (option) {return delete options[option];}); + + // Back up the default options so we can restore them later + for (var option in options) { + defaultInstance[option] = Array.isArray(settings[option]) ? settings[option].slice() : settings[option]; + } + + // Set the instance's options + configure(options);return "break"; + + } + };for (var selector in instances) {var _ret = _loop2();if (_ret === "break") break;} + } + } + + /** + * Revert any per-instance options that were previously applied. + */ + function resetVirtualInstance() { + if (Object.keys(defaultInstance).length > 0) { + configure(defaultInstance); + currentInstanceId = ''; + defaultInstance = {}; + } + } + + /** + * Bind the color picker to input fields that match the selector. + * @param {string} selector One or more selectors pointing to input fields. + */ + function bindFields(selector) { + // Show the color picker on click on the input fields that match the selector + addListener(document, 'click', selector, function (event) { + // Skip if inline mode is in use + if (settings.inline) { + return; + } + + // Apply any per-instance options first + attachVirtualInstance(event.target); + + currentEl = event.target; + oldColor = currentEl.value; + currentFormat = getColorFormatFromStr(oldColor); + picker.classList.add('clr-open'); + + updatePickerPosition(); + setColorFromStr(oldColor); + + if (settings.focusInput || settings.selectInput) { + colorValue.focus({ preventScroll: true }); + } + + if (settings.selectInput) { + colorValue.select(); + } + + // Always focus the first element when using keyboard navigation + if (keyboardNav || settings.swatchesOnly) { + getFocusableElements().shift().focus(); + } + + // Trigger an "open" event + currentEl.dispatchEvent(new Event('open', { bubbles: true })); + }); + + // Update the color preview of the input fields that match the selector + addListener(document, 'input', selector, function (event) { + var parent = event.target.parentNode; + + // Only update the preview if the field has been previously wrapped + if (parent.classList.contains('clr-field')) { + parent.style.color = event.target.value; + } + }); + } + + /** + * Update the color picker's position and the color gradient's offset + */ + function updatePickerPosition() { + if (!picker || !currentEl && !settings.inline) return; //** DO NOT REMOVE: in case called before initialized + var parent = container; + var scrollY = window.scrollY; + var pickerWidth = picker.offsetWidth; + var pickerHeight = picker.offsetHeight; + var reposition = { left: false, top: false }; + var parentStyle, parentMarginTop, parentBorderTop; + var offset = { x: 0, y: 0 }; + + if (parent) { + parentStyle = window.getComputedStyle(parent); + parentMarginTop = parseFloat(parentStyle.marginTop); + parentBorderTop = parseFloat(parentStyle.borderTopWidth); + + offset = parent.getBoundingClientRect(); + offset.y += parentBorderTop + scrollY; + } + + if (!settings.inline) { + var coords = currentEl.getBoundingClientRect(); + var left = coords.x; + var top = scrollY + coords.y + coords.height + settings.margin; + + // If the color picker is inside a custom container + // set the position relative to it + if (parent) { + left -= offset.x; + top -= offset.y; + + if (left + pickerWidth > parent.clientWidth) { + left += coords.width - pickerWidth; + reposition.left = true; + } + + if (top + pickerHeight > parent.clientHeight - parentMarginTop) { + if (pickerHeight + settings.margin <= coords.top - (offset.y - scrollY)) { + top -= coords.height + pickerHeight + settings.margin * 2; + reposition.top = true; + } + } + + top += parent.scrollTop; + + // Otherwise set the position relative to the whole document + } else { + if (left + pickerWidth > document.documentElement.clientWidth) { + left += coords.width - pickerWidth; + reposition.left = true; + } + + if (top + pickerHeight - scrollY > document.documentElement.clientHeight) { + if (pickerHeight + settings.margin <= coords.top) { + top = scrollY + coords.y - pickerHeight - settings.margin; + reposition.top = true; + } + } + } + + picker.classList.toggle('clr-left', reposition.left); + picker.classList.toggle('clr-top', reposition.top); + picker.style.left = left + "px"; + picker.style.top = top + "px"; + offset.x += picker.offsetLeft; + offset.y += picker.offsetTop; + } + + colorAreaDims = { + width: colorArea.offsetWidth, + height: colorArea.offsetHeight, + x: colorArea.offsetLeft + offset.x, + y: colorArea.offsetTop + offset.y + }; + } + + /** + * Wrap the linked input fields in a div that adds a color preview. + * @param {string} selector One or more selectors pointing to input fields. + */ + function wrapFields(selector) { + document.querySelectorAll(selector).forEach(function (field) { + var parentNode = field.parentNode; + + if (!parentNode.classList.contains('clr-field')) { + var wrapper = document.createElement('div'); + var classes = 'clr-field'; + + if (settings.rtl || field.classList.contains('clr-rtl')) { + classes += ' clr-rtl'; + } + + wrapper.innerHTML = ""; + parentNode.insertBefore(wrapper, field); + wrapper.setAttribute('class', classes); + wrapper.style.color = field.value; + wrapper.appendChild(field); + } + }); + } + + /** + * Close the color picker. + * @param {boolean} [revert] If true, revert the color to the original value. + */ + function closePicker(revert) { + if (currentEl && !settings.inline) { + var prevEl = currentEl; + + // Revert the color to the original value if needed + if (revert) { + // This will prevent the "change" event on the colorValue input to execute its handler + currentEl = null; + + if (oldColor !== prevEl.value) { + prevEl.value = oldColor; + + // Trigger an "input" event to force update the thumbnail next to the input field + prevEl.dispatchEvent(new Event('input', { bubbles: true })); + } + } + + // Trigger a "change" event if needed + setTimeout(function () {// Add this to the end of the event loop + if (oldColor !== prevEl.value) { + prevEl.dispatchEvent(new Event('change', { bubbles: true })); + } + }); + + // Hide the picker dialog + picker.classList.remove('clr-open'); + + // Reset any previously set per-instance options + if (hasInstance) { + resetVirtualInstance(); + } + + // Trigger a "close" event + prevEl.dispatchEvent(new Event('close', { bubbles: true })); + + if (settings.focusInput) { + prevEl.focus({ preventScroll: true }); + } + + // This essentially marks the picker as closed + currentEl = null; + } + } + + /** + * Set the active color from a string. + * @param {string} str String representing a color. + */ + function setColorFromStr(str) { + var rgba = strToRGBA(str); + var hsva = RGBAtoHSVA(rgba); + + updateMarkerA11yLabel(hsva.s, hsva.v); + updateColor(rgba, hsva); + + // Update the UI + hueSlider.value = hsva.h; + picker.style.color = "hsl(" + hsva.h + ", 100%, 50%)"; + hueMarker.style.left = hsva.h / 360 * 100 + "%"; + + colorMarker.style.left = colorAreaDims.width * hsva.s / 100 + "px"; + colorMarker.style.top = colorAreaDims.height - colorAreaDims.height * hsva.v / 100 + "px"; + + alphaSlider.value = hsva.a * 100; + alphaMarker.style.left = hsva.a * 100 + "%"; + } + + /** + * Guess the color format from a string. + * @param {string} str String representing a color. + * @return {string} The color format. + */ + function getColorFormatFromStr(str) { + var format = str.substring(0, 3).toLowerCase(); + + if (format === 'rgb' || format === 'hsl') { + return format; + } + + return 'hex'; + } + + /** + * Copy the active color to the linked input field. + * @param {number} [color] Color value to override the active color. + */ + function pickColor(color) { + color = color !== undefined ? color : colorValue.value; + + if (currentEl) { + currentEl.value = color; + currentEl.dispatchEvent(new Event('input', { bubbles: true })); + } + + if (settings.onChange) { + settings.onChange.call(window, color); + } + + document.dispatchEvent(new CustomEvent('coloris:pick', { detail: { color: color } })); + } + + /** + * Set the active color based on a specific point in the color gradient. + * @param {number} x Left position. + * @param {number} y Top position. + */ + function setColorAtPosition(x, y) { + var hsva = { + h: hueSlider.value * 1, + s: x / colorAreaDims.width * 100, + v: 100 - y / colorAreaDims.height * 100, + a: alphaSlider.value / 100 + }; + var rgba = HSVAtoRGBA(hsva); + + updateMarkerA11yLabel(hsva.s, hsva.v); + updateColor(rgba, hsva); + pickColor(); + } + + /** + * Update the color marker's accessibility label. + * @param {number} saturation + * @param {number} value + */ + function updateMarkerA11yLabel(saturation, value) { + var label = settings.a11y.marker; + + saturation = saturation.toFixed(1) * 1; + value = value.toFixed(1) * 1; + label = label.replace('{s}', saturation); + label = label.replace('{v}', value); + colorMarker.setAttribute('aria-label', label); + } + + // + /** + * Get the pageX and pageY positions of the pointer. + * @param {object} event The MouseEvent or TouchEvent object. + * @return {object} The pageX and pageY positions. + */ + function getPointerPosition(event) { + return { + pageX: event.changedTouches ? event.changedTouches[0].pageX : event.pageX, + pageY: event.changedTouches ? event.changedTouches[0].pageY : event.pageY + }; + } + + /** + * Move the color marker when dragged. + * @param {object} event The MouseEvent object. + */ + function moveMarker(event) { + var pointer = getPointerPosition(event); + var x = pointer.pageX - colorAreaDims.x; + var y = pointer.pageY - colorAreaDims.y; + + if (container) { + y += container.scrollTop; + } + + setMarkerPosition(x, y); + + // Prevent scrolling while dragging the marker + event.preventDefault(); + event.stopPropagation(); + } + + /** + * Move the color marker when the arrow keys are pressed. + * @param {number} offsetX The horizontal amount to move. + * @param {number} offsetY The vertical amount to move. + */ + function moveMarkerOnKeydown(offsetX, offsetY) { + var x = colorMarker.style.left.replace('px', '') * 1 + offsetX; + var y = colorMarker.style.top.replace('px', '') * 1 + offsetY; + + setMarkerPosition(x, y); + } + + /** + * Set the color marker's position. + * @param {number} x Left position. + * @param {number} y Top position. + */ + function setMarkerPosition(x, y) { + // Make sure the marker doesn't go out of bounds + x = x < 0 ? 0 : x > colorAreaDims.width ? colorAreaDims.width : x; + y = y < 0 ? 0 : y > colorAreaDims.height ? colorAreaDims.height : y; + + // Set the position + colorMarker.style.left = x + "px"; + colorMarker.style.top = y + "px"; + + // Update the color + setColorAtPosition(x, y); + + // Make sure the marker is focused + colorMarker.focus(); + } + + /** + * Update the color picker's input field and preview thumb. + * @param {Object} rgba Red, green, blue and alpha values. + * @param {Object} [hsva] Hue, saturation, value and alpha values. + */ + function updateColor(rgba, hsva) {if (rgba === void 0) {rgba = {};}if (hsva === void 0) {hsva = {};} + var format = settings.format; + + for (var key in rgba) { + currentColor[key] = rgba[key]; + } + + for (var _key in hsva) { + currentColor[_key] = hsva[_key]; + } + + var hex = RGBAToHex(currentColor); + var opaqueHex = hex.substring(0, 7); + + colorMarker.style.color = opaqueHex; + alphaMarker.parentNode.style.color = opaqueHex; + alphaMarker.style.color = hex; + colorPreview.style.color = hex; + + // Force repaint the color and alpha gradients as a workaround for a Google Chrome bug + colorArea.style.display = 'none'; + colorArea.offsetHeight; + colorArea.style.display = ''; + alphaMarker.nextElementSibling.style.display = 'none'; + alphaMarker.nextElementSibling.offsetHeight; + alphaMarker.nextElementSibling.style.display = ''; + + if (format === 'mixed') { + format = currentColor.a === 1 ? 'hex' : 'rgb'; + } else if (format === 'auto') { + format = currentFormat; + } + + switch (format) { + case 'hex': + colorValue.value = hex; + break; + case 'rgb': + colorValue.value = RGBAToStr(currentColor); + break; + case 'hsl': + colorValue.value = HSLAToStr(HSVAtoHSLA(currentColor)); + break;} + + + // Select the current format in the format switcher + document.querySelector(".clr-format [value=\"" + format + "\"]").checked = true; + } + + /** + * Set the hue when its slider is moved. + */ + function setHue() { + var hue = hueSlider.value * 1; + var x = colorMarker.style.left.replace('px', '') * 1; + var y = colorMarker.style.top.replace('px', '') * 1; + + picker.style.color = "hsl(" + hue + ", 100%, 50%)"; + hueMarker.style.left = hue / 360 * 100 + "%"; + + setColorAtPosition(x, y); + } + + /** + * Set the alpha when its slider is moved. + */ + function setAlpha() { + var alpha = alphaSlider.value / 100; + + alphaMarker.style.left = alpha * 100 + "%"; + updateColor({ a: alpha }); + pickColor(); + } + + /** + * Convert HSVA to RGBA. + * @param {object} hsva Hue, saturation, value and alpha values. + * @return {object} Red, green, blue and alpha values. + */ + function HSVAtoRGBA(hsva) { + var saturation = hsva.s / 100; + var value = hsva.v / 100; + var chroma = saturation * value; + var hueBy60 = hsva.h / 60; + var x = chroma * (1 - Math.abs(hueBy60 % 2 - 1)); + var m = value - chroma; + + chroma = chroma + m; + x = x + m; + + var index = Math.floor(hueBy60) % 6; + var red = [chroma, x, m, m, x, chroma][index]; + var green = [x, chroma, chroma, x, m, m][index]; + var blue = [m, m, x, chroma, chroma, x][index]; + + return { + r: Math.round(red * 255), + g: Math.round(green * 255), + b: Math.round(blue * 255), + a: hsva.a + }; + } + + /** + * Convert HSVA to HSLA. + * @param {object} hsva Hue, saturation, value and alpha values. + * @return {object} Hue, saturation, lightness and alpha values. + */ + function HSVAtoHSLA(hsva) { + var value = hsva.v / 100; + var lightness = value * (1 - hsva.s / 100 / 2); + var saturation; + + if (lightness > 0 && lightness < 1) { + saturation = Math.round((value - lightness) / Math.min(lightness, 1 - lightness) * 100); + } + + return { + h: hsva.h, + s: saturation || 0, + l: Math.round(lightness * 100), + a: hsva.a + }; + } + + /** + * Convert RGBA to HSVA. + * @param {object} rgba Red, green, blue and alpha values. + * @return {object} Hue, saturation, value and alpha values. + */ + function RGBAtoHSVA(rgba) { + var red = rgba.r / 255; + var green = rgba.g / 255; + var blue = rgba.b / 255; + var xmax = Math.max(red, green, blue); + var xmin = Math.min(red, green, blue); + var chroma = xmax - xmin; + var value = xmax; + var hue = 0; + var saturation = 0; + + if (chroma) { + if (xmax === red) {hue = (green - blue) / chroma;} + if (xmax === green) {hue = 2 + (blue - red) / chroma;} + if (xmax === blue) {hue = 4 + (red - green) / chroma;} + if (xmax) {saturation = chroma / xmax;} + } + + hue = Math.floor(hue * 60); + + return { + h: hue < 0 ? hue + 360 : hue, + s: Math.round(saturation * 100), + v: Math.round(value * 100), + a: rgba.a + }; + } + + /** + * Parse a string to RGBA. + * @param {string} str String representing a color. + * @return {object} Red, green, blue and alpha values. + */ + function strToRGBA(str) { + var regex = /^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i; + var match, rgba; + + // Default to black for invalid color strings + ctx.fillStyle = '#000'; + + // Use canvas to convert the string to a valid color string + ctx.fillStyle = str; + match = regex.exec(ctx.fillStyle); + + if (match) { + rgba = { + r: match[3] * 1, + g: match[4] * 1, + b: match[5] * 1, + a: match[6] * 1 + }; + + // Workaround to mitigate a Chromium bug where the alpha value is rounded incorrectly + rgba.a = +rgba.a.toFixed(2); + + } else { + match = ctx.fillStyle.replace('#', '').match(/.{2}/g).map(function (h) {return parseInt(h, 16);}); + rgba = { + r: match[0], + g: match[1], + b: match[2], + a: 1 + }; + } + + return rgba; + } + + /** + * Convert RGBA to Hex. + * @param {object} rgba Red, green, blue and alpha values. + * @return {string} Hex color string. + */ + function RGBAToHex(rgba) { + var R = rgba.r.toString(16); + var G = rgba.g.toString(16); + var B = rgba.b.toString(16); + var A = ''; + + if (rgba.r < 16) { + R = '0' + R; + } + + if (rgba.g < 16) { + G = '0' + G; + } + + if (rgba.b < 16) { + B = '0' + B; + } + + if (settings.alpha && (rgba.a < 1 || settings.forceAlpha)) { + var alpha = rgba.a * 255 | 0; + A = alpha.toString(16); + + if (alpha < 16) { + A = '0' + A; + } + } + + return '#' + R + G + B + A; + } + + /** + * Convert RGBA values to a CSS rgb/rgba string. + * @param {object} rgba Red, green, blue and alpha values. + * @return {string} CSS color string. + */ + function RGBAToStr(rgba) { + if (!settings.alpha || rgba.a === 1 && !settings.forceAlpha) { + return "rgb(" + rgba.r + ", " + rgba.g + ", " + rgba.b + ")"; + } else { + return "rgba(" + rgba.r + ", " + rgba.g + ", " + rgba.b + ", " + rgba.a + ")"; + } + } + + /** + * Convert HSLA values to a CSS hsl/hsla string. + * @param {object} hsla Hue, saturation, lightness and alpha values. + * @return {string} CSS color string. + */ + function HSLAToStr(hsla) { + if (!settings.alpha || hsla.a === 1 && !settings.forceAlpha) { + return "hsl(" + hsla.h + ", " + hsla.s + "%, " + hsla.l + "%)"; + } else { + return "hsla(" + hsla.h + ", " + hsla.s + "%, " + hsla.l + "%, " + hsla.a + ")"; + } + } + + /** + * Init the color picker. + */ + function init() { + if (document.getElementById('clr-picker')) return; //** DO NOT REMOVE: Prevent binding events multiple times + // Render the UI + container = null; + picker = document.createElement('div'); + picker.setAttribute('id', 'clr-picker'); + picker.className = 'clr-picker'; + picker.innerHTML = + "" + ("
    ") + + '
    ' + + '
    ' + + '
    ' + ("") + + '
    ' + + '
    ' + + '
    ' + ("") + + '
    ' + + '' + + '
    ' + + '
    ' + + '
    ' + ("" + + settings.a11y.format + "") + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
    ' + + '
    ' + + '
    ' + ("") + + '
    ' + ("") + + '
    ' + ("") + (""); + + // Append the color picker to the DOM + document.body.appendChild(picker); + + // Reference the UI elements + colorArea = getEl('clr-color-area'); + colorMarker = getEl('clr-color-marker'); + clearButton = getEl('clr-clear'); + closeButton = getEl('clr-close'); + colorPreview = getEl('clr-color-preview'); + colorValue = getEl('clr-color-value'); + hueSlider = getEl('clr-hue-slider'); + hueMarker = getEl('clr-hue-marker'); + alphaSlider = getEl('clr-alpha-slider'); + alphaMarker = getEl('clr-alpha-marker'); + + // Bind the picker to the default selector + bindFields(settings.el); + wrapFields(settings.el); + + addListener(picker, 'mousedown', function (event) { + picker.classList.remove('clr-keyboard-nav'); + event.stopPropagation(); + }); + + addListener(colorArea, 'mousedown', function (event) { + addListener(document, 'mousemove', moveMarker); + }); + + addListener(colorArea, 'touchstart', function (event) { + document.addEventListener('touchmove', moveMarker, { passive: false }); + }); + + addListener(colorMarker, 'mousedown', function (event) { + addListener(document, 'mousemove', moveMarker); + }); + + addListener(colorMarker, 'touchstart', function (event) { + document.addEventListener('touchmove', moveMarker, { passive: false }); + }); + + addListener(colorValue, 'change', function (event) { + if (currentEl || settings.inline) { + setColorFromStr(colorValue.value); + pickColor(); + } + }); + + addListener(clearButton, 'click', function (event) { + pickColor(''); + closePicker(); + }); + + addListener(closeButton, 'click', function (event) { + pickColor(); + closePicker(); + }); + + addListener(document, 'click', '.clr-format input', function (event) { + currentFormat = event.target.value; + updateColor(); + pickColor(); + }); + + addListener(picker, 'click', '.clr-swatches button', function (event) { + setColorFromStr(event.target.textContent); + pickColor(); + + if (settings.swatchesOnly) { + closePicker(); + } + }); + + addListener(document, 'mouseup', function (event) { + document.removeEventListener('mousemove', moveMarker); + }); + + addListener(document, 'touchend', function (event) { + document.removeEventListener('touchmove', moveMarker); + }); + + addListener(document, 'mousedown', function (event) { + keyboardNav = false; + picker.classList.remove('clr-keyboard-nav'); + closePicker(); + }); + + addListener(document, 'keydown', function (event) { + var key = event.key; + var target = event.target; + var shiftKey = event.shiftKey; + var navKeys = ['Tab', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight']; + + if (key === 'Escape') { + closePicker(true); + + // Display focus rings when using the keyboard + } else if (navKeys.includes(key)) { + keyboardNav = true; + picker.classList.add('clr-keyboard-nav'); + } + + // Trap the focus within the color picker while it's open + if (key === 'Tab' && target.matches('.clr-picker *')) { + var focusables = getFocusableElements(); + var firstFocusable = focusables.shift(); + var lastFocusable = focusables.pop(); + + if (shiftKey && target === firstFocusable) { + lastFocusable.focus(); + event.preventDefault(); + } else if (!shiftKey && target === lastFocusable) { + firstFocusable.focus(); + event.preventDefault(); + } + } + }); + + addListener(document, 'click', '.clr-field button', function (event) { + // Reset any previously set per-instance options + if (hasInstance) { + resetVirtualInstance(); + } + + // Open the color picker + event.target.nextElementSibling.dispatchEvent(new Event('click', { bubbles: true })); + }); + + addListener(colorMarker, 'keydown', function (event) { + var movements = { + ArrowUp: [0, -1], + ArrowDown: [0, 1], + ArrowLeft: [-1, 0], + ArrowRight: [1, 0] + }; + + if (Object.keys(movements).includes(event.key)) { + moveMarkerOnKeydown.apply(void 0, movements[event.key]); + event.preventDefault(); + } + }); + + addListener(colorArea, 'click', moveMarker); + addListener(hueSlider, 'input', setHue); + addListener(alphaSlider, 'input', setAlpha); + } + + /** + * Return a list of focusable elements within the color picker. + * @return {array} The list of focusable DOM elemnts. + */ + function getFocusableElements() { + var controls = Array.from(picker.querySelectorAll('input, button')); + var focusables = controls.filter(function (node) {return !!node.offsetWidth;}); + + return focusables; + } + + /** + * Shortcut for getElementById to optimize the minified JS. + * @param {string} id The element id. + * @return {object} The DOM element with the provided id. + */ + function getEl(id) { + return document.getElementById(id); + } + + /** + * Shortcut for addEventListener to optimize the minified JS. + * @param {object} context The context to which the listener is attached. + * @param {string} type Event type. + * @param {(string|function)} selector Event target if delegation is used, event handler if not. + * @param {function} [fn] Event handler if delegation is used. + */ + function addListener(context, type, selector, fn) { + var matches = Element.prototype.matches || Element.prototype.msMatchesSelector; + + // Delegate event to the target of the selector + if (typeof selector === 'string') { + context.addEventListener(type, function (event) { + if (matches.call(event.target, selector)) { + fn.call(event.target, event); + } + }); + + // If the selector is not a string then it's a function + // in which case we need a regular event listener + } else { + fn = selector; + context.addEventListener(type, fn); + } + } + + /** + * Call a function only when the DOM is ready. + * @param {function} fn The function to call. + * @param {array} [args] Arguments to pass to the function. + */ + function DOMReady(fn, args) { + args = args !== undefined ? args : []; + + if (document.readyState !== 'loading') { + fn.apply(void 0, args); + } else { + document.addEventListener('DOMContentLoaded', function () { + fn.apply(void 0, args); + }); + } + } + + // Polyfill for Nodelist.forEach + if (NodeList !== undefined && NodeList.prototype && !NodeList.prototype.forEach) { + NodeList.prototype.forEach = Array.prototype.forEach; + } + + //***************************************************** + //******* NPM: Custom code starts here **************** + //***************************************************** + + /** + * Copy the active color to the linked input field and set the color. + * @param {string} [color] Color value to override the active color. + * @param {HTMLelement} [target] the element setting the color on + */ + function setColor(color, target) { + currentEl = target; + oldColor = currentEl.value; + attachVirtualInstance(target); + currentFormat = getColorFormatFromStr(color); + updatePickerPosition(); + setColorFromStr(color); + pickColor(); + if (oldColor !== color) { + currentEl.dispatchEvent(new Event('change', { bubbles: true })); + } + } + + // Expose the color picker to the global scope + var Coloris = function () { + var methods = { + init: init, + set: configure, + wrap: wrapFields, + close: closePicker, + setInstance: setVirtualInstance, + setColor: setColor, + removeInstance: removeVirtualInstance, + updatePosition: updatePickerPosition + }; + + function Coloris(options) { + DOMReady(function () { + if (options) { + if (typeof options === 'string') { + bindFields(options); + } else { + configure(options); + } + } + }); + }var _loop3 = function _loop3(key) + + { + Coloris[key] = function () {for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {args[_key2] = arguments[_key2];} + DOMReady(methods[key], args); + }; + };for (var key in methods) {_loop3(key);} + + // handle window resize events re-aligning the panel + DOMReady(function () { + window.addEventListener('resize', function (event) {Coloris.updatePosition();}); + window.addEventListener('scroll', function (event) {Coloris.updatePosition();}); + }); + + return Coloris; + }(); + + // Ensure init function is available not only as as a default import + Coloris.coloris = Coloris; + + // Init the color picker when the DOM is ready + return Coloris; + + }(window, document, Math); +}); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/umd/coloris.min.js b/gin_ops/static/dist/libs/melloware/coloris/dist/umd/coloris.min.js new file mode 100644 index 0000000..df8a59a --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/umd/coloris.min.js @@ -0,0 +1,9 @@ +!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof module&&module.exports?module.exports=t():(e.Coloris=t(),"object"==typeof window&&e.Coloris.init())}("undefined"!=typeof self?self:void 0,function(){ +/*! + * Copyright (c) 2021-2023 Momo Bassit. + * Licensed under the MIT License (MIT) + * https://github.com/mdbassit/Coloris + * Version: 0.19.0 + * NPM: https://github.com/melloware/coloris-npm + */ +return h=window,b=document,v=Math,i=b.createElement("canvas").getContext("2d"),O={el:"[data-coloris]",parent:"body",theme:"default",themeMode:"light",rtl:!(H={r:0,g:0,b:0,h:0,s:0,v:0,a:1}),wrap:!0,margin:2,format:"hex",formatToggle:!1,swatches:[],swatchesOnly:!1,alpha:!0,forceAlpha:!1,focusInput:!0,selectInput:!1,inline:!1,defaultColor:"#000000",clearButton:!1,clearLabel:"Clear",closeButton:!1,closeLabel:"Close",onChange:function(){},a11y:{open:"Open color picker",close:"Close color picker",clear:"Clear the selected color",marker:"Saturation: {s}. Brightness: {v}.",hueSlider:"Hue slider",alphaSlider:"Opacity slider",input:"Color value field",format:"Color format",swatch:"Color swatch",instruction:"Saturation and brightness selector. Use up, down, left and right arrow keys to select."}},D={},I="",j=!(N={}),void 0!==NodeList&&NodeList.prototype&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),(Z=function(){var r={init:G,set:n,wrap:s,close:o,setInstance:W,setColor:J,removeInstance:q,updatePosition:c};function t(e){$(function(){e&&("string"==typeof e?P:n)(e)})}for(var e in r)!function(a){t[a]=function(){for(var e=arguments.length,t=new Array(e),l=0;l'+e+"")}),f("clr-swatches").innerHTML=l.length?"
    "+l.join("")+"
    ":"",O.swatches=o.swatches.slice());break;case"swatchesOnly":O.swatchesOnly=!!o.swatchesOnly,g.setAttribute("data-minimal",O.swatchesOnly);break;case"alpha":O.alpha=!!o.alpha,g.setAttribute("data-alpha",O.alpha);break;case"inline":O.inline=!!o.inline,g.setAttribute("data-inline",O.inline),O.inline&&(e=o.defaultColor||O.defaultColor,M=R(e),c(),u(e));break;case"clearButton":"object"==typeof o.clearButton&&(o.clearButton.label&&(O.clearLabel=o.clearButton.label,x.innerHTML=O.clearLabel),o.clearButton=o.clearButton.show),O.clearButton=!!o.clearButton,x.style.display=O.clearButton?"block":"none";break;case"clearLabel":O.clearLabel=o.clearLabel,x.innerHTML=O.clearLabel;break;case"closeButton":O.closeButton=!!o.closeButton,O.closeButton?g.insertBefore(A,L):L.appendChild(A);break;case"closeLabel":O.closeLabel=o.closeLabel,A.innerHTML=O.closeLabel;break;case"a11y":var e,t,a=o.a11y,r=!1;if("object"==typeof a)for(var n in a)a[n]&&O.a11y[n]&&(O.a11y[n]=a[n],r=!0);r&&(e=f("clr-open-label"),t=f("clr-swatch-label"),e.innerHTML=O.a11y.open,t.innerHTML=O.a11y.swatch,A.setAttribute("aria-label",O.a11y.close),x.setAttribute("aria-label",O.a11y.clear),S.setAttribute("aria-label",O.a11y.hueSlider),C.setAttribute("aria-label",O.a11y.alphaSlider),E.setAttribute("aria-label",O.a11y.input),m.setAttribute("aria-label",O.a11y.instruction));break;default:O[i]=o[i]}}()}function W(e,t){"string"==typeof e&&"object"==typeof t&&(D[e]=t,j=!0)}function q(e){delete D[e],0===Object.keys(D).length&&(j=!1,e===I)&&l()}function F(l){if(j){var a,r=["el","wrap","rtl","inline","defaultColor","a11y"];for(a in D)if("break"===function(){var t=D[a];if(l.matches(a)){for(var e in I=a,N={},r.forEach(function(e){return delete t[e]}),t)N[e]=Array.isArray(O[e])?O[e].slice():O[e];return n(t),"break"}}())break}}function l(){0e.clientWidth&&(c+=i.width-l,r.left=!0),s+a>e.clientHeight-n&&a+O.margin<=i.top-(o.y-t)&&(s-=i.height+a+2*O.margin,r.top=!0),s+=e.scrollTop):(c+l>b.documentElement.clientWidth&&(c+=i.width-l,r.left=!0),s+a-t>b.documentElement.clientHeight&&a+O.margin<=i.top&&(s=t+i.y-a-O.margin,r.top=!0)),g.classList.toggle("clr-left",r.left),g.classList.toggle("clr-top",r.top),g.style.left=c+"px",g.style.top=s+"px",o.x+=g.offsetLeft,o.y+=g.offsetTop),w={width:m.offsetWidth,height:m.offsetHeight,x:m.offsetLeft+o.x,y:m.offsetTop+o.y})}function s(e){b.querySelectorAll(e).forEach(function(e){var t,l,a=e.parentNode;a.classList.contains("clr-field")||(t=b.createElement("div"),l="clr-field",(O.rtl||e.classList.contains("clr-rtl"))&&(l+=" clr-rtl"),t.innerHTML='',a.insertBefore(t,e),t.setAttribute("class",l),t.style.color=e.value,t.appendChild(e))})}function o(e){var t;B&&!O.inline&&(t=B,e&&(B=null,r!==t.value)&&(t.value=r,t.dispatchEvent(new Event("input",{bubbles:!0}))),setTimeout(function(){r!==t.value&&t.dispatchEvent(new Event("change",{bubbles:!0}))}),g.classList.remove("clr-open"),j&&l(),t.dispatchEvent(new Event("close",{bubbles:!0})),O.focusInput&&t.focus({preventScroll:!0}),B=null)}function u(e){var e=function(e){var t;i.fillStyle="#000",i.fillStyle=e,(e=/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i.exec(i.fillStyle))?(t={r:+e[3],g:+e[4],b:+e[5],a:+e[6]}).a=+t.a.toFixed(2):(e=i.fillStyle.replace("#","").match(/.{2}/g).map(function(e){return parseInt(e,16)}),t={r:e[0],g:e[1],b:e[2],a:1});return t}(e),t=function(e){var t=e.r/255,l=e.g/255,a=e.b/255,r=v.max(t,l,a),n=v.min(t,l,a),n=r-n,o=r,i=0,c=0;n&&(r===t&&(i=(l-a)/n),r===l&&(i=2+(a-t)/n),r===a&&(i=4+(t-l)/n),r)&&(c=n/r);return{h:(i=v.floor(60*i))<0?i+360:i,s:v.round(100*c),v:v.round(100*o),a:e.a}}(e);U(t.s,t.v),p(e,t),S.value=t.h,g.style.color="hsl("+t.h+", 100%, 50%)",Q.style.left=t.h/360*100+"%",k.style.left=w.width*t.s/100+"px",k.style.top=w.height-w.height*t.v/100+"px",C.value=100*t.a,T.style.left=100*t.a+"%"}function R(e){e=e.substring(0,3).toLowerCase();return"rgb"===e||"hsl"===e?e:"hex"}function d(e){e=void 0!==e?e:E.value,B&&(B.value=e,B.dispatchEvent(new Event("input",{bubbles:!0}))),O.onChange&&O.onChange.call(h,e),b.dispatchEvent(new CustomEvent("coloris:pick",{detail:{color:e}}))}function Y(e,t){var l,a,r,n,o,e={h:+S.value,s:e/w.width*100,v:100-t/w.height*100,a:C.value/100},i=(i=(t=e).s/100,l=t.v/100,i*=l,a=t.h/60,r=i*(1-v.abs(a%2-1)),i+=l-=i,r+=l,a=v.floor(a)%6,n=[i,r,l,l,r,i][a],o=[r,i,i,r,l,l][a],l=[l,l,r,i,i,r][a],{r:v.round(255*n),g:v.round(255*o),b:v.round(255*l),a:t.a});U(e.s,e.v),p(i,e),d()}function U(e,t){var l=O.a11y.marker;e=+e.toFixed(1),t=+t.toFixed(1),l=(l=l.replace("{s}",e)).replace("{v}",t),k.setAttribute("aria-label",l)}function t(e){var t={pageX:((t=e).changedTouches?t.changedTouches[0]:t).pageX,pageY:(t.changedTouches?t.changedTouches[0]:t).pageY},l=t.pageX-w.x,t=t.pageY-w.y;y&&(t+=y.scrollTop),X(l,t),e.preventDefault(),e.stopPropagation()}function X(e,t){e=e<0?0:e>w.width?w.width:e,t=t<0?0:t>w.height?w.height:t,k.style.left=e+"px",k.style.top=t+"px",Y(e,t),k.focus()}function p(e,t){void 0===t&&(t={});var l,a,r=O.format;for(l in e=void 0===e?{}:e)H[l]=e[l];for(a in t)H[a]=t[a];var n,o=function(e){var t=e.r.toString(16),l=e.g.toString(16),a=e.b.toString(16),r="";e.r<16&&(t="0"+t);e.g<16&&(l="0"+l);e.b<16&&(a="0"+a);O.alpha&&(e.a<1||O.forceAlpha)&&(e=255*e.a|0,r=e.toString(16),e<16)&&(r="0"+r);return"#"+t+l+a+r}(H),i=o.substring(0,7);switch(k.style.color=i,T.parentNode.style.color=i,T.style.color=o,L.style.color=o,m.style.display="none",m.offsetHeight,m.style.display="",T.nextElementSibling.style.display="none",T.nextElementSibling.offsetHeight,T.nextElementSibling.style.display="","mixed"===r?r=1===H.a?"hex":"rgb":"auto"===r&&(r=M),r){case"hex":E.value=o;break;case"rgb":E.value=(n=H,!O.alpha||1===n.a&&!O.forceAlpha?"rgb("+n.r+", "+n.g+", "+n.b+")":"rgba("+n.r+", "+n.g+", "+n.b+", "+n.a+")");break;case"hsl":E.value=(n=function(e){var t,l=e.v/100,a=l*(1-e.s/100/2);0
    '+O.a11y.format+'
    ",b.body.appendChild(g),m=f("clr-color-area"),k=f("clr-color-marker"),x=f("clr-clear"),A=f("clr-close"),L=f("clr-color-preview"),E=f("clr-color-value"),S=f("clr-hue-slider"),Q=f("clr-hue-marker"),C=f("clr-alpha-slider"),T=f("clr-alpha-marker"),P(O.el),s(O.el),a(g,"mousedown",function(e){g.classList.remove("clr-keyboard-nav"),e.stopPropagation()}),a(m,"mousedown",function(e){a(b,"mousemove",t)}),a(m,"touchstart",function(e){b.addEventListener("touchmove",t,{passive:!1})}),a(k,"mousedown",function(e){a(b,"mousemove",t)}),a(k,"touchstart",function(e){b.addEventListener("touchmove",t,{passive:!1})}),a(E,"change",function(e){(B||O.inline)&&(u(E.value),d())}),a(x,"click",function(e){d(""),o()}),a(A,"click",function(e){d(),o()}),a(b,"click",".clr-format input",function(e){M=e.target.value,p(),d()}),a(g,"click",".clr-swatches button",function(e){u(e.target.textContent),d(),O.swatchesOnly&&o()}),a(b,"mouseup",function(e){b.removeEventListener("mousemove",t)}),a(b,"touchend",function(e){b.removeEventListener("touchmove",t)}),a(b,"mousedown",function(e){V=!1,g.classList.remove("clr-keyboard-nav"),o()}),a(b,"keydown",function(e){var t,l=e.key,a=e.target,r=e.shiftKey;"Escape"===l?o(!0):["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(l)&&(V=!0,g.classList.add("clr-keyboard-nav")),"Tab"===l&&a.matches(".clr-picker *")&&(t=(l=K()).shift(),l=l.pop(),r&&a===t?(l.focus(),e.preventDefault()):r||a!==l||(t.focus(),e.preventDefault()))}),a(b,"click",".clr-field button",function(e){j&&l(),e.target.nextElementSibling.dispatchEvent(new Event("click",{bubbles:!0}))}),a(k,"keydown",function(e){var t={ArrowUp:[0,-1],ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0]};Object.keys(t).includes(e.key)&&(!function(e,t){X(+k.style.left.replace("px","")+e,+k.style.top.replace("px","")+t)}.apply(void 0,t[e.key]),e.preventDefault())}),a(m,"click",t),a(S,"input",e),a(C,"input",z))}function K(){return Array.from(g.querySelectorAll("input, button")).filter(function(e){return!!e.offsetWidth})}function f(e){return b.getElementById(e)}function a(e,t,l,a){var r=Element.prototype.matches||Element.prototype.msMatchesSelector;"string"==typeof l?e.addEventListener(t,function(e){r.call(e.target,l)&&a.call(e.target,e)}):(a=l,e.addEventListener(t,a))}function $(e,t){t=void 0!==t?t:[],"loading"!==b.readyState?e.apply(void 0,t):b.addEventListener("DOMContentLoaded",function(){e.apply(void 0,t)})}function J(e,t){r=(B=t).value,F(t),M=R(e),c(),u(e),d(),r!==e&&B.dispatchEvent(new Event("change",{bubbles:!0}))}var h,b,v,y,g,m,w,k,L,E,x,A,S,Q,C,T,B,M,r,V,i,H,O,D,I,N,j,Z}); \ No newline at end of file diff --git a/gin_ops/static/dist/libs/melloware/coloris/dist/umd/package.json b/gin_ops/static/dist/libs/melloware/coloris/dist/umd/package.json new file mode 100644 index 0000000..1cd945a --- /dev/null +++ b/gin_ops/static/dist/libs/melloware/coloris/dist/umd/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/gin_ops/static/dist/libs/nouislider/dist/nouislider.css b/gin_ops/static/dist/libs/nouislider/dist/nouislider.css new file mode 100644 index 0000000..d452a4b --- /dev/null +++ b/gin_ops/static/dist/libs/nouislider/dist/nouislider.css @@ -0,0 +1,304 @@ +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -ms-touch-action: none; + touch-action: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-target { + position: relative; +} +.noUi-base, +.noUi-connects { + width: 100%; + height: 100%; + position: relative; + z-index: 1; +} +/* Wrapper for all connect elements. + */ +.noUi-connects { + overflow: hidden; + z-index: 0; +} +.noUi-connect, +.noUi-origin { + will-change: transform; + position: absolute; + z-index: 1; + top: 0; + right: 0; + height: 100%; + width: 100%; + -ms-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -webkit-transform-style: preserve-3d; + transform-origin: 0 0; + transform-style: flat; +} +/* Offset direction + */ +.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin { + left: 0; + right: auto; +} +/* Give origins 0 height/width so they don't interfere with clicking the + * connect elements. + */ +.noUi-vertical .noUi-origin { + top: -100%; + width: 0; +} +.noUi-horizontal .noUi-origin { + height: 0; +} +.noUi-handle { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + position: absolute; +} +.noUi-touch-area { + height: 100%; + width: 100%; +} +.noUi-state-tap .noUi-connect, +.noUi-state-tap .noUi-origin { + -webkit-transition: transform 0.3s; + transition: transform 0.3s; +} +.noUi-state-drag * { + cursor: inherit !important; +} +/* Slider size and handle placement; + */ +.noUi-horizontal { + height: 18px; +} +.noUi-horizontal .noUi-handle { + width: 34px; + height: 28px; + right: -17px; + top: -6px; +} +.noUi-vertical { + width: 18px; +} +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + right: -6px; + bottom: -17px; +} +.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { + left: -17px; + right: auto; +} +/* Styling; + * Giving the connect element a border radius causes issues with using transform: scale + */ +.noUi-target { + background: #FAFAFA; + border-radius: 4px; + border: 1px solid #D3D3D3; + box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; +} +.noUi-connects { + border-radius: 3px; +} +.noUi-connect { + background: #3FB8AF; +} +/* Handles and cursors; + */ +.noUi-draggable { + cursor: ew-resize; +} +.noUi-vertical .noUi-draggable { + cursor: ns-resize; +} +.noUi-handle { + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; +} +.noUi-active { + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; +} +/* Handle stripes; + */ +.noUi-handle:before, +.noUi-handle:after { + content: ""; + display: block; + position: absolute; + height: 14px; + width: 1px; + background: #E8E7E6; + left: 14px; + top: 6px; +} +.noUi-handle:after { + left: 17px; +} +.noUi-vertical .noUi-handle:before, +.noUi-vertical .noUi-handle:after { + width: 14px; + height: 1px; + left: 6px; + top: 14px; +} +.noUi-vertical .noUi-handle:after { + top: 17px; +} +/* Disabled state; + */ +[disabled] .noUi-connect { + background: #B8B8B8; +} +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} +/* Base; + * + */ +.noUi-pips, +.noUi-pips * { + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-pips { + position: absolute; + color: #999; +} +/* Values; + * + */ +.noUi-value { + position: absolute; + white-space: nowrap; + text-align: center; +} +.noUi-value-sub { + color: #ccc; + font-size: 10px; +} +/* Markings; + * + */ +.noUi-marker { + position: absolute; + background: #CCC; +} +.noUi-marker-sub { + background: #AAA; +} +.noUi-marker-large { + background: #AAA; +} +/* Horizontal layout; + * + */ +.noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + left: 0; + width: 100%; +} +.noUi-value-horizontal { + -webkit-transform: translate(-50%, 50%); + transform: translate(-50%, 50%); +} +.noUi-rtl .noUi-value-horizontal { + -webkit-transform: translate(50%, 50%); + transform: translate(50%, 50%); +} +.noUi-marker-horizontal.noUi-marker { + margin-left: -1px; + width: 2px; + height: 5px; +} +.noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} +.noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} +/* Vertical layout; + * + */ +.noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + left: 100%; +} +.noUi-value-vertical { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + padding-left: 25px; +} +.noUi-rtl .noUi-value-vertical { + -webkit-transform: translate(0, 50%); + transform: translate(0, 50%); +} +.noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} +.noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} +.noUi-marker-vertical.noUi-marker-large { + width: 15px; +} +.noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; + white-space: nowrap; +} +.noUi-horizontal .noUi-tooltip { + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + left: 50%; + bottom: 120%; +} +.noUi-vertical .noUi-tooltip { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + top: 50%; + right: 120%; +} +.noUi-horizontal .noUi-origin > .noUi-tooltip { + -webkit-transform: translate(50%, 0); + transform: translate(50%, 0); + left: auto; + bottom: 10px; +} +.noUi-vertical .noUi-origin > .noUi-tooltip { + -webkit-transform: translate(0, -18px); + transform: translate(0, -18px); + top: auto; + right: 28px; +} diff --git a/gin_ops/static/dist/libs/nouislider/dist/nouislider.d.ts b/gin_ops/static/dist/libs/nouislider/dist/nouislider.d.ts new file mode 100644 index 0000000..118ad81 --- /dev/null +++ b/gin_ops/static/dist/libs/nouislider/dist/nouislider.d.ts @@ -0,0 +1,200 @@ +interface CssClasses { + target: string; + base: string; + origin: string; + handle: string; + handleLower: string; + handleUpper: string; + touchArea: string; + horizontal: string; + vertical: string; + background: string; + connect: string; + connects: string; + ltr: string; + rtl: string; + textDirectionLtr: string; + textDirectionRtl: string; + draggable: string; + drag: string; + tap: string; + active: string; + tooltip: string; + pips: string; + pipsHorizontal: string; + pipsVertical: string; + marker: string; + markerHorizontal: string; + markerVertical: string; + markerNormal: string; + markerLarge: string; + markerSub: string; + value: string; + valueHorizontal: string; + valueVertical: string; + valueNormal: string; + valueLarge: string; + valueSub: string; +} +export interface PartialFormatter { + to: (value: number) => string | number; + from?: (value: string) => number | false; +} +export interface Formatter extends PartialFormatter { + from: (value: string) => number | false; +} +export declare enum PipsMode { + Range = "range", + Steps = "steps", + Positions = "positions", + Count = "count", + Values = "values" +} +export declare enum PipsType { + None = -1, + NoValue = 0, + LargeValue = 1, + SmallValue = 2 +} +declare type WrappedSubRange = [number] | [number, number]; +declare type SubRange = number | WrappedSubRange; +interface Range { + min: SubRange; + max: SubRange; + [key: `${number}%`]: SubRange; +} +interface BasePips { + mode: PipsMode; + density?: number; + filter?: PipsFilter; + format?: PartialFormatter; +} +interface PositionsPips extends BasePips { + mode: PipsMode.Positions; + values: number[]; + stepped?: boolean; +} +interface ValuesPips extends BasePips { + mode: PipsMode.Values; + values: number[]; + stepped?: boolean; +} +interface CountPips extends BasePips { + mode: PipsMode.Count; + values: number; + stepped?: boolean; +} +interface StepsPips extends BasePips { + mode: PipsMode.Steps; +} +interface RangePips extends BasePips { + mode: PipsMode.Range; +} +declare type Pips = PositionsPips | ValuesPips | CountPips | StepsPips | RangePips; +declare type StartValues = string | number | (string | number)[]; +declare type HandleAttributes = { + [key: string]: string; +}; +interface UpdatableOptions { + range?: Range; + start?: StartValues; + margin?: number; + limit?: number; + padding?: number | number[]; + snap?: boolean; + step?: number; + pips?: Pips; + format?: Formatter; + tooltips?: boolean | PartialFormatter | (boolean | PartialFormatter)[]; + animate?: boolean; +} +export interface Options extends UpdatableOptions { + range: Range; + connect?: "lower" | "upper" | boolean | boolean[]; + orientation?: "vertical" | "horizontal"; + direction?: "ltr" | "rtl"; + behaviour?: string; + keyboardSupport?: boolean; + keyboardPageMultiplier?: number; + keyboardMultiplier?: number; + keyboardDefaultStep?: number; + documentElement?: HTMLElement; + cssPrefix?: string; + cssClasses?: CssClasses; + ariaFormat?: PartialFormatter; + animationDuration?: number; + handleAttributes?: HandleAttributes[]; +} +export interface API { + destroy: () => void; + steps: () => NextStepsForHandle[]; + on: (eventName: string, callback: EventCallback) => void; + off: (eventName: string) => void; + get: (unencoded?: boolean) => GetResult; + set: (input: number | string | (number | string)[], fireSetEvent?: boolean, exactInput?: boolean) => void; + setHandle: (handleNumber: number, value: number | string, fireSetEvent?: boolean, exactInput?: boolean) => void; + reset: (fireSetEvent?: boolean) => void; + disable: (handleNumber?: number) => void; + enable: (handleNumber?: number) => void; + options: Options; + updateOptions: (optionsToUpdate: UpdatableOptions, fireSetEvent: boolean) => void; + target: HTMLElement; + removePips: () => void; + removeTooltips: () => void; + getTooltips: () => { + [handleNumber: number]: HTMLElement | false; + }; + getOrigins: () => { + [handleNumber: number]: HTMLElement; + }; + pips: (grid: Pips) => HTMLElement; +} +interface TargetElement extends HTMLElement { + noUiSlider?: API; +} +interface NearByStep { + startValue: number; + step: number | false; + highestStep: number; +} +interface NearBySteps { + stepBefore: NearByStep; + thisStep: NearByStep; + stepAfter: NearByStep; +} +declare type GetResult = number | string | (string | number)[]; +declare type NextStepsForHandle = [number | false | null, number | false | null]; +declare type PipsFilter = (value: number, type: PipsType) => PipsType; +declare type EventCallback = (this: API, values: (number | string)[], handleNumber: number, unencoded: number[], tap: boolean, locations: number[], slider: API) => void; +declare class Spectrum { + xPct: number[]; + xVal: number[]; + xSteps: (number | false)[]; + xNumSteps: (number | false)[]; + protected xHighestCompleteStep: number[]; + protected snap: boolean; + constructor(entry: Range, snap: boolean, singleStep: number); + getDistance(value: number): number[]; + getAbsoluteDistance(value: number, distances: number[] | null, direction: boolean): number; + toStepping(value: number): number; + fromStepping(value: number): number; + getStep(value: number): number; + getDefaultStep(value: number, isDown: boolean, size: number): number; + getNearbySteps(value: number): NearBySteps; + countStepDecimals(): number; + hasNoSize(): boolean; + convert(value: number): number; + private handleEntryPoint; + private handleStepPoint; +} +declare const cssClasses: CssClasses; +declare function initialize(target: TargetElement, originalOptions: Options): API; +export { TargetElement as target }; +export { initialize as create }; +export { cssClasses }; +declare const _default: { + __spectrum: typeof Spectrum; + cssClasses: CssClasses; + create: typeof initialize; +}; +export default _default; diff --git a/gin_ops/static/dist/libs/nouislider/dist/nouislider.js b/gin_ops/static/dist/libs/nouislider/dist/nouislider.js new file mode 100644 index 0000000..1dff19b --- /dev/null +++ b/gin_ops/static/dist/libs/nouislider/dist/nouislider.js @@ -0,0 +1,2282 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.noUiSlider = {})); +})(this, (function (exports) { 'use strict'; + + exports.PipsMode = void 0; + (function (PipsMode) { + PipsMode["Range"] = "range"; + PipsMode["Steps"] = "steps"; + PipsMode["Positions"] = "positions"; + PipsMode["Count"] = "count"; + PipsMode["Values"] = "values"; + })(exports.PipsMode || (exports.PipsMode = {})); + exports.PipsType = void 0; + (function (PipsType) { + PipsType[PipsType["None"] = -1] = "None"; + PipsType[PipsType["NoValue"] = 0] = "NoValue"; + PipsType[PipsType["LargeValue"] = 1] = "LargeValue"; + PipsType[PipsType["SmallValue"] = 2] = "SmallValue"; + })(exports.PipsType || (exports.PipsType = {})); + //region Helper Methods + function isValidFormatter(entry) { + return isValidPartialFormatter(entry) && typeof entry.from === "function"; + } + function isValidPartialFormatter(entry) { + // partial formatters only need a to function and not a from function + return typeof entry === "object" && typeof entry.to === "function"; + } + function removeElement(el) { + el.parentElement.removeChild(el); + } + function isSet(value) { + return value !== null && value !== undefined; + } + // Bindable version + function preventDefault(e) { + e.preventDefault(); + } + // Removes duplicates from an array. + function unique(array) { + return array.filter(function (a) { + return !this[a] ? (this[a] = true) : false; + }, {}); + } + // Round a value to the closest 'to'. + function closest(value, to) { + return Math.round(value / to) * to; + } + // Current position of an element relative to the document. + function offset(elem, orientation) { + var rect = elem.getBoundingClientRect(); + var doc = elem.ownerDocument; + var docElem = doc.documentElement; + var pageOffset = getPageOffset(doc); + // getBoundingClientRect contains left scroll in Chrome on Android. + // I haven't found a feature detection that proves this. Worst case + // scenario on mis-match: the 'tap' feature on horizontal sliders breaks. + if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) { + pageOffset.x = 0; + } + return orientation ? rect.top + pageOffset.y - docElem.clientTop : rect.left + pageOffset.x - docElem.clientLeft; + } + // Checks whether a value is numerical. + function isNumeric(a) { + return typeof a === "number" && !isNaN(a) && isFinite(a); + } + // Sets a class and removes it after [duration] ms. + function addClassFor(element, className, duration) { + if (duration > 0) { + addClass(element, className); + setTimeout(function () { + removeClass(element, className); + }, duration); + } + } + // Limits a value to 0 - 100 + function limit(a) { + return Math.max(Math.min(a, 100), 0); + } + // Wraps a variable as an array, if it isn't one yet. + // Note that an input array is returned by reference! + function asArray(a) { + return Array.isArray(a) ? a : [a]; + } + // Counts decimals + function countDecimals(numStr) { + numStr = String(numStr); + var pieces = numStr.split("."); + return pieces.length > 1 ? pieces[1].length : 0; + } + // http://youmightnotneedjquery.com/#add_class + function addClass(el, className) { + if (el.classList && !/\s/.test(className)) { + el.classList.add(className); + } + else { + el.className += " " + className; + } + } + // http://youmightnotneedjquery.com/#remove_class + function removeClass(el, className) { + if (el.classList && !/\s/.test(className)) { + el.classList.remove(className); + } + else { + el.className = el.className.replace(new RegExp("(^|\\b)" + className.split(" ").join("|") + "(\\b|$)", "gi"), " "); + } + } + // https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/ + function hasClass(el, className) { + return el.classList ? el.classList.contains(className) : new RegExp("\\b" + className + "\\b").test(el.className); + } + // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes + function getPageOffset(doc) { + var supportPageOffset = window.pageXOffset !== undefined; + var isCSS1Compat = (doc.compatMode || "") === "CSS1Compat"; + var x = supportPageOffset + ? window.pageXOffset + : isCSS1Compat + ? doc.documentElement.scrollLeft + : doc.body.scrollLeft; + var y = supportPageOffset + ? window.pageYOffset + : isCSS1Compat + ? doc.documentElement.scrollTop + : doc.body.scrollTop; + return { + x: x, + y: y, + }; + } + // we provide a function to compute constants instead + // of accessing window.* as soon as the module needs it + // so that we do not compute anything if not needed + function getActions() { + // Determine the events to bind. IE11 implements pointerEvents without + // a prefix, which breaks compatibility with the IE10 implementation. + return window.navigator.pointerEnabled + ? { + start: "pointerdown", + move: "pointermove", + end: "pointerup", + } + : window.navigator.msPointerEnabled + ? { + start: "MSPointerDown", + move: "MSPointerMove", + end: "MSPointerUp", + } + : { + start: "mousedown touchstart", + move: "mousemove touchmove", + end: "mouseup touchend", + }; + } + // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md + // Issue #785 + function getSupportsPassive() { + var supportsPassive = false; + /* eslint-disable */ + try { + var opts = Object.defineProperty({}, "passive", { + get: function () { + supportsPassive = true; + }, + }); + // @ts-ignore + window.addEventListener("test", null, opts); + } + catch (e) { } + /* eslint-enable */ + return supportsPassive; + } + function getSupportsTouchActionNone() { + return window.CSS && CSS.supports && CSS.supports("touch-action", "none"); + } + //endregion + //region Range Calculation + // Determine the size of a sub-range in relation to a full range. + function subRangeRatio(pa, pb) { + return 100 / (pb - pa); + } + // (percentage) How many percent is this value of this range? + function fromPercentage(range, value, startRange) { + return (value * 100) / (range[startRange + 1] - range[startRange]); + } + // (percentage) Where is this value on this range? + function toPercentage(range, value) { + return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0], 0); + } + // (value) How much is this percentage on this range? + function isPercentage(range, value) { + return (value * (range[1] - range[0])) / 100 + range[0]; + } + function getJ(value, arr) { + var j = 1; + while (value >= arr[j]) { + j += 1; + } + return j; + } + // (percentage) Input a value, find where, on a scale of 0-100, it applies. + function toStepping(xVal, xPct, value) { + if (value >= xVal.slice(-1)[0]) { + return 100; + } + var j = getJ(value, xVal); + var va = xVal[j - 1]; + var vb = xVal[j]; + var pa = xPct[j - 1]; + var pb = xPct[j]; + return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb); + } + // (value) Input a percentage, find where it is on the specified range. + function fromStepping(xVal, xPct, value) { + // There is no range group that fits 100 + if (value >= 100) { + return xVal.slice(-1)[0]; + } + var j = getJ(value, xPct); + var va = xVal[j - 1]; + var vb = xVal[j]; + var pa = xPct[j - 1]; + var pb = xPct[j]; + return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb)); + } + // (percentage) Get the step that applies at a certain value. + function getStep(xPct, xSteps, snap, value) { + if (value === 100) { + return value; + } + var j = getJ(value, xPct); + var a = xPct[j - 1]; + var b = xPct[j]; + // If 'snap' is set, steps are used as fixed points on the slider. + if (snap) { + // Find the closest position, a or b. + if (value - a > (b - a) / 2) { + return b; + } + return a; + } + if (!xSteps[j - 1]) { + return value; + } + return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]); + } + //endregion + //region Spectrum + var Spectrum = /** @class */ (function () { + function Spectrum(entry, snap, singleStep) { + this.xPct = []; + this.xVal = []; + this.xSteps = []; + this.xNumSteps = []; + this.xHighestCompleteStep = []; + this.xSteps = [singleStep || false]; + this.xNumSteps = [false]; + this.snap = snap; + var index; + var ordered = []; + // Map the object keys to an array. + Object.keys(entry).forEach(function (index) { + ordered.push([asArray(entry[index]), index]); + }); + // Sort all entries by value (numeric sort). + ordered.sort(function (a, b) { + return a[0][0] - b[0][0]; + }); + // Convert all entries to subranges. + for (index = 0; index < ordered.length; index++) { + this.handleEntryPoint(ordered[index][1], ordered[index][0]); + } + // Store the actual step values. + // xSteps is sorted in the same order as xPct and xVal. + this.xNumSteps = this.xSteps.slice(0); + // Convert all numeric steps to the percentage of the subrange they represent. + for (index = 0; index < this.xNumSteps.length; index++) { + this.handleStepPoint(index, this.xNumSteps[index]); + } + } + Spectrum.prototype.getDistance = function (value) { + var distances = []; + for (var index = 0; index < this.xNumSteps.length - 1; index++) { + distances[index] = fromPercentage(this.xVal, value, index); + } + return distances; + }; + // Calculate the percentual distance over the whole scale of ranges. + // direction: 0 = backwards / 1 = forwards + Spectrum.prototype.getAbsoluteDistance = function (value, distances, direction) { + var xPct_index = 0; + // Calculate range where to start calculation + if (value < this.xPct[this.xPct.length - 1]) { + while (value > this.xPct[xPct_index + 1]) { + xPct_index++; + } + } + else if (value === this.xPct[this.xPct.length - 1]) { + xPct_index = this.xPct.length - 2; + } + // If looking backwards and the value is exactly at a range separator then look one range further + if (!direction && value === this.xPct[xPct_index + 1]) { + xPct_index++; + } + if (distances === null) { + distances = []; + } + var start_factor; + var rest_factor = 1; + var rest_rel_distance = distances[xPct_index]; + var range_pct = 0; + var rel_range_distance = 0; + var abs_distance_counter = 0; + var range_counter = 0; + // Calculate what part of the start range the value is + if (direction) { + start_factor = (value - this.xPct[xPct_index]) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]); + } + else { + start_factor = (this.xPct[xPct_index + 1] - value) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]); + } + // Do until the complete distance across ranges is calculated + while (rest_rel_distance > 0) { + // Calculate the percentage of total range + range_pct = this.xPct[xPct_index + 1 + range_counter] - this.xPct[xPct_index + range_counter]; + // Detect if the margin, padding or limit is larger then the current range and calculate + if (distances[xPct_index + range_counter] * rest_factor + 100 - start_factor * 100 > 100) { + // If larger then take the percentual distance of the whole range + rel_range_distance = range_pct * start_factor; + // Rest factor of relative percentual distance still to be calculated + rest_factor = (rest_rel_distance - 100 * start_factor) / distances[xPct_index + range_counter]; + // Set start factor to 1 as for next range it does not apply. + start_factor = 1; + } + else { + // If smaller or equal then take the percentual distance of the calculate percentual part of that range + rel_range_distance = ((distances[xPct_index + range_counter] * range_pct) / 100) * rest_factor; + // No rest left as the rest fits in current range + rest_factor = 0; + } + if (direction) { + abs_distance_counter = abs_distance_counter - rel_range_distance; + // Limit range to first range when distance becomes outside of minimum range + if (this.xPct.length + range_counter >= 1) { + range_counter--; + } + } + else { + abs_distance_counter = abs_distance_counter + rel_range_distance; + // Limit range to last range when distance becomes outside of maximum range + if (this.xPct.length - range_counter >= 1) { + range_counter++; + } + } + // Rest of relative percentual distance still to be calculated + rest_rel_distance = distances[xPct_index + range_counter] * rest_factor; + } + return value + abs_distance_counter; + }; + Spectrum.prototype.toStepping = function (value) { + value = toStepping(this.xVal, this.xPct, value); + return value; + }; + Spectrum.prototype.fromStepping = function (value) { + return fromStepping(this.xVal, this.xPct, value); + }; + Spectrum.prototype.getStep = function (value) { + value = getStep(this.xPct, this.xSteps, this.snap, value); + return value; + }; + Spectrum.prototype.getDefaultStep = function (value, isDown, size) { + var j = getJ(value, this.xPct); + // When at the top or stepping down, look at the previous sub-range + if (value === 100 || (isDown && value === this.xPct[j - 1])) { + j = Math.max(j - 1, 1); + } + return (this.xVal[j] - this.xVal[j - 1]) / size; + }; + Spectrum.prototype.getNearbySteps = function (value) { + var j = getJ(value, this.xPct); + return { + stepBefore: { + startValue: this.xVal[j - 2], + step: this.xNumSteps[j - 2], + highestStep: this.xHighestCompleteStep[j - 2], + }, + thisStep: { + startValue: this.xVal[j - 1], + step: this.xNumSteps[j - 1], + highestStep: this.xHighestCompleteStep[j - 1], + }, + stepAfter: { + startValue: this.xVal[j], + step: this.xNumSteps[j], + highestStep: this.xHighestCompleteStep[j], + }, + }; + }; + Spectrum.prototype.countStepDecimals = function () { + var stepDecimals = this.xNumSteps.map(countDecimals); + return Math.max.apply(null, stepDecimals); + }; + Spectrum.prototype.hasNoSize = function () { + return this.xVal[0] === this.xVal[this.xVal.length - 1]; + }; + // Outside testing + Spectrum.prototype.convert = function (value) { + return this.getStep(this.toStepping(value)); + }; + Spectrum.prototype.handleEntryPoint = function (index, value) { + var percentage; + // Covert min/max syntax to 0 and 100. + if (index === "min") { + percentage = 0; + } + else if (index === "max") { + percentage = 100; + } + else { + percentage = parseFloat(index); + } + // Check for correct input. + if (!isNumeric(percentage) || !isNumeric(value[0])) { + throw new Error("noUiSlider: 'range' value isn't numeric."); + } + // Store values. + this.xPct.push(percentage); + this.xVal.push(value[0]); + var value1 = Number(value[1]); + // NaN will evaluate to false too, but to keep + // logging clear, set step explicitly. Make sure + // not to override the 'step' setting with false. + if (!percentage) { + if (!isNaN(value1)) { + this.xSteps[0] = value1; + } + } + else { + this.xSteps.push(isNaN(value1) ? false : value1); + } + this.xHighestCompleteStep.push(0); + }; + Spectrum.prototype.handleStepPoint = function (i, n) { + // Ignore 'false' stepping. + if (!n) { + return; + } + // Step over zero-length ranges (#948); + if (this.xVal[i] === this.xVal[i + 1]) { + this.xSteps[i] = this.xHighestCompleteStep[i] = this.xVal[i]; + return; + } + // Factor to range ratio + this.xSteps[i] = + fromPercentage([this.xVal[i], this.xVal[i + 1]], n, 0) / subRangeRatio(this.xPct[i], this.xPct[i + 1]); + var totalSteps = (this.xVal[i + 1] - this.xVal[i]) / this.xNumSteps[i]; + var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1); + var step = this.xVal[i] + this.xNumSteps[i] * highestStep; + this.xHighestCompleteStep[i] = step; + }; + return Spectrum; + }()); + //endregion + //region Options + /* Every input option is tested and parsed. This will prevent + endless validation in internal methods. These tests are + structured with an item for every option available. An + option can be marked as required by setting the 'r' flag. + The testing function is provided with three arguments: + - The provided value for the option; + - A reference to the options object; + - The name for the option; + + The testing function returns false when an error is detected, + or true when everything is OK. It can also modify the option + object, to make sure all values can be correctly looped elsewhere. */ + //region Defaults + var defaultFormatter = { + to: function (value) { + return value === undefined ? "" : value.toFixed(2); + }, + from: Number, + }; + var cssClasses = { + target: "target", + base: "base", + origin: "origin", + handle: "handle", + handleLower: "handle-lower", + handleUpper: "handle-upper", + touchArea: "touch-area", + horizontal: "horizontal", + vertical: "vertical", + background: "background", + connect: "connect", + connects: "connects", + ltr: "ltr", + rtl: "rtl", + textDirectionLtr: "txt-dir-ltr", + textDirectionRtl: "txt-dir-rtl", + draggable: "draggable", + drag: "state-drag", + tap: "state-tap", + active: "active", + tooltip: "tooltip", + pips: "pips", + pipsHorizontal: "pips-horizontal", + pipsVertical: "pips-vertical", + marker: "marker", + markerHorizontal: "marker-horizontal", + markerVertical: "marker-vertical", + markerNormal: "marker-normal", + markerLarge: "marker-large", + markerSub: "marker-sub", + value: "value", + valueHorizontal: "value-horizontal", + valueVertical: "value-vertical", + valueNormal: "value-normal", + valueLarge: "value-large", + valueSub: "value-sub", + }; + // Namespaces of internal event listeners + var INTERNAL_EVENT_NS = { + tooltips: ".__tooltips", + aria: ".__aria", + }; + //endregion + function testStep(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'step' is not numeric."); + } + // The step option can still be used to set stepping + // for linear sliders. Overwritten if set in 'range'. + parsed.singleStep = entry; + } + function testKeyboardPageMultiplier(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'keyboardPageMultiplier' is not numeric."); + } + parsed.keyboardPageMultiplier = entry; + } + function testKeyboardMultiplier(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'keyboardMultiplier' is not numeric."); + } + parsed.keyboardMultiplier = entry; + } + function testKeyboardDefaultStep(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'keyboardDefaultStep' is not numeric."); + } + parsed.keyboardDefaultStep = entry; + } + function testRange(parsed, entry) { + // Filter incorrect input. + if (typeof entry !== "object" || Array.isArray(entry)) { + throw new Error("noUiSlider: 'range' is not an object."); + } + // Catch missing start or end. + if (entry.min === undefined || entry.max === undefined) { + throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); + } + parsed.spectrum = new Spectrum(entry, parsed.snap || false, parsed.singleStep); + } + function testStart(parsed, entry) { + entry = asArray(entry); + // Validate input. Values aren't tested, as the public .val method + // will always provide a valid location. + if (!Array.isArray(entry) || !entry.length) { + throw new Error("noUiSlider: 'start' option is incorrect."); + } + // Store the number of handles. + parsed.handles = entry.length; + // When the slider is initialized, the .val method will + // be called with the start options. + parsed.start = entry; + } + function testSnap(parsed, entry) { + if (typeof entry !== "boolean") { + throw new Error("noUiSlider: 'snap' option must be a boolean."); + } + // Enforce 100% stepping within subranges. + parsed.snap = entry; + } + function testAnimate(parsed, entry) { + if (typeof entry !== "boolean") { + throw new Error("noUiSlider: 'animate' option must be a boolean."); + } + // Enforce 100% stepping within subranges. + parsed.animate = entry; + } + function testAnimationDuration(parsed, entry) { + if (typeof entry !== "number") { + throw new Error("noUiSlider: 'animationDuration' option must be a number."); + } + parsed.animationDuration = entry; + } + function testConnect(parsed, entry) { + var connect = [false]; + var i; + // Map legacy options + if (entry === "lower") { + entry = [true, false]; + } + else if (entry === "upper") { + entry = [false, true]; + } + // Handle boolean options + if (entry === true || entry === false) { + for (i = 1; i < parsed.handles; i++) { + connect.push(entry); + } + connect.push(false); + } + // Reject invalid input + else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) { + throw new Error("noUiSlider: 'connect' option doesn't match handle count."); + } + else { + connect = entry; + } + parsed.connect = connect; + } + function testOrientation(parsed, entry) { + // Set orientation to an a numerical value for easy + // array selection. + switch (entry) { + case "horizontal": + parsed.ort = 0; + break; + case "vertical": + parsed.ort = 1; + break; + default: + throw new Error("noUiSlider: 'orientation' option is invalid."); + } + } + function testMargin(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'margin' option must be numeric."); + } + // Issue #582 + if (entry === 0) { + return; + } + parsed.margin = parsed.spectrum.getDistance(entry); + } + function testLimit(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'limit' option must be numeric."); + } + parsed.limit = parsed.spectrum.getDistance(entry); + if (!parsed.limit || parsed.handles < 2) { + throw new Error("noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles."); + } + } + function testPadding(parsed, entry) { + var index; + if (!isNumeric(entry) && !Array.isArray(entry)) { + throw new Error("noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers."); + } + if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) { + throw new Error("noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers."); + } + if (entry === 0) { + return; + } + if (!Array.isArray(entry)) { + entry = [entry, entry]; + } + // 'getDistance' returns false for invalid values. + parsed.padding = [parsed.spectrum.getDistance(entry[0]), parsed.spectrum.getDistance(entry[1])]; + for (index = 0; index < parsed.spectrum.xNumSteps.length - 1; index++) { + // last "range" can't contain step size as it is purely an endpoint. + if (parsed.padding[0][index] < 0 || parsed.padding[1][index] < 0) { + throw new Error("noUiSlider: 'padding' option must be a positive number(s)."); + } + } + var totalPadding = entry[0] + entry[1]; + var firstValue = parsed.spectrum.xVal[0]; + var lastValue = parsed.spectrum.xVal[parsed.spectrum.xVal.length - 1]; + if (totalPadding / (lastValue - firstValue) > 1) { + throw new Error("noUiSlider: 'padding' option must not exceed 100% of the range."); + } + } + function testDirection(parsed, entry) { + // Set direction as a numerical value for easy parsing. + // Invert connection for RTL sliders, so that the proper + // handles get the connect/background classes. + switch (entry) { + case "ltr": + parsed.dir = 0; + break; + case "rtl": + parsed.dir = 1; + break; + default: + throw new Error("noUiSlider: 'direction' option was not recognized."); + } + } + function testBehaviour(parsed, entry) { + // Make sure the input is a string. + if (typeof entry !== "string") { + throw new Error("noUiSlider: 'behaviour' must be a string containing options."); + } + // Check if the string contains any keywords. + // None are required. + var tap = entry.indexOf("tap") >= 0; + var drag = entry.indexOf("drag") >= 0; + var fixed = entry.indexOf("fixed") >= 0; + var snap = entry.indexOf("snap") >= 0; + var hover = entry.indexOf("hover") >= 0; + var unconstrained = entry.indexOf("unconstrained") >= 0; + var dragAll = entry.indexOf("drag-all") >= 0; + var smoothSteps = entry.indexOf("smooth-steps") >= 0; + if (fixed) { + if (parsed.handles !== 2) { + throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles"); + } + // Use margin to enforce fixed state + testMargin(parsed, parsed.start[1] - parsed.start[0]); + } + if (unconstrained && (parsed.margin || parsed.limit)) { + throw new Error("noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit"); + } + parsed.events = { + tap: tap || snap, + drag: drag, + dragAll: dragAll, + smoothSteps: smoothSteps, + fixed: fixed, + snap: snap, + hover: hover, + unconstrained: unconstrained, + }; + } + function testTooltips(parsed, entry) { + if (entry === false) { + return; + } + if (entry === true || isValidPartialFormatter(entry)) { + parsed.tooltips = []; + for (var i = 0; i < parsed.handles; i++) { + parsed.tooltips.push(entry); + } + } + else { + entry = asArray(entry); + if (entry.length !== parsed.handles) { + throw new Error("noUiSlider: must pass a formatter for all handles."); + } + entry.forEach(function (formatter) { + if (typeof formatter !== "boolean" && !isValidPartialFormatter(formatter)) { + throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'."); + } + }); + parsed.tooltips = entry; + } + } + function testHandleAttributes(parsed, entry) { + if (entry.length !== parsed.handles) { + throw new Error("noUiSlider: must pass a attributes for all handles."); + } + parsed.handleAttributes = entry; + } + function testAriaFormat(parsed, entry) { + if (!isValidPartialFormatter(entry)) { + throw new Error("noUiSlider: 'ariaFormat' requires 'to' method."); + } + parsed.ariaFormat = entry; + } + function testFormat(parsed, entry) { + if (!isValidFormatter(entry)) { + throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods."); + } + parsed.format = entry; + } + function testKeyboardSupport(parsed, entry) { + if (typeof entry !== "boolean") { + throw new Error("noUiSlider: 'keyboardSupport' option must be a boolean."); + } + parsed.keyboardSupport = entry; + } + function testDocumentElement(parsed, entry) { + // This is an advanced option. Passed values are used without validation. + parsed.documentElement = entry; + } + function testCssPrefix(parsed, entry) { + if (typeof entry !== "string" && entry !== false) { + throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`."); + } + parsed.cssPrefix = entry; + } + function testCssClasses(parsed, entry) { + if (typeof entry !== "object") { + throw new Error("noUiSlider: 'cssClasses' must be an object."); + } + if (typeof parsed.cssPrefix === "string") { + parsed.cssClasses = {}; + Object.keys(entry).forEach(function (key) { + parsed.cssClasses[key] = parsed.cssPrefix + entry[key]; + }); + } + else { + parsed.cssClasses = entry; + } + } + // Test all developer settings and parse to assumption-safe values. + function testOptions(options) { + // To prove a fix for #537, freeze options here. + // If the object is modified, an error will be thrown. + // Object.freeze(options); + var parsed = { + margin: null, + limit: null, + padding: null, + animate: true, + animationDuration: 300, + ariaFormat: defaultFormatter, + format: defaultFormatter, + }; + // Tests are executed in the order they are presented here. + var tests = { + step: { r: false, t: testStep }, + keyboardPageMultiplier: { r: false, t: testKeyboardPageMultiplier }, + keyboardMultiplier: { r: false, t: testKeyboardMultiplier }, + keyboardDefaultStep: { r: false, t: testKeyboardDefaultStep }, + start: { r: true, t: testStart }, + connect: { r: true, t: testConnect }, + direction: { r: true, t: testDirection }, + snap: { r: false, t: testSnap }, + animate: { r: false, t: testAnimate }, + animationDuration: { r: false, t: testAnimationDuration }, + range: { r: true, t: testRange }, + orientation: { r: false, t: testOrientation }, + margin: { r: false, t: testMargin }, + limit: { r: false, t: testLimit }, + padding: { r: false, t: testPadding }, + behaviour: { r: true, t: testBehaviour }, + ariaFormat: { r: false, t: testAriaFormat }, + format: { r: false, t: testFormat }, + tooltips: { r: false, t: testTooltips }, + keyboardSupport: { r: true, t: testKeyboardSupport }, + documentElement: { r: false, t: testDocumentElement }, + cssPrefix: { r: true, t: testCssPrefix }, + cssClasses: { r: true, t: testCssClasses }, + handleAttributes: { r: false, t: testHandleAttributes }, + }; + var defaults = { + connect: false, + direction: "ltr", + behaviour: "tap", + orientation: "horizontal", + keyboardSupport: true, + cssPrefix: "noUi-", + cssClasses: cssClasses, + keyboardPageMultiplier: 5, + keyboardMultiplier: 1, + keyboardDefaultStep: 10, + }; + // AriaFormat defaults to regular format, if any. + if (options.format && !options.ariaFormat) { + options.ariaFormat = options.format; + } + // Run all options through a testing mechanism to ensure correct + // input. It should be noted that options might get modified to + // be handled properly. E.g. wrapping integers in arrays. + Object.keys(tests).forEach(function (name) { + // If the option isn't set, but it is required, throw an error. + if (!isSet(options[name]) && defaults[name] === undefined) { + if (tests[name].r) { + throw new Error("noUiSlider: '" + name + "' is required."); + } + return; + } + tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]); + }); + // Forward pips options + parsed.pips = options.pips; + // All recent browsers accept unprefixed transform. + // We need -ms- for IE9 and -webkit- for older Android; + // Assume use of -webkit- if unprefixed and -ms- are not supported. + // https://caniuse.com/#feat=transforms2d + var d = document.createElement("div"); + var msPrefix = d.style.msTransform !== undefined; + var noPrefix = d.style.transform !== undefined; + parsed.transformRule = noPrefix ? "transform" : msPrefix ? "msTransform" : "webkitTransform"; + // Pips don't move, so we can place them using left/top. + var styles = [ + ["left", "top"], + ["right", "bottom"], + ]; + parsed.style = styles[parsed.dir][parsed.ort]; + return parsed; + } + //endregion + function scope(target, options, originalOptions) { + var actions = getActions(); + var supportsTouchActionNone = getSupportsTouchActionNone(); + var supportsPassive = supportsTouchActionNone && getSupportsPassive(); + // All variables local to 'scope' are prefixed with 'scope_' + // Slider DOM Nodes + var scope_Target = target; + var scope_Base; + var scope_Handles; + var scope_Connects; + var scope_Pips; + var scope_Tooltips; + // Slider state values + var scope_Spectrum = options.spectrum; + var scope_Values = []; + var scope_Locations = []; + var scope_HandleNumbers = []; + var scope_ActiveHandlesCount = 0; + var scope_Events = {}; + // Document Nodes + var scope_Document = target.ownerDocument; + var scope_DocumentElement = options.documentElement || scope_Document.documentElement; + var scope_Body = scope_Document.body; + // For horizontal sliders in standard ltr documents, + // make .noUi-origin overflow to the left so the document doesn't scroll. + var scope_DirOffset = scope_Document.dir === "rtl" || options.ort === 1 ? 0 : 100; + // Creates a node, adds it to target, returns the new node. + function addNodeTo(addTarget, className) { + var div = scope_Document.createElement("div"); + if (className) { + addClass(div, className); + } + addTarget.appendChild(div); + return div; + } + // Append a origin to the base + function addOrigin(base, handleNumber) { + var origin = addNodeTo(base, options.cssClasses.origin); + var handle = addNodeTo(origin, options.cssClasses.handle); + addNodeTo(handle, options.cssClasses.touchArea); + handle.setAttribute("data-handle", String(handleNumber)); + if (options.keyboardSupport) { + // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex + // 0 = focusable and reachable + handle.setAttribute("tabindex", "0"); + handle.addEventListener("keydown", function (event) { + return eventKeydown(event, handleNumber); + }); + } + if (options.handleAttributes !== undefined) { + var attributes_1 = options.handleAttributes[handleNumber]; + Object.keys(attributes_1).forEach(function (attribute) { + handle.setAttribute(attribute, attributes_1[attribute]); + }); + } + handle.setAttribute("role", "slider"); + handle.setAttribute("aria-orientation", options.ort ? "vertical" : "horizontal"); + if (handleNumber === 0) { + addClass(handle, options.cssClasses.handleLower); + } + else if (handleNumber === options.handles - 1) { + addClass(handle, options.cssClasses.handleUpper); + } + origin.handle = handle; + return origin; + } + // Insert nodes for connect elements + function addConnect(base, add) { + if (!add) { + return false; + } + return addNodeTo(base, options.cssClasses.connect); + } + // Add handles to the slider base. + function addElements(connectOptions, base) { + var connectBase = addNodeTo(base, options.cssClasses.connects); + scope_Handles = []; + scope_Connects = []; + scope_Connects.push(addConnect(connectBase, connectOptions[0])); + // [::::O====O====O====] + // connectOptions = [0, 1, 1, 1] + for (var i = 0; i < options.handles; i++) { + // Keep a list of all added handles. + scope_Handles.push(addOrigin(base, i)); + scope_HandleNumbers[i] = i; + scope_Connects.push(addConnect(connectBase, connectOptions[i + 1])); + } + } + // Initialize a single slider. + function addSlider(addTarget) { + // Apply classes and data to the target. + addClass(addTarget, options.cssClasses.target); + if (options.dir === 0) { + addClass(addTarget, options.cssClasses.ltr); + } + else { + addClass(addTarget, options.cssClasses.rtl); + } + if (options.ort === 0) { + addClass(addTarget, options.cssClasses.horizontal); + } + else { + addClass(addTarget, options.cssClasses.vertical); + } + var textDirection = getComputedStyle(addTarget).direction; + if (textDirection === "rtl") { + addClass(addTarget, options.cssClasses.textDirectionRtl); + } + else { + addClass(addTarget, options.cssClasses.textDirectionLtr); + } + return addNodeTo(addTarget, options.cssClasses.base); + } + function addTooltip(handle, handleNumber) { + if (!options.tooltips || !options.tooltips[handleNumber]) { + return false; + } + return addNodeTo(handle.firstChild, options.cssClasses.tooltip); + } + function isSliderDisabled() { + return scope_Target.hasAttribute("disabled"); + } + // Disable the slider dragging if any handle is disabled + function isHandleDisabled(handleNumber) { + var handleOrigin = scope_Handles[handleNumber]; + return handleOrigin.hasAttribute("disabled"); + } + function disable(handleNumber) { + if (handleNumber !== null && handleNumber !== undefined) { + scope_Handles[handleNumber].setAttribute("disabled", ""); + scope_Handles[handleNumber].handle.removeAttribute("tabindex"); + } + else { + scope_Target.setAttribute("disabled", ""); + scope_Handles.forEach(function (handle) { + handle.handle.removeAttribute("tabindex"); + }); + } + } + function enable(handleNumber) { + if (handleNumber !== null && handleNumber !== undefined) { + scope_Handles[handleNumber].removeAttribute("disabled"); + scope_Handles[handleNumber].handle.setAttribute("tabindex", "0"); + } + else { + scope_Target.removeAttribute("disabled"); + scope_Handles.forEach(function (handle) { + handle.removeAttribute("disabled"); + handle.handle.setAttribute("tabindex", "0"); + }); + } + } + function removeTooltips() { + if (scope_Tooltips) { + removeEvent("update" + INTERNAL_EVENT_NS.tooltips); + scope_Tooltips.forEach(function (tooltip) { + if (tooltip) { + removeElement(tooltip); + } + }); + scope_Tooltips = null; + } + } + // The tooltips option is a shorthand for using the 'update' event. + function tooltips() { + removeTooltips(); + // Tooltips are added with options.tooltips in original order. + scope_Tooltips = scope_Handles.map(addTooltip); + bindEvent("update" + INTERNAL_EVENT_NS.tooltips, function (values, handleNumber, unencoded) { + if (!scope_Tooltips || !options.tooltips) { + return; + } + if (scope_Tooltips[handleNumber] === false) { + return; + } + var formattedValue = values[handleNumber]; + if (options.tooltips[handleNumber] !== true) { + formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]); + } + scope_Tooltips[handleNumber].innerHTML = formattedValue; + }); + } + function aria() { + removeEvent("update" + INTERNAL_EVENT_NS.aria); + bindEvent("update" + INTERNAL_EVENT_NS.aria, function (values, handleNumber, unencoded, tap, positions) { + // Update Aria Values for all handles, as a change in one changes min and max values for the next. + scope_HandleNumbers.forEach(function (index) { + var handle = scope_Handles[index]; + var min = checkHandlePosition(scope_Locations, index, 0, true, true, true); + var max = checkHandlePosition(scope_Locations, index, 100, true, true, true); + var now = positions[index]; + // Formatted value for display + var text = String(options.ariaFormat.to(unencoded[index])); + // Map to slider range values + min = scope_Spectrum.fromStepping(min).toFixed(1); + max = scope_Spectrum.fromStepping(max).toFixed(1); + now = scope_Spectrum.fromStepping(now).toFixed(1); + handle.children[0].setAttribute("aria-valuemin", min); + handle.children[0].setAttribute("aria-valuemax", max); + handle.children[0].setAttribute("aria-valuenow", now); + handle.children[0].setAttribute("aria-valuetext", text); + }); + }); + } + function getGroup(pips) { + // Use the range. + if (pips.mode === exports.PipsMode.Range || pips.mode === exports.PipsMode.Steps) { + return scope_Spectrum.xVal; + } + if (pips.mode === exports.PipsMode.Count) { + if (pips.values < 2) { + throw new Error("noUiSlider: 'values' (>= 2) required for mode 'count'."); + } + // Divide 0 - 100 in 'count' parts. + var interval = pips.values - 1; + var spread = 100 / interval; + var values = []; + // List these parts and have them handled as 'positions'. + while (interval--) { + values[interval] = interval * spread; + } + values.push(100); + return mapToRange(values, pips.stepped); + } + if (pips.mode === exports.PipsMode.Positions) { + // Map all percentages to on-range values. + return mapToRange(pips.values, pips.stepped); + } + if (pips.mode === exports.PipsMode.Values) { + // If the value must be stepped, it needs to be converted to a percentage first. + if (pips.stepped) { + return pips.values.map(function (value) { + // Convert to percentage, apply step, return to value. + return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value))); + }); + } + // Otherwise, we can simply use the values. + return pips.values; + } + return []; // pips.mode = never + } + function mapToRange(values, stepped) { + return values.map(function (value) { + return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value); + }); + } + function generateSpread(pips) { + function safeIncrement(value, increment) { + // Avoid floating point variance by dropping the smallest decimal places. + return Number((value + increment).toFixed(7)); + } + var group = getGroup(pips); + var indexes = {}; + var firstInRange = scope_Spectrum.xVal[0]; + var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1]; + var ignoreFirst = false; + var ignoreLast = false; + var prevPct = 0; + // Create a copy of the group, sort it and filter away all duplicates. + group = unique(group.slice().sort(function (a, b) { + return a - b; + })); + // Make sure the range starts with the first element. + if (group[0] !== firstInRange) { + group.unshift(firstInRange); + ignoreFirst = true; + } + // Likewise for the last one. + if (group[group.length - 1] !== lastInRange) { + group.push(lastInRange); + ignoreLast = true; + } + group.forEach(function (current, index) { + // Get the current step and the lower + upper positions. + var step; + var i; + var q; + var low = current; + var high = group[index + 1]; + var newPct; + var pctDifference; + var pctPos; + var type; + var steps; + var realSteps; + var stepSize; + var isSteps = pips.mode === exports.PipsMode.Steps; + // When using 'steps' mode, use the provided steps. + // Otherwise, we'll step on to the next subrange. + if (isSteps) { + step = scope_Spectrum.xNumSteps[index]; + } + // Default to a 'full' step. + if (!step) { + step = high - low; + } + // If high is undefined we are at the last subrange. Make sure it iterates once (#1088) + if (high === undefined) { + high = low; + } + // Make sure step isn't 0, which would cause an infinite loop (#654) + step = Math.max(step, 0.0000001); + // Find all steps in the subrange. + for (i = low; i <= high; i = safeIncrement(i, step)) { + // Get the percentage value for the current step, + // calculate the size for the subrange. + newPct = scope_Spectrum.toStepping(i); + pctDifference = newPct - prevPct; + steps = pctDifference / (pips.density || 1); + realSteps = Math.round(steps); + // This ratio represents the amount of percentage-space a point indicates. + // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided. + // Round the percentage offset to an even number, then divide by two + // to spread the offset on both sides of the range. + stepSize = pctDifference / realSteps; + // Divide all points evenly, adding the correct number to this subrange. + // Run up to <= so that 100% gets a point, event if ignoreLast is set. + for (q = 1; q <= realSteps; q += 1) { + // The ratio between the rounded value and the actual size might be ~1% off. + // Correct the percentage offset by the number of points + // per subrange. density = 1 will result in 100 points on the + // full range, 2 for 50, 4 for 25, etc. + pctPos = prevPct + q * stepSize; + indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0]; + } + // Determine the point type. + type = group.indexOf(i) > -1 ? exports.PipsType.LargeValue : isSteps ? exports.PipsType.SmallValue : exports.PipsType.NoValue; + // Enforce the 'ignoreFirst' option by overwriting the type for 0. + if (!index && ignoreFirst && i !== high) { + type = 0; + } + if (!(i === high && ignoreLast)) { + // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value. + indexes[newPct.toFixed(5)] = [i, type]; + } + // Update the percentage count. + prevPct = newPct; + } + }); + return indexes; + } + function addMarking(spread, filterFunc, formatter) { + var _a, _b; + var element = scope_Document.createElement("div"); + var valueSizeClasses = (_a = {}, + _a[exports.PipsType.None] = "", + _a[exports.PipsType.NoValue] = options.cssClasses.valueNormal, + _a[exports.PipsType.LargeValue] = options.cssClasses.valueLarge, + _a[exports.PipsType.SmallValue] = options.cssClasses.valueSub, + _a); + var markerSizeClasses = (_b = {}, + _b[exports.PipsType.None] = "", + _b[exports.PipsType.NoValue] = options.cssClasses.markerNormal, + _b[exports.PipsType.LargeValue] = options.cssClasses.markerLarge, + _b[exports.PipsType.SmallValue] = options.cssClasses.markerSub, + _b); + var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical]; + var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical]; + addClass(element, options.cssClasses.pips); + addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical); + function getClasses(type, source) { + var a = source === options.cssClasses.value; + var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses; + var sizeClasses = a ? valueSizeClasses : markerSizeClasses; + return source + " " + orientationClasses[options.ort] + " " + sizeClasses[type]; + } + function addSpread(offset, value, type) { + // Apply the filter function, if it is set. + type = filterFunc ? filterFunc(value, type) : type; + if (type === exports.PipsType.None) { + return; + } + // Add a marker for every point + var node = addNodeTo(element, false); + node.className = getClasses(type, options.cssClasses.marker); + node.style[options.style] = offset + "%"; + // Values are only appended for points marked '1' or '2'. + if (type > exports.PipsType.NoValue) { + node = addNodeTo(element, false); + node.className = getClasses(type, options.cssClasses.value); + node.setAttribute("data-value", String(value)); + node.style[options.style] = offset + "%"; + node.innerHTML = String(formatter.to(value)); + } + } + // Append all points. + Object.keys(spread).forEach(function (offset) { + addSpread(offset, spread[offset][0], spread[offset][1]); + }); + return element; + } + function removePips() { + if (scope_Pips) { + removeElement(scope_Pips); + scope_Pips = null; + } + } + function pips(pips) { + // Fix #669 + removePips(); + var spread = generateSpread(pips); + var filter = pips.filter; + var format = pips.format || { + to: function (value) { + return String(Math.round(value)); + }, + }; + scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format)); + return scope_Pips; + } + // Shorthand for base dimensions. + function baseSize() { + var rect = scope_Base.getBoundingClientRect(); + var alt = ("offset" + ["Width", "Height"][options.ort]); + return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt]; + } + // Handler for attaching events trough a proxy. + function attachEvent(events, element, callback, data) { + // This function can be used to 'filter' events to the slider. + // element is a node, not a nodeList + var method = function (event) { + var e = fixEvent(event, data.pageOffset, data.target || element); + // fixEvent returns false if this event has a different target + // when handling (multi-) touch events; + if (!e) { + return false; + } + // doNotReject is passed by all end events to make sure released touches + // are not rejected, leaving the slider "stuck" to the cursor; + if (isSliderDisabled() && !data.doNotReject) { + return false; + } + // Stop if an active 'tap' transition is taking place. + if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) { + return false; + } + // Ignore right or middle clicks on start #454 + if (events === actions.start && e.buttons !== undefined && e.buttons > 1) { + return false; + } + // Ignore right or middle clicks on start #454 + if (data.hover && e.buttons) { + return false; + } + // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS. + // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support + // touch-action: manipulation, but that allows panning, which breaks + // sliders after zooming/on non-responsive pages. + // See: https://bugs.webkit.org/show_bug.cgi?id=133112 + if (!supportsPassive) { + e.preventDefault(); + } + e.calcPoint = e.points[options.ort]; + // Call the event handler with the event [ and additional data ]. + callback(e, data); + return; + }; + var methods = []; + // Bind a closure on the target for every event type. + events.split(" ").forEach(function (eventName) { + element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false); + methods.push([eventName, method]); + }); + return methods; + } + // Provide a clean event with standardized offset values. + function fixEvent(e, pageOffset, eventTarget) { + // Filter the event to register the type, which can be + // touch, mouse or pointer. Offset changes need to be + // made on an event specific basis. + var touch = e.type.indexOf("touch") === 0; + var mouse = e.type.indexOf("mouse") === 0; + var pointer = e.type.indexOf("pointer") === 0; + var x = 0; + var y = 0; + // IE10 implemented pointer events with a prefix; + if (e.type.indexOf("MSPointer") === 0) { + pointer = true; + } + // Erroneous events seem to be passed in occasionally on iOS/iPadOS after user finishes interacting with + // the slider. They appear to be of type MouseEvent, yet they don't have usual properties set. Ignore + // events that have no touches or buttons associated with them. (#1057, #1079, #1095) + if (e.type === "mousedown" && !e.buttons && !e.touches) { + return false; + } + // The only thing one handle should be concerned about is the touches that originated on top of it. + if (touch) { + // Returns true if a touch originated on the target. + var isTouchOnTarget = function (checkTouch) { + var target = checkTouch.target; + return (target === eventTarget || + eventTarget.contains(target) || + (e.composed && e.composedPath().shift() === eventTarget)); + }; + // In the case of touchstart events, we need to make sure there is still no more than one + // touch on the target so we look amongst all touches. + if (e.type === "touchstart") { + var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget); + // Do not support more than one touch per handle. + if (targetTouches.length > 1) { + return false; + } + x = targetTouches[0].pageX; + y = targetTouches[0].pageY; + } + else { + // In the other cases, find on changedTouches is enough. + var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget); + // Cancel if the target touch has not moved. + if (!targetTouch) { + return false; + } + x = targetTouch.pageX; + y = targetTouch.pageY; + } + } + pageOffset = pageOffset || getPageOffset(scope_Document); + if (mouse || pointer) { + x = e.clientX + pageOffset.x; + y = e.clientY + pageOffset.y; + } + e.pageOffset = pageOffset; + e.points = [x, y]; + e.cursor = mouse || pointer; // Fix #435 + return e; + } + // Translate a coordinate in the document to a percentage on the slider + function calcPointToPercentage(calcPoint) { + var location = calcPoint - offset(scope_Base, options.ort); + var proposal = (location * 100) / baseSize(); + // Clamp proposal between 0% and 100% + // Out-of-bound coordinates may occur when .noUi-base pseudo-elements + // are used (e.g. contained handles feature) + proposal = limit(proposal); + return options.dir ? 100 - proposal : proposal; + } + // Find handle closest to a certain percentage on the slider + function getClosestHandle(clickedPosition) { + var smallestDifference = 100; + var handleNumber = false; + scope_Handles.forEach(function (handle, index) { + // Disabled handles are ignored + if (isHandleDisabled(index)) { + return; + } + var handlePosition = scope_Locations[index]; + var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition); + // Initial state + var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100; + // Difference with this handle is smaller than the previously checked handle + var isCloser = differenceWithThisHandle < smallestDifference; + var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition; + if (isCloser || isCloserAfter || clickAtEdge) { + handleNumber = index; + smallestDifference = differenceWithThisHandle; + } + }); + return handleNumber; + } + // Fire 'end' when a mouse or pen leaves the document. + function documentLeave(event, data) { + if (event.type === "mouseout" && + event.target.nodeName === "HTML" && + event.relatedTarget === null) { + eventEnd(event, data); + } + } + // Handle movement on document for handle and range drag. + function eventMove(event, data) { + // Fix #498 + // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty). + // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero + // IE9 has .buttons and .which zero on mousemove. + // Firefox breaks the spec MDN defines. + if (navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) { + return eventEnd(event, data); + } + // Check if we are moving up or down + var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint); + // Convert the movement into a percentage of the slider width/height + var proposal = (movement * 100) / data.baseSize; + moveHandles(movement > 0, proposal, data.locations, data.handleNumbers, data.connect); + } + // Unbind move events on document, call callbacks. + function eventEnd(event, data) { + // The handle is no longer active, so remove the class. + if (data.handle) { + removeClass(data.handle, options.cssClasses.active); + scope_ActiveHandlesCount -= 1; + } + // Unbind the move and end events, which are added on 'start'. + data.listeners.forEach(function (c) { + scope_DocumentElement.removeEventListener(c[0], c[1]); + }); + if (scope_ActiveHandlesCount === 0) { + // Remove dragging class. + removeClass(scope_Target, options.cssClasses.drag); + setZindex(); + // Remove cursor styles and text-selection events bound to the body. + if (event.cursor) { + scope_Body.style.cursor = ""; + scope_Body.removeEventListener("selectstart", preventDefault); + } + } + if (options.events.smoothSteps) { + data.handleNumbers.forEach(function (handleNumber) { + setHandle(handleNumber, scope_Locations[handleNumber], true, true, false, false); + }); + data.handleNumbers.forEach(function (handleNumber) { + fireEvent("update", handleNumber); + }); + } + data.handleNumbers.forEach(function (handleNumber) { + fireEvent("change", handleNumber); + fireEvent("set", handleNumber); + fireEvent("end", handleNumber); + }); + } + // Bind move events on document. + function eventStart(event, data) { + // Ignore event if any handle is disabled + if (data.handleNumbers.some(isHandleDisabled)) { + return; + } + var handle; + if (data.handleNumbers.length === 1) { + var handleOrigin = scope_Handles[data.handleNumbers[0]]; + handle = handleOrigin.children[0]; + scope_ActiveHandlesCount += 1; + // Mark the handle as 'active' so it can be styled. + addClass(handle, options.cssClasses.active); + } + // A drag should never propagate up to the 'tap' event. + event.stopPropagation(); + // Record the event listeners. + var listeners = []; + // Attach the move and end events. + var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, { + // The event target has changed so we need to propagate the original one so that we keep + // relying on it to extract target touches. + target: event.target, + handle: handle, + connect: data.connect, + listeners: listeners, + startCalcPoint: event.calcPoint, + baseSize: baseSize(), + pageOffset: event.pageOffset, + handleNumbers: data.handleNumbers, + buttonsProperty: event.buttons, + locations: scope_Locations.slice(), + }); + var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, { + target: event.target, + handle: handle, + listeners: listeners, + doNotReject: true, + handleNumbers: data.handleNumbers, + }); + var outEvent = attachEvent("mouseout", scope_DocumentElement, documentLeave, { + target: event.target, + handle: handle, + listeners: listeners, + doNotReject: true, + handleNumbers: data.handleNumbers, + }); + // We want to make sure we pushed the listeners in the listener list rather than creating + // a new one as it has already been passed to the event handlers. + listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent)); + // Text selection isn't an issue on touch devices, + // so adding cursor styles can be skipped. + if (event.cursor) { + // Prevent the 'I' cursor and extend the range-drag cursor. + scope_Body.style.cursor = getComputedStyle(event.target).cursor; + // Mark the target with a dragging state. + if (scope_Handles.length > 1) { + addClass(scope_Target, options.cssClasses.drag); + } + // Prevent text selection when dragging the handles. + // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move, + // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52, + // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there. + // The 'cursor' flag is false. + // See: http://caniuse.com/#search=selectstart + scope_Body.addEventListener("selectstart", preventDefault, false); + } + data.handleNumbers.forEach(function (handleNumber) { + fireEvent("start", handleNumber); + }); + } + // Move closest handle to tapped location. + function eventTap(event) { + // The tap event shouldn't propagate up + event.stopPropagation(); + var proposal = calcPointToPercentage(event.calcPoint); + var handleNumber = getClosestHandle(proposal); + // Tackle the case that all handles are 'disabled'. + if (handleNumber === false) { + return; + } + // Flag the slider as it is now in a transitional state. + // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that. + if (!options.events.snap) { + addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration); + } + setHandle(handleNumber, proposal, true, true); + setZindex(); + fireEvent("slide", handleNumber, true); + fireEvent("update", handleNumber, true); + if (!options.events.snap) { + fireEvent("change", handleNumber, true); + fireEvent("set", handleNumber, true); + } + else { + eventStart(event, { handleNumbers: [handleNumber] }); + } + } + // Fires a 'hover' event for a hovered mouse/pen position. + function eventHover(event) { + var proposal = calcPointToPercentage(event.calcPoint); + var to = scope_Spectrum.getStep(proposal); + var value = scope_Spectrum.fromStepping(to); + Object.keys(scope_Events).forEach(function (targetEvent) { + if ("hover" === targetEvent.split(".")[0]) { + scope_Events[targetEvent].forEach(function (callback) { + callback.call(scope_Self, value); + }); + } + }); + } + // Handles keydown on focused handles + // Don't move the document when pressing arrow keys on focused handles + function eventKeydown(event, handleNumber) { + if (isSliderDisabled() || isHandleDisabled(handleNumber)) { + return false; + } + var horizontalKeys = ["Left", "Right"]; + var verticalKeys = ["Down", "Up"]; + var largeStepKeys = ["PageDown", "PageUp"]; + var edgeKeys = ["Home", "End"]; + if (options.dir && !options.ort) { + // On an right-to-left slider, the left and right keys act inverted + horizontalKeys.reverse(); + } + else if (options.ort && !options.dir) { + // On a top-to-bottom slider, the up and down keys act inverted + verticalKeys.reverse(); + largeStepKeys.reverse(); + } + // Strip "Arrow" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + var key = event.key.replace("Arrow", ""); + var isLargeDown = key === largeStepKeys[0]; + var isLargeUp = key === largeStepKeys[1]; + var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown; + var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp; + var isMin = key === edgeKeys[0]; + var isMax = key === edgeKeys[1]; + if (!isDown && !isUp && !isMin && !isMax) { + return true; + } + event.preventDefault(); + var to; + if (isUp || isDown) { + var direction = isDown ? 0 : 1; + var steps = getNextStepsForHandle(handleNumber); + var step = steps[direction]; + // At the edge of a slider, do nothing + if (step === null) { + return false; + } + // No step set, use the default of 10% of the sub-range + if (step === false) { + step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, options.keyboardDefaultStep); + } + if (isLargeUp || isLargeDown) { + step *= options.keyboardPageMultiplier; + } + else { + step *= options.keyboardMultiplier; + } + // Step over zero-length ranges (#948); + step = Math.max(step, 0.0000001); + // Decrement for down steps + step = (isDown ? -1 : 1) * step; + to = scope_Values[handleNumber] + step; + } + else if (isMax) { + // End key + to = options.spectrum.xVal[options.spectrum.xVal.length - 1]; + } + else { + // Home key + to = options.spectrum.xVal[0]; + } + setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true); + fireEvent("slide", handleNumber); + fireEvent("update", handleNumber); + fireEvent("change", handleNumber); + fireEvent("set", handleNumber); + return false; + } + // Attach events to several slider parts. + function bindSliderEvents(behaviour) { + // Attach the standard drag event to the handles. + if (!behaviour.fixed) { + scope_Handles.forEach(function (handle, index) { + // These events are only bound to the visual handle + // element, not the 'real' origin element. + attachEvent(actions.start, handle.children[0], eventStart, { + handleNumbers: [index], + }); + }); + } + // Attach the tap event to the slider base. + if (behaviour.tap) { + attachEvent(actions.start, scope_Base, eventTap, {}); + } + // Fire hover events + if (behaviour.hover) { + attachEvent(actions.move, scope_Base, eventHover, { + hover: true, + }); + } + // Make the range draggable. + if (behaviour.drag) { + scope_Connects.forEach(function (connect, index) { + if (connect === false || index === 0 || index === scope_Connects.length - 1) { + return; + } + var handleBefore = scope_Handles[index - 1]; + var handleAfter = scope_Handles[index]; + var eventHolders = [connect]; + var handlesToDrag = [handleBefore, handleAfter]; + var handleNumbersToDrag = [index - 1, index]; + addClass(connect, options.cssClasses.draggable); + // When the range is fixed, the entire range can + // be dragged by the handles. The handle in the first + // origin will propagate the start event upward, + // but it needs to be bound manually on the other. + if (behaviour.fixed) { + eventHolders.push(handleBefore.children[0]); + eventHolders.push(handleAfter.children[0]); + } + if (behaviour.dragAll) { + handlesToDrag = scope_Handles; + handleNumbersToDrag = scope_HandleNumbers; + } + eventHolders.forEach(function (eventHolder) { + attachEvent(actions.start, eventHolder, eventStart, { + handles: handlesToDrag, + handleNumbers: handleNumbersToDrag, + connect: connect, + }); + }); + }); + } + } + // Attach an event to this slider, possibly including a namespace + function bindEvent(namespacedEvent, callback) { + scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || []; + scope_Events[namespacedEvent].push(callback); + // If the event bound is 'update,' fire it immediately for all handles. + if (namespacedEvent.split(".")[0] === "update") { + scope_Handles.forEach(function (a, index) { + fireEvent("update", index); + }); + } + } + function isInternalNamespace(namespace) { + return namespace === INTERNAL_EVENT_NS.aria || namespace === INTERNAL_EVENT_NS.tooltips; + } + // Undo attachment of event + function removeEvent(namespacedEvent) { + var event = namespacedEvent && namespacedEvent.split(".")[0]; + var namespace = event ? namespacedEvent.substring(event.length) : namespacedEvent; + Object.keys(scope_Events).forEach(function (bind) { + var tEvent = bind.split(".")[0]; + var tNamespace = bind.substring(tEvent.length); + if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) { + // only delete protected internal event if intentional + if (!isInternalNamespace(tNamespace) || namespace === tNamespace) { + delete scope_Events[bind]; + } + } + }); + } + // External event handling + function fireEvent(eventName, handleNumber, tap) { + Object.keys(scope_Events).forEach(function (targetEvent) { + var eventType = targetEvent.split(".")[0]; + if (eventName === eventType) { + scope_Events[targetEvent].forEach(function (callback) { + callback.call( + // Use the slider public API as the scope ('this') + scope_Self, + // Return values as array, so arg_1[arg_2] is always valid. + scope_Values.map(options.format.to), + // Handle index, 0 or 1 + handleNumber, + // Un-formatted slider values + scope_Values.slice(), + // Event is fired by tap, true or false + tap || false, + // Left offset of the handle, in relation to the slider + scope_Locations.slice(), + // add the slider public API to an accessible parameter when this is unavailable + scope_Self); + }); + } + }); + } + // Split out the handle positioning logic so the Move event can use it, too + function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue, smoothSteps) { + var distance; + // For sliders with multiple handles, limit movement to the other handle. + // Apply the margin option by adding it to the handle positions. + if (scope_Handles.length > 1 && !options.events.unconstrained) { + if (lookBackward && handleNumber > 0) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.margin, false); + to = Math.max(to, distance); + } + if (lookForward && handleNumber < scope_Handles.length - 1) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.margin, true); + to = Math.min(to, distance); + } + } + // The limit option has the opposite effect, limiting handles to a + // maximum distance from another. Limit must be > 0, as otherwise + // handles would be unmovable. + if (scope_Handles.length > 1 && options.limit) { + if (lookBackward && handleNumber > 0) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.limit, false); + to = Math.min(to, distance); + } + if (lookForward && handleNumber < scope_Handles.length - 1) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.limit, true); + to = Math.max(to, distance); + } + } + // The padding option keeps the handles a certain distance from the + // edges of the slider. Padding must be > 0. + if (options.padding) { + if (handleNumber === 0) { + distance = scope_Spectrum.getAbsoluteDistance(0, options.padding[0], false); + to = Math.max(to, distance); + } + if (handleNumber === scope_Handles.length - 1) { + distance = scope_Spectrum.getAbsoluteDistance(100, options.padding[1], true); + to = Math.min(to, distance); + } + } + if (!smoothSteps) { + to = scope_Spectrum.getStep(to); + } + // Limit percentage to the 0 - 100 range + to = limit(to); + // Return false if handle can't move + if (to === reference[handleNumber] && !getValue) { + return false; + } + return to; + } + // Uses slider orientation to create CSS rules. a = base value; + function inRuleOrder(v, a) { + var o = options.ort; + return (o ? a : v) + ", " + (o ? v : a); + } + // Moves handle(s) by a percentage + // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...]) + function moveHandles(upward, proposal, locations, handleNumbers, connect) { + var proposals = locations.slice(); + // Store first handle now, so we still have it in case handleNumbers is reversed + var firstHandle = handleNumbers[0]; + var smoothSteps = options.events.smoothSteps; + var b = [!upward, upward]; + var f = [upward, !upward]; + // Copy handleNumbers so we don't change the dataset + handleNumbers = handleNumbers.slice(); + // Check to see which handle is 'leading'. + // If that one can't move the second can't either. + if (upward) { + handleNumbers.reverse(); + } + // Step 1: get the maximum percentage that any of the handles can move + if (handleNumbers.length > 1) { + handleNumbers.forEach(function (handleNumber, o) { + var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false, smoothSteps); + // Stop if one of the handles can't move. + if (to === false) { + proposal = 0; + } + else { + proposal = to - proposals[handleNumber]; + proposals[handleNumber] = to; + } + }); + } + // If using one handle, check backward AND forward + else { + b = f = [true]; + } + var state = false; + // Step 2: Try to set the handles with the found percentage + handleNumbers.forEach(function (handleNumber, o) { + state = + setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o], false, smoothSteps) || state; + }); + // Step 3: If a handle moved, fire events + if (state) { + handleNumbers.forEach(function (handleNumber) { + fireEvent("update", handleNumber); + fireEvent("slide", handleNumber); + }); + // If target is a connect, then fire drag event + if (connect != undefined) { + fireEvent("drag", firstHandle); + } + } + } + // Takes a base value and an offset. This offset is used for the connect bar size. + // In the initial design for this feature, the origin element was 1% wide. + // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature + // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223 + function transformDirection(a, b) { + return options.dir ? 100 - a - b : a; + } + // Updates scope_Locations and scope_Values, updates visual state + function updateHandlePosition(handleNumber, to) { + // Update locations. + scope_Locations[handleNumber] = to; + // Convert the value to the slider stepping/range. + scope_Values[handleNumber] = scope_Spectrum.fromStepping(to); + var translation = transformDirection(to, 0) - scope_DirOffset; + var translateRule = "translate(" + inRuleOrder(translation + "%", "0") + ")"; + scope_Handles[handleNumber].style[options.transformRule] = translateRule; + updateConnect(handleNumber); + updateConnect(handleNumber + 1); + } + // Handles before the slider middle are stacked later = higher, + // Handles after the middle later is lower + // [[7] [8] .......... | .......... [5] [4] + function setZindex() { + scope_HandleNumbers.forEach(function (handleNumber) { + var dir = scope_Locations[handleNumber] > 50 ? -1 : 1; + var zIndex = 3 + (scope_Handles.length + dir * handleNumber); + scope_Handles[handleNumber].style.zIndex = String(zIndex); + }); + } + // Test suggested values and apply margin, step. + // if exactInput is true, don't run checkHandlePosition, then the handle can be placed in between steps (#436) + function setHandle(handleNumber, to, lookBackward, lookForward, exactInput, smoothSteps) { + if (!exactInput) { + to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false, smoothSteps); + } + if (to === false) { + return false; + } + updateHandlePosition(handleNumber, to); + return true; + } + // Updates style attribute for connect nodes + function updateConnect(index) { + // Skip connects set to false + if (!scope_Connects[index]) { + return; + } + var l = 0; + var h = 100; + if (index !== 0) { + l = scope_Locations[index - 1]; + } + if (index !== scope_Connects.length - 1) { + h = scope_Locations[index]; + } + // We use two rules: + // 'translate' to change the left/top offset; + // 'scale' to change the width of the element; + // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base) + var connectWidth = h - l; + var translateRule = "translate(" + inRuleOrder(transformDirection(l, connectWidth) + "%", "0") + ")"; + var scaleRule = "scale(" + inRuleOrder(connectWidth / 100, "1") + ")"; + scope_Connects[index].style[options.transformRule] = + translateRule + " " + scaleRule; + } + // Parses value passed to .set method. Returns current value if not parse-able. + function resolveToValue(to, handleNumber) { + // Setting with null indicates an 'ignore'. + // Inputting 'false' is invalid. + if (to === null || to === false || to === undefined) { + return scope_Locations[handleNumber]; + } + // If a formatted number was passed, attempt to decode it. + if (typeof to === "number") { + to = String(to); + } + to = options.format.from(to); + if (to !== false) { + to = scope_Spectrum.toStepping(to); + } + // If parsing the number failed, use the current value. + if (to === false || isNaN(to)) { + return scope_Locations[handleNumber]; + } + return to; + } + // Set the slider value. + function valueSet(input, fireSetEvent, exactInput) { + var values = asArray(input); + var isInit = scope_Locations[0] === undefined; + // Event fires by default + fireSetEvent = fireSetEvent === undefined ? true : fireSetEvent; + // Animation is optional. + // Make sure the initial values were set before using animated placement. + if (options.animate && !isInit) { + addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration); + } + // First pass, without lookAhead but with lookBackward. Values are set from left to right. + scope_HandleNumbers.forEach(function (handleNumber) { + setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false, exactInput); + }); + var i = scope_HandleNumbers.length === 1 ? 0 : 1; + // Spread handles evenly across the slider if the range has no size (min=max) + if (isInit && scope_Spectrum.hasNoSize()) { + exactInput = true; + scope_Locations[0] = 0; + if (scope_HandleNumbers.length > 1) { + var space_1 = 100 / (scope_HandleNumbers.length - 1); + scope_HandleNumbers.forEach(function (handleNumber) { + scope_Locations[handleNumber] = handleNumber * space_1; + }); + } + } + // Secondary passes. Now that all base values are set, apply constraints. + // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009) + for (; i < scope_HandleNumbers.length; ++i) { + scope_HandleNumbers.forEach(function (handleNumber) { + setHandle(handleNumber, scope_Locations[handleNumber], true, true, exactInput); + }); + } + setZindex(); + scope_HandleNumbers.forEach(function (handleNumber) { + fireEvent("update", handleNumber); + // Fire the event only for handles that received a new value, as per #579 + if (values[handleNumber] !== null && fireSetEvent) { + fireEvent("set", handleNumber); + } + }); + } + // Reset slider to initial values + function valueReset(fireSetEvent) { + valueSet(options.start, fireSetEvent); + } + // Set value for a single handle + function valueSetHandle(handleNumber, value, fireSetEvent, exactInput) { + // Ensure numeric input + handleNumber = Number(handleNumber); + if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) { + throw new Error("noUiSlider: invalid handle number, got: " + handleNumber); + } + // Look both backward and forward, since we don't want this handle to "push" other handles (#960); + // The exactInput argument can be used to ignore slider stepping (#436) + setHandle(handleNumber, resolveToValue(value, handleNumber), true, true, exactInput); + fireEvent("update", handleNumber); + if (fireSetEvent) { + fireEvent("set", handleNumber); + } + } + // Get the slider value. + function valueGet(unencoded) { + if (unencoded === void 0) { unencoded = false; } + if (unencoded) { + // return a copy of the raw values + return scope_Values.length === 1 ? scope_Values[0] : scope_Values.slice(0); + } + var values = scope_Values.map(options.format.to); + // If only one handle is used, return a single value. + if (values.length === 1) { + return values[0]; + } + return values; + } + // Removes classes from the root and empties it. + function destroy() { + // remove protected internal listeners + removeEvent(INTERNAL_EVENT_NS.aria); + removeEvent(INTERNAL_EVENT_NS.tooltips); + Object.keys(options.cssClasses).forEach(function (key) { + removeClass(scope_Target, options.cssClasses[key]); + }); + while (scope_Target.firstChild) { + scope_Target.removeChild(scope_Target.firstChild); + } + delete scope_Target.noUiSlider; + } + function getNextStepsForHandle(handleNumber) { + var location = scope_Locations[handleNumber]; + var nearbySteps = scope_Spectrum.getNearbySteps(location); + var value = scope_Values[handleNumber]; + var increment = nearbySteps.thisStep.step; + var decrement = null; + // If snapped, directly use defined step value + if (options.snap) { + return [ + value - nearbySteps.stepBefore.startValue || null, + nearbySteps.stepAfter.startValue - value || null, + ]; + } + // If the next value in this step moves into the next step, + // the increment is the start of the next step - the current value + if (increment !== false) { + if (value + increment > nearbySteps.stepAfter.startValue) { + increment = nearbySteps.stepAfter.startValue - value; + } + } + // If the value is beyond the starting point + if (value > nearbySteps.thisStep.startValue) { + decrement = nearbySteps.thisStep.step; + } + else if (nearbySteps.stepBefore.step === false) { + decrement = false; + } + // If a handle is at the start of a step, it always steps back into the previous step first + else { + decrement = value - nearbySteps.stepBefore.highestStep; + } + // Now, if at the slider edges, there is no in/decrement + if (location === 100) { + increment = null; + } + else if (location === 0) { + decrement = null; + } + // As per #391, the comparison for the decrement step can have some rounding issues. + var stepDecimals = scope_Spectrum.countStepDecimals(); + // Round per #391 + if (increment !== null && increment !== false) { + increment = Number(increment.toFixed(stepDecimals)); + } + if (decrement !== null && decrement !== false) { + decrement = Number(decrement.toFixed(stepDecimals)); + } + return [decrement, increment]; + } + // Get the current step size for the slider. + function getNextSteps() { + return scope_HandleNumbers.map(getNextStepsForHandle); + } + // Updatable: margin, limit, padding, step, range, animate, snap + function updateOptions(optionsToUpdate, fireSetEvent) { + // Spectrum is created using the range, snap, direction and step options. + // 'snap' and 'step' can be updated. + // If 'snap' and 'step' are not passed, they should remain unchanged. + var v = valueGet(); + var updateAble = [ + "margin", + "limit", + "padding", + "range", + "animate", + "snap", + "step", + "format", + "pips", + "tooltips", + ]; + // Only change options that we're actually passed to update. + updateAble.forEach(function (name) { + // Check for undefined. null removes the value. + if (optionsToUpdate[name] !== undefined) { + originalOptions[name] = optionsToUpdate[name]; + } + }); + var newOptions = testOptions(originalOptions); + // Load new options into the slider state + updateAble.forEach(function (name) { + if (optionsToUpdate[name] !== undefined) { + options[name] = newOptions[name]; + } + }); + scope_Spectrum = newOptions.spectrum; + // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677) + options.margin = newOptions.margin; + options.limit = newOptions.limit; + options.padding = newOptions.padding; + // Update pips, removes existing. + if (options.pips) { + pips(options.pips); + } + else { + removePips(); + } + // Update tooltips, removes existing. + if (options.tooltips) { + tooltips(); + } + else { + removeTooltips(); + } + // Invalidate the current positioning so valueSet forces an update. + scope_Locations = []; + valueSet(isSet(optionsToUpdate.start) ? optionsToUpdate.start : v, fireSetEvent); + } + // Initialization steps + function setupSlider() { + // Create the base element, initialize HTML and set classes. + // Add handles and connect elements. + scope_Base = addSlider(scope_Target); + addElements(options.connect, scope_Base); + // Attach user events. + bindSliderEvents(options.events); + // Use the public value method to set the start values. + valueSet(options.start); + if (options.pips) { + pips(options.pips); + } + if (options.tooltips) { + tooltips(); + } + aria(); + } + setupSlider(); + var scope_Self = { + destroy: destroy, + steps: getNextSteps, + on: bindEvent, + off: removeEvent, + get: valueGet, + set: valueSet, + setHandle: valueSetHandle, + reset: valueReset, + disable: disable, + enable: enable, + // Exposed for unit testing, don't use this in your application. + __moveHandles: function (upward, proposal, handleNumbers) { + moveHandles(upward, proposal, scope_Locations, handleNumbers); + }, + options: originalOptions, + updateOptions: updateOptions, + target: scope_Target, + removePips: removePips, + removeTooltips: removeTooltips, + getPositions: function () { + return scope_Locations.slice(); + }, + getTooltips: function () { + return scope_Tooltips; + }, + getOrigins: function () { + return scope_Handles; + }, + pips: pips, // Issue #594 + }; + return scope_Self; + } + // Run the standard initializer + function initialize(target, originalOptions) { + if (!target || !target.nodeName) { + throw new Error("noUiSlider: create requires a single element, got: " + target); + } + // Throw an error if the slider was already initialized. + if (target.noUiSlider) { + throw new Error("noUiSlider: Slider was already initialized."); + } + // Test the options and create the slider environment; + var options = testOptions(originalOptions); + var api = scope(target, options, originalOptions); + target.noUiSlider = api; + return api; + } + var nouislider = { + // Exposed for unit testing, don't use this in your application. + __spectrum: Spectrum, + // A reference to the default classes, allows global changes. + // Use the cssClasses option for changes to one slider. + cssClasses: cssClasses, + create: initialize, + }; + + exports.create = initialize; + exports.cssClasses = cssClasses; + exports["default"] = nouislider; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/gin_ops/static/dist/libs/nouislider/dist/nouislider.min.css b/gin_ops/static/dist/libs/nouislider/dist/nouislider.min.css new file mode 100644 index 0000000..60f217c --- /dev/null +++ b/gin_ops/static/dist/libs/nouislider/dist/nouislider.min.css @@ -0,0 +1 @@ +.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;height:100%;width:100%;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{left:0;right:auto}.noUi-vertical .noUi-origin{top:-100%;width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;right:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;right:-6px;bottom:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{left:-17px;right:auto}.noUi-target{background:#FAFAFA;border-radius:4px;border:1px solid #D3D3D3;box-shadow:inset 0 1px 1px #F0F0F0,0 3px 6px -5px #BBB}.noUi-connects{border-radius:3px}.noUi-connect{background:#3FB8AF}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #D9D9D9;border-radius:3px;background:#FFF;cursor:default;box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #EBEBEB,0 3px 6px -3px #BBB}.noUi-active{box-shadow:inset 0 0 1px #FFF,inset 0 1px 7px #DDD,0 3px 6px -3px #BBB}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#E8E7E6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#B8B8B8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#CCC}.noUi-marker-sub{background:#AAA}.noUi-marker-large{background:#AAA}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0,50%);transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #D9D9D9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.noUi-horizontal .noUi-origin>.noUi-tooltip{-webkit-transform:translate(50%,0);transform:translate(50%,0);left:auto;bottom:10px}.noUi-vertical .noUi-origin>.noUi-tooltip{-webkit-transform:translate(0,-18px);transform:translate(0,-18px);top:auto;right:28px} \ No newline at end of file diff --git a/gin_ops/static/dist/libs/nouislider/dist/nouislider.min.js b/gin_ops/static/dist/libs/nouislider/dist/nouislider.min.js new file mode 100644 index 0000000..d52d86a --- /dev/null +++ b/gin_ops/static/dist/libs/nouislider/dist/nouislider.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).noUiSlider={})}(this,function(ot){"use strict";function n(t){return"object"==typeof t&&"function"==typeof t.to}function st(t){t.parentElement.removeChild(t)}function at(t){return null!=t}function lt(t){t.preventDefault()}function i(t){return"number"==typeof t&&!isNaN(t)&&isFinite(t)}function ut(t,e,r){0=e[r];)r+=1;return r}function r(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=l(r,t),i=t[n-1],o=t[n],t=e[n-1],n=e[n];return t+(r=r,a(o=[i,o],o[0]<0?r+Math.abs(o[0]):r-o[0],0)/s(t,n))}function o(t,e,r,n){if(100===n)return n;var i=l(n,t),o=t[i-1],s=t[i];return r?(s-o)/2this.xPct[n+1];)n++;else t===this.xPct[this.xPct.length-1]&&(n=this.xPct.length-2);r||t!==this.xPct[n+1]||n++;for(var i,o=1,s=(e=null===e?[]:e)[n],a=0,l=0,u=0,c=r?(t-this.xPct[n])/(this.xPct[n+1]-this.xPct[n]):(this.xPct[n+1]-t)/(this.xPct[n+1]-this.xPct[n]);0= 2) required for mode 'count'.");for(var e=t.values-1,r=100/e,n=[];e--;)n[e]=e*r;return n.push(100),U(n,t.stepped)}(d),m={},t=S.xVal[0],e=S.xVal[S.xVal.length-1],g=!1,v=!1,b=0;return(h=h.slice().sort(function(t,e){return t-e}).filter(function(t){return!this[t]&&(this[t]=!0)},{}))[0]!==t&&(h.unshift(t),g=!0),h[h.length-1]!==e&&(h.push(e),v=!0),h.forEach(function(t,e){var r,n,i,o,s,a,l,u,t=t,c=h[e+1],p=d.mode===ot.PipsMode.Steps,f=(f=p?S.xNumSteps[e]:f)||c-t;for(void 0===c&&(c=t),f=Math.max(f,1e-7),r=t;r<=c;r=Number((r+f).toFixed(7))){for(a=(o=(i=S.toStepping(r))-b)/(d.density||1),u=o/(l=Math.round(a)),n=1;n<=l;n+=1)m[(s=b+n*u).toFixed(5)]=[S.fromStepping(s),0];a=-1ot.PipsType.NoValue&&((t=P(a,!1)).className=p(n,f.cssClasses.value),t.setAttribute("data-value",String(r)),t.style[f.style]=e+"%",t.innerHTML=String(s.to(r))))}),a}function L(){n&&(st(n),n=null)}function T(t){L();var e=D(t),r=t.filter,t=t.format||{to:function(t){return String(Math.round(t))}};return n=d.appendChild(O(e,r,t))}function j(){var t=i.getBoundingClientRect(),e="offset"+["Width","Height"][f.ort];return 0===f.ort?t.width||i[e]:t.height||i[e]}function z(n,i,o,s){function e(t){var e,r=function(e,t,r){var n=0===e.type.indexOf("touch"),i=0===e.type.indexOf("mouse"),o=0===e.type.indexOf("pointer"),s=0,a=0;0===e.type.indexOf("MSPointer")&&(o=!0);if("mousedown"===e.type&&!e.buttons&&!e.touches)return!1;if(n){var l=function(t){t=t.target;return t===r||r.contains(t)||e.composed&&e.composedPath().shift()===r};if("touchstart"===e.type){n=Array.prototype.filter.call(e.touches,l);if(1r.stepAfter.startValue&&(i=r.stepAfter.startValue-n),t=n>r.thisStep.startValue?r.thisStep.step:!1!==r.stepBefore.step&&n-r.stepBefore.highestStep,100===e?i=null:0===e&&(t=null);e=S.countStepDecimals();return null!==i&&!1!==i&&(i=Number(i.toFixed(e))),[t=null!==t&&!1!==t?Number(t.toFixed(e)):t,i]}ft(t=d,f.cssClasses.target),0===f.dir?ft(t,f.cssClasses.ltr):ft(t,f.cssClasses.rtl),0===f.ort?ft(t,f.cssClasses.horizontal):ft(t,f.cssClasses.vertical),ft(t,"rtl"===getComputedStyle(t).direction?f.cssClasses.textDirectionRtl:f.cssClasses.textDirectionLtr),i=P(t,f.cssClasses.base),function(t,e){var r=P(e,f.cssClasses.connects);l=[],(a=[]).push(N(r,t[0]));for(var n=0;n=e[r];)r+=1;return r}function toStepping(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=getJ(r,t),i=t[n-1],s=t[n],t=e[n-1],n=e[n];return t+toPercentage([i,s],r)/subRangeRatio(t,n)}function fromStepping(t,e,r){if(100<=r)return t.slice(-1)[0];var n=getJ(r,e),i=t[n-1],s=t[n],t=e[n-1];return isPercentage([i,s],(r-t)*subRangeRatio(t,e[n]))}function getStep(t,e,r,n){if(100===n)return n;var i=getJ(n,t),s=t[i-1],o=t[i];return r?(o-s)/2this.xPct[n+1];)n++;else t===this.xPct[this.xPct.length-1]&&(n=this.xPct.length-2);r||t!==this.xPct[n+1]||n++;for(var i,s=1,o=(e=null===e?[]:e)[n],a=0,l=0,u=0,c=r?(t-this.xPct[n])/(this.xPct[n+1]-this.xPct[n]):(this.xPct[n+1]-t)/(this.xPct[n+1]-this.xPct[n]);0= 2) required for mode 'count'.");for(var e=t.values-1,r=100/e,n=[];e--;)n[e]=e*r;return n.push(100),M(n,t.stepped)}(f),m={},t=S.xVal[0],e=S.xVal[S.xVal.length-1],g=!1,v=!1,b=0;return(h=unique(h.slice().sort(function(t,e){return t-e})))[0]!==t&&(h.unshift(t),g=!0),h[h.length-1]!==e&&(h.push(e),v=!0),h.forEach(function(t,e){var r,n,i,s,o,a,l,u,t=t,c=h[e+1],p=f.mode===PipsMode.Steps,d=(d=p?S.xNumSteps[e]:d)||c-t;for(void 0===c&&(c=t),d=Math.max(d,1e-7),r=t;r<=c;r=Number((r+d).toFixed(7))){for(a=(s=(i=S.toStepping(r))-b)/(f.density||1),u=s/(l=Math.round(a)),n=1;n<=l;n+=1)m[(o=b+n*u).toFixed(5)]=[S.fromStepping(o),0];a=-1PipsType.NoValue&&((t=N(a,!1)).className=p(n,d.cssClasses.value),t.setAttribute("data-value",String(r)),t.style[d.style]=e+"%",t.innerHTML=String(o.to(r))))}),a}function U(){n&&(removeElement(n),n=null)}function L(t){U();var e=D(t),r=t.filter,t=t.format||{to:function(t){return String(Math.round(t))}};return n=f.appendChild(T(e,r,t))}function O(){var t=r.getBoundingClientRect(),e="offset"+["Width","Height"][d.ort];return 0===d.ort?t.width||r[e]:t.height||r[e]}function F(e,r,n,i){function s(t){return!!(t=function(e,t,r){var n=0===e.type.indexOf("touch"),i=0===e.type.indexOf("mouse"),s=0===e.type.indexOf("pointer"),o=0,a=0;0===e.type.indexOf("MSPointer")&&(s=!0);if("mousedown"===e.type&&!e.buttons&&!e.touches)return!1;if(n){var l=function(t){t=t.target;return t===r||r.contains(t)||e.composed&&e.composedPath().shift()===r};if("touchstart"===e.type){n=Array.prototype.filter.call(e.touches,l);if(1r.stepAfter.startValue&&(i=r.stepAfter.startValue-n),t=n>r.thisStep.startValue?r.thisStep.step:!1!==r.stepBefore.step&&n-r.stepBefore.highestStep,100===e?i=null:0===e&&(t=null);e=S.countStepDecimals();return null!==i&&!1!==i&&(i=Number(i.toFixed(e))),[t=null!==t&&!1!==t?Number(t.toFixed(e)):t,i]}addClass(t=f,d.cssClasses.target),0===d.dir?addClass(t,d.cssClasses.ltr):addClass(t,d.cssClasses.rtl),0===d.ort?addClass(t,d.cssClasses.horizontal):addClass(t,d.cssClasses.vertical),addClass(t,"rtl"===getComputedStyle(t).direction?d.cssClasses.textDirectionRtl:d.cssClasses.textDirectionLtr),r=N(t,d.cssClasses.base),function(t,e){var r=N(e,d.cssClasses.connects);l=[],(a=[]).push(w(r,t[0]));for(var n=0;n 0) { + addClass(element, className); + setTimeout(function () { + removeClass(element, className); + }, duration); + } +} +// Limits a value to 0 - 100 +function limit(a) { + return Math.max(Math.min(a, 100), 0); +} +// Wraps a variable as an array, if it isn't one yet. +// Note that an input array is returned by reference! +function asArray(a) { + return Array.isArray(a) ? a : [a]; +} +// Counts decimals +function countDecimals(numStr) { + numStr = String(numStr); + var pieces = numStr.split("."); + return pieces.length > 1 ? pieces[1].length : 0; +} +// http://youmightnotneedjquery.com/#add_class +function addClass(el, className) { + if (el.classList && !/\s/.test(className)) { + el.classList.add(className); + } + else { + el.className += " " + className; + } +} +// http://youmightnotneedjquery.com/#remove_class +function removeClass(el, className) { + if (el.classList && !/\s/.test(className)) { + el.classList.remove(className); + } + else { + el.className = el.className.replace(new RegExp("(^|\\b)" + className.split(" ").join("|") + "(\\b|$)", "gi"), " "); + } +} +// https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/ +function hasClass(el, className) { + return el.classList ? el.classList.contains(className) : new RegExp("\\b" + className + "\\b").test(el.className); +} +// https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY#Notes +function getPageOffset(doc) { + var supportPageOffset = window.pageXOffset !== undefined; + var isCSS1Compat = (doc.compatMode || "") === "CSS1Compat"; + var x = supportPageOffset + ? window.pageXOffset + : isCSS1Compat + ? doc.documentElement.scrollLeft + : doc.body.scrollLeft; + var y = supportPageOffset + ? window.pageYOffset + : isCSS1Compat + ? doc.documentElement.scrollTop + : doc.body.scrollTop; + return { + x: x, + y: y, + }; +} +// we provide a function to compute constants instead +// of accessing window.* as soon as the module needs it +// so that we do not compute anything if not needed +function getActions() { + // Determine the events to bind. IE11 implements pointerEvents without + // a prefix, which breaks compatibility with the IE10 implementation. + return window.navigator.pointerEnabled + ? { + start: "pointerdown", + move: "pointermove", + end: "pointerup", + } + : window.navigator.msPointerEnabled + ? { + start: "MSPointerDown", + move: "MSPointerMove", + end: "MSPointerUp", + } + : { + start: "mousedown touchstart", + move: "mousemove touchmove", + end: "mouseup touchend", + }; +} +// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md +// Issue #785 +function getSupportsPassive() { + var supportsPassive = false; + /* eslint-disable */ + try { + var opts = Object.defineProperty({}, "passive", { + get: function () { + supportsPassive = true; + }, + }); + // @ts-ignore + window.addEventListener("test", null, opts); + } + catch (e) { } + /* eslint-enable */ + return supportsPassive; +} +function getSupportsTouchActionNone() { + return window.CSS && CSS.supports && CSS.supports("touch-action", "none"); +} +//endregion +//region Range Calculation +// Determine the size of a sub-range in relation to a full range. +function subRangeRatio(pa, pb) { + return 100 / (pb - pa); +} +// (percentage) How many percent is this value of this range? +function fromPercentage(range, value, startRange) { + return (value * 100) / (range[startRange + 1] - range[startRange]); +} +// (percentage) Where is this value on this range? +function toPercentage(range, value) { + return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0], 0); +} +// (value) How much is this percentage on this range? +function isPercentage(range, value) { + return (value * (range[1] - range[0])) / 100 + range[0]; +} +function getJ(value, arr) { + var j = 1; + while (value >= arr[j]) { + j += 1; + } + return j; +} +// (percentage) Input a value, find where, on a scale of 0-100, it applies. +function toStepping(xVal, xPct, value) { + if (value >= xVal.slice(-1)[0]) { + return 100; + } + var j = getJ(value, xVal); + var va = xVal[j - 1]; + var vb = xVal[j]; + var pa = xPct[j - 1]; + var pb = xPct[j]; + return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb); +} +// (value) Input a percentage, find where it is on the specified range. +function fromStepping(xVal, xPct, value) { + // There is no range group that fits 100 + if (value >= 100) { + return xVal.slice(-1)[0]; + } + var j = getJ(value, xPct); + var va = xVal[j - 1]; + var vb = xVal[j]; + var pa = xPct[j - 1]; + var pb = xPct[j]; + return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb)); +} +// (percentage) Get the step that applies at a certain value. +function getStep(xPct, xSteps, snap, value) { + if (value === 100) { + return value; + } + var j = getJ(value, xPct); + var a = xPct[j - 1]; + var b = xPct[j]; + // If 'snap' is set, steps are used as fixed points on the slider. + if (snap) { + // Find the closest position, a or b. + if (value - a > (b - a) / 2) { + return b; + } + return a; + } + if (!xSteps[j - 1]) { + return value; + } + return xPct[j - 1] + closest(value - xPct[j - 1], xSteps[j - 1]); +} +//endregion +//region Spectrum +var Spectrum = /** @class */ (function () { + function Spectrum(entry, snap, singleStep) { + this.xPct = []; + this.xVal = []; + this.xSteps = []; + this.xNumSteps = []; + this.xHighestCompleteStep = []; + this.xSteps = [singleStep || false]; + this.xNumSteps = [false]; + this.snap = snap; + var index; + var ordered = []; + // Map the object keys to an array. + Object.keys(entry).forEach(function (index) { + ordered.push([asArray(entry[index]), index]); + }); + // Sort all entries by value (numeric sort). + ordered.sort(function (a, b) { + return a[0][0] - b[0][0]; + }); + // Convert all entries to subranges. + for (index = 0; index < ordered.length; index++) { + this.handleEntryPoint(ordered[index][1], ordered[index][0]); + } + // Store the actual step values. + // xSteps is sorted in the same order as xPct and xVal. + this.xNumSteps = this.xSteps.slice(0); + // Convert all numeric steps to the percentage of the subrange they represent. + for (index = 0; index < this.xNumSteps.length; index++) { + this.handleStepPoint(index, this.xNumSteps[index]); + } + } + Spectrum.prototype.getDistance = function (value) { + var distances = []; + for (var index = 0; index < this.xNumSteps.length - 1; index++) { + distances[index] = fromPercentage(this.xVal, value, index); + } + return distances; + }; + // Calculate the percentual distance over the whole scale of ranges. + // direction: 0 = backwards / 1 = forwards + Spectrum.prototype.getAbsoluteDistance = function (value, distances, direction) { + var xPct_index = 0; + // Calculate range where to start calculation + if (value < this.xPct[this.xPct.length - 1]) { + while (value > this.xPct[xPct_index + 1]) { + xPct_index++; + } + } + else if (value === this.xPct[this.xPct.length - 1]) { + xPct_index = this.xPct.length - 2; + } + // If looking backwards and the value is exactly at a range separator then look one range further + if (!direction && value === this.xPct[xPct_index + 1]) { + xPct_index++; + } + if (distances === null) { + distances = []; + } + var start_factor; + var rest_factor = 1; + var rest_rel_distance = distances[xPct_index]; + var range_pct = 0; + var rel_range_distance = 0; + var abs_distance_counter = 0; + var range_counter = 0; + // Calculate what part of the start range the value is + if (direction) { + start_factor = (value - this.xPct[xPct_index]) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]); + } + else { + start_factor = (this.xPct[xPct_index + 1] - value) / (this.xPct[xPct_index + 1] - this.xPct[xPct_index]); + } + // Do until the complete distance across ranges is calculated + while (rest_rel_distance > 0) { + // Calculate the percentage of total range + range_pct = this.xPct[xPct_index + 1 + range_counter] - this.xPct[xPct_index + range_counter]; + // Detect if the margin, padding or limit is larger then the current range and calculate + if (distances[xPct_index + range_counter] * rest_factor + 100 - start_factor * 100 > 100) { + // If larger then take the percentual distance of the whole range + rel_range_distance = range_pct * start_factor; + // Rest factor of relative percentual distance still to be calculated + rest_factor = (rest_rel_distance - 100 * start_factor) / distances[xPct_index + range_counter]; + // Set start factor to 1 as for next range it does not apply. + start_factor = 1; + } + else { + // If smaller or equal then take the percentual distance of the calculate percentual part of that range + rel_range_distance = ((distances[xPct_index + range_counter] * range_pct) / 100) * rest_factor; + // No rest left as the rest fits in current range + rest_factor = 0; + } + if (direction) { + abs_distance_counter = abs_distance_counter - rel_range_distance; + // Limit range to first range when distance becomes outside of minimum range + if (this.xPct.length + range_counter >= 1) { + range_counter--; + } + } + else { + abs_distance_counter = abs_distance_counter + rel_range_distance; + // Limit range to last range when distance becomes outside of maximum range + if (this.xPct.length - range_counter >= 1) { + range_counter++; + } + } + // Rest of relative percentual distance still to be calculated + rest_rel_distance = distances[xPct_index + range_counter] * rest_factor; + } + return value + abs_distance_counter; + }; + Spectrum.prototype.toStepping = function (value) { + value = toStepping(this.xVal, this.xPct, value); + return value; + }; + Spectrum.prototype.fromStepping = function (value) { + return fromStepping(this.xVal, this.xPct, value); + }; + Spectrum.prototype.getStep = function (value) { + value = getStep(this.xPct, this.xSteps, this.snap, value); + return value; + }; + Spectrum.prototype.getDefaultStep = function (value, isDown, size) { + var j = getJ(value, this.xPct); + // When at the top or stepping down, look at the previous sub-range + if (value === 100 || (isDown && value === this.xPct[j - 1])) { + j = Math.max(j - 1, 1); + } + return (this.xVal[j] - this.xVal[j - 1]) / size; + }; + Spectrum.prototype.getNearbySteps = function (value) { + var j = getJ(value, this.xPct); + return { + stepBefore: { + startValue: this.xVal[j - 2], + step: this.xNumSteps[j - 2], + highestStep: this.xHighestCompleteStep[j - 2], + }, + thisStep: { + startValue: this.xVal[j - 1], + step: this.xNumSteps[j - 1], + highestStep: this.xHighestCompleteStep[j - 1], + }, + stepAfter: { + startValue: this.xVal[j], + step: this.xNumSteps[j], + highestStep: this.xHighestCompleteStep[j], + }, + }; + }; + Spectrum.prototype.countStepDecimals = function () { + var stepDecimals = this.xNumSteps.map(countDecimals); + return Math.max.apply(null, stepDecimals); + }; + Spectrum.prototype.hasNoSize = function () { + return this.xVal[0] === this.xVal[this.xVal.length - 1]; + }; + // Outside testing + Spectrum.prototype.convert = function (value) { + return this.getStep(this.toStepping(value)); + }; + Spectrum.prototype.handleEntryPoint = function (index, value) { + var percentage; + // Covert min/max syntax to 0 and 100. + if (index === "min") { + percentage = 0; + } + else if (index === "max") { + percentage = 100; + } + else { + percentage = parseFloat(index); + } + // Check for correct input. + if (!isNumeric(percentage) || !isNumeric(value[0])) { + throw new Error("noUiSlider: 'range' value isn't numeric."); + } + // Store values. + this.xPct.push(percentage); + this.xVal.push(value[0]); + var value1 = Number(value[1]); + // NaN will evaluate to false too, but to keep + // logging clear, set step explicitly. Make sure + // not to override the 'step' setting with false. + if (!percentage) { + if (!isNaN(value1)) { + this.xSteps[0] = value1; + } + } + else { + this.xSteps.push(isNaN(value1) ? false : value1); + } + this.xHighestCompleteStep.push(0); + }; + Spectrum.prototype.handleStepPoint = function (i, n) { + // Ignore 'false' stepping. + if (!n) { + return; + } + // Step over zero-length ranges (#948); + if (this.xVal[i] === this.xVal[i + 1]) { + this.xSteps[i] = this.xHighestCompleteStep[i] = this.xVal[i]; + return; + } + // Factor to range ratio + this.xSteps[i] = + fromPercentage([this.xVal[i], this.xVal[i + 1]], n, 0) / subRangeRatio(this.xPct[i], this.xPct[i + 1]); + var totalSteps = (this.xVal[i + 1] - this.xVal[i]) / this.xNumSteps[i]; + var highestStep = Math.ceil(Number(totalSteps.toFixed(3)) - 1); + var step = this.xVal[i] + this.xNumSteps[i] * highestStep; + this.xHighestCompleteStep[i] = step; + }; + return Spectrum; +}()); +//endregion +//region Options +/* Every input option is tested and parsed. This will prevent + endless validation in internal methods. These tests are + structured with an item for every option available. An + option can be marked as required by setting the 'r' flag. + The testing function is provided with three arguments: + - The provided value for the option; + - A reference to the options object; + - The name for the option; + + The testing function returns false when an error is detected, + or true when everything is OK. It can also modify the option + object, to make sure all values can be correctly looped elsewhere. */ +//region Defaults +var defaultFormatter = { + to: function (value) { + return value === undefined ? "" : value.toFixed(2); + }, + from: Number, +}; +var cssClasses = { + target: "target", + base: "base", + origin: "origin", + handle: "handle", + handleLower: "handle-lower", + handleUpper: "handle-upper", + touchArea: "touch-area", + horizontal: "horizontal", + vertical: "vertical", + background: "background", + connect: "connect", + connects: "connects", + ltr: "ltr", + rtl: "rtl", + textDirectionLtr: "txt-dir-ltr", + textDirectionRtl: "txt-dir-rtl", + draggable: "draggable", + drag: "state-drag", + tap: "state-tap", + active: "active", + tooltip: "tooltip", + pips: "pips", + pipsHorizontal: "pips-horizontal", + pipsVertical: "pips-vertical", + marker: "marker", + markerHorizontal: "marker-horizontal", + markerVertical: "marker-vertical", + markerNormal: "marker-normal", + markerLarge: "marker-large", + markerSub: "marker-sub", + value: "value", + valueHorizontal: "value-horizontal", + valueVertical: "value-vertical", + valueNormal: "value-normal", + valueLarge: "value-large", + valueSub: "value-sub", +}; +// Namespaces of internal event listeners +var INTERNAL_EVENT_NS = { + tooltips: ".__tooltips", + aria: ".__aria", +}; +//endregion +function testStep(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'step' is not numeric."); + } + // The step option can still be used to set stepping + // for linear sliders. Overwritten if set in 'range'. + parsed.singleStep = entry; +} +function testKeyboardPageMultiplier(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'keyboardPageMultiplier' is not numeric."); + } + parsed.keyboardPageMultiplier = entry; +} +function testKeyboardMultiplier(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'keyboardMultiplier' is not numeric."); + } + parsed.keyboardMultiplier = entry; +} +function testKeyboardDefaultStep(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'keyboardDefaultStep' is not numeric."); + } + parsed.keyboardDefaultStep = entry; +} +function testRange(parsed, entry) { + // Filter incorrect input. + if (typeof entry !== "object" || Array.isArray(entry)) { + throw new Error("noUiSlider: 'range' is not an object."); + } + // Catch missing start or end. + if (entry.min === undefined || entry.max === undefined) { + throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); + } + parsed.spectrum = new Spectrum(entry, parsed.snap || false, parsed.singleStep); +} +function testStart(parsed, entry) { + entry = asArray(entry); + // Validate input. Values aren't tested, as the public .val method + // will always provide a valid location. + if (!Array.isArray(entry) || !entry.length) { + throw new Error("noUiSlider: 'start' option is incorrect."); + } + // Store the number of handles. + parsed.handles = entry.length; + // When the slider is initialized, the .val method will + // be called with the start options. + parsed.start = entry; +} +function testSnap(parsed, entry) { + if (typeof entry !== "boolean") { + throw new Error("noUiSlider: 'snap' option must be a boolean."); + } + // Enforce 100% stepping within subranges. + parsed.snap = entry; +} +function testAnimate(parsed, entry) { + if (typeof entry !== "boolean") { + throw new Error("noUiSlider: 'animate' option must be a boolean."); + } + // Enforce 100% stepping within subranges. + parsed.animate = entry; +} +function testAnimationDuration(parsed, entry) { + if (typeof entry !== "number") { + throw new Error("noUiSlider: 'animationDuration' option must be a number."); + } + parsed.animationDuration = entry; +} +function testConnect(parsed, entry) { + var connect = [false]; + var i; + // Map legacy options + if (entry === "lower") { + entry = [true, false]; + } + else if (entry === "upper") { + entry = [false, true]; + } + // Handle boolean options + if (entry === true || entry === false) { + for (i = 1; i < parsed.handles; i++) { + connect.push(entry); + } + connect.push(false); + } + // Reject invalid input + else if (!Array.isArray(entry) || !entry.length || entry.length !== parsed.handles + 1) { + throw new Error("noUiSlider: 'connect' option doesn't match handle count."); + } + else { + connect = entry; + } + parsed.connect = connect; +} +function testOrientation(parsed, entry) { + // Set orientation to an a numerical value for easy + // array selection. + switch (entry) { + case "horizontal": + parsed.ort = 0; + break; + case "vertical": + parsed.ort = 1; + break; + default: + throw new Error("noUiSlider: 'orientation' option is invalid."); + } +} +function testMargin(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'margin' option must be numeric."); + } + // Issue #582 + if (entry === 0) { + return; + } + parsed.margin = parsed.spectrum.getDistance(entry); +} +function testLimit(parsed, entry) { + if (!isNumeric(entry)) { + throw new Error("noUiSlider: 'limit' option must be numeric."); + } + parsed.limit = parsed.spectrum.getDistance(entry); + if (!parsed.limit || parsed.handles < 2) { + throw new Error("noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles."); + } +} +function testPadding(parsed, entry) { + var index; + if (!isNumeric(entry) && !Array.isArray(entry)) { + throw new Error("noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers."); + } + if (Array.isArray(entry) && !(entry.length === 2 || isNumeric(entry[0]) || isNumeric(entry[1]))) { + throw new Error("noUiSlider: 'padding' option must be numeric or array of exactly 2 numbers."); + } + if (entry === 0) { + return; + } + if (!Array.isArray(entry)) { + entry = [entry, entry]; + } + // 'getDistance' returns false for invalid values. + parsed.padding = [parsed.spectrum.getDistance(entry[0]), parsed.spectrum.getDistance(entry[1])]; + for (index = 0; index < parsed.spectrum.xNumSteps.length - 1; index++) { + // last "range" can't contain step size as it is purely an endpoint. + if (parsed.padding[0][index] < 0 || parsed.padding[1][index] < 0) { + throw new Error("noUiSlider: 'padding' option must be a positive number(s)."); + } + } + var totalPadding = entry[0] + entry[1]; + var firstValue = parsed.spectrum.xVal[0]; + var lastValue = parsed.spectrum.xVal[parsed.spectrum.xVal.length - 1]; + if (totalPadding / (lastValue - firstValue) > 1) { + throw new Error("noUiSlider: 'padding' option must not exceed 100% of the range."); + } +} +function testDirection(parsed, entry) { + // Set direction as a numerical value for easy parsing. + // Invert connection for RTL sliders, so that the proper + // handles get the connect/background classes. + switch (entry) { + case "ltr": + parsed.dir = 0; + break; + case "rtl": + parsed.dir = 1; + break; + default: + throw new Error("noUiSlider: 'direction' option was not recognized."); + } +} +function testBehaviour(parsed, entry) { + // Make sure the input is a string. + if (typeof entry !== "string") { + throw new Error("noUiSlider: 'behaviour' must be a string containing options."); + } + // Check if the string contains any keywords. + // None are required. + var tap = entry.indexOf("tap") >= 0; + var drag = entry.indexOf("drag") >= 0; + var fixed = entry.indexOf("fixed") >= 0; + var snap = entry.indexOf("snap") >= 0; + var hover = entry.indexOf("hover") >= 0; + var unconstrained = entry.indexOf("unconstrained") >= 0; + var dragAll = entry.indexOf("drag-all") >= 0; + var smoothSteps = entry.indexOf("smooth-steps") >= 0; + if (fixed) { + if (parsed.handles !== 2) { + throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles"); + } + // Use margin to enforce fixed state + testMargin(parsed, parsed.start[1] - parsed.start[0]); + } + if (unconstrained && (parsed.margin || parsed.limit)) { + throw new Error("noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit"); + } + parsed.events = { + tap: tap || snap, + drag: drag, + dragAll: dragAll, + smoothSteps: smoothSteps, + fixed: fixed, + snap: snap, + hover: hover, + unconstrained: unconstrained, + }; +} +function testTooltips(parsed, entry) { + if (entry === false) { + return; + } + if (entry === true || isValidPartialFormatter(entry)) { + parsed.tooltips = []; + for (var i = 0; i < parsed.handles; i++) { + parsed.tooltips.push(entry); + } + } + else { + entry = asArray(entry); + if (entry.length !== parsed.handles) { + throw new Error("noUiSlider: must pass a formatter for all handles."); + } + entry.forEach(function (formatter) { + if (typeof formatter !== "boolean" && !isValidPartialFormatter(formatter)) { + throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'."); + } + }); + parsed.tooltips = entry; + } +} +function testHandleAttributes(parsed, entry) { + if (entry.length !== parsed.handles) { + throw new Error("noUiSlider: must pass a attributes for all handles."); + } + parsed.handleAttributes = entry; +} +function testAriaFormat(parsed, entry) { + if (!isValidPartialFormatter(entry)) { + throw new Error("noUiSlider: 'ariaFormat' requires 'to' method."); + } + parsed.ariaFormat = entry; +} +function testFormat(parsed, entry) { + if (!isValidFormatter(entry)) { + throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods."); + } + parsed.format = entry; +} +function testKeyboardSupport(parsed, entry) { + if (typeof entry !== "boolean") { + throw new Error("noUiSlider: 'keyboardSupport' option must be a boolean."); + } + parsed.keyboardSupport = entry; +} +function testDocumentElement(parsed, entry) { + // This is an advanced option. Passed values are used without validation. + parsed.documentElement = entry; +} +function testCssPrefix(parsed, entry) { + if (typeof entry !== "string" && entry !== false) { + throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`."); + } + parsed.cssPrefix = entry; +} +function testCssClasses(parsed, entry) { + if (typeof entry !== "object") { + throw new Error("noUiSlider: 'cssClasses' must be an object."); + } + if (typeof parsed.cssPrefix === "string") { + parsed.cssClasses = {}; + Object.keys(entry).forEach(function (key) { + parsed.cssClasses[key] = parsed.cssPrefix + entry[key]; + }); + } + else { + parsed.cssClasses = entry; + } +} +// Test all developer settings and parse to assumption-safe values. +function testOptions(options) { + // To prove a fix for #537, freeze options here. + // If the object is modified, an error will be thrown. + // Object.freeze(options); + var parsed = { + margin: null, + limit: null, + padding: null, + animate: true, + animationDuration: 300, + ariaFormat: defaultFormatter, + format: defaultFormatter, + }; + // Tests are executed in the order they are presented here. + var tests = { + step: { r: false, t: testStep }, + keyboardPageMultiplier: { r: false, t: testKeyboardPageMultiplier }, + keyboardMultiplier: { r: false, t: testKeyboardMultiplier }, + keyboardDefaultStep: { r: false, t: testKeyboardDefaultStep }, + start: { r: true, t: testStart }, + connect: { r: true, t: testConnect }, + direction: { r: true, t: testDirection }, + snap: { r: false, t: testSnap }, + animate: { r: false, t: testAnimate }, + animationDuration: { r: false, t: testAnimationDuration }, + range: { r: true, t: testRange }, + orientation: { r: false, t: testOrientation }, + margin: { r: false, t: testMargin }, + limit: { r: false, t: testLimit }, + padding: { r: false, t: testPadding }, + behaviour: { r: true, t: testBehaviour }, + ariaFormat: { r: false, t: testAriaFormat }, + format: { r: false, t: testFormat }, + tooltips: { r: false, t: testTooltips }, + keyboardSupport: { r: true, t: testKeyboardSupport }, + documentElement: { r: false, t: testDocumentElement }, + cssPrefix: { r: true, t: testCssPrefix }, + cssClasses: { r: true, t: testCssClasses }, + handleAttributes: { r: false, t: testHandleAttributes }, + }; + var defaults = { + connect: false, + direction: "ltr", + behaviour: "tap", + orientation: "horizontal", + keyboardSupport: true, + cssPrefix: "noUi-", + cssClasses: cssClasses, + keyboardPageMultiplier: 5, + keyboardMultiplier: 1, + keyboardDefaultStep: 10, + }; + // AriaFormat defaults to regular format, if any. + if (options.format && !options.ariaFormat) { + options.ariaFormat = options.format; + } + // Run all options through a testing mechanism to ensure correct + // input. It should be noted that options might get modified to + // be handled properly. E.g. wrapping integers in arrays. + Object.keys(tests).forEach(function (name) { + // If the option isn't set, but it is required, throw an error. + if (!isSet(options[name]) && defaults[name] === undefined) { + if (tests[name].r) { + throw new Error("noUiSlider: '" + name + "' is required."); + } + return; + } + tests[name].t(parsed, !isSet(options[name]) ? defaults[name] : options[name]); + }); + // Forward pips options + parsed.pips = options.pips; + // All recent browsers accept unprefixed transform. + // We need -ms- for IE9 and -webkit- for older Android; + // Assume use of -webkit- if unprefixed and -ms- are not supported. + // https://caniuse.com/#feat=transforms2d + var d = document.createElement("div"); + var msPrefix = d.style.msTransform !== undefined; + var noPrefix = d.style.transform !== undefined; + parsed.transformRule = noPrefix ? "transform" : msPrefix ? "msTransform" : "webkitTransform"; + // Pips don't move, so we can place them using left/top. + var styles = [ + ["left", "top"], + ["right", "bottom"], + ]; + parsed.style = styles[parsed.dir][parsed.ort]; + return parsed; +} +//endregion +function scope(target, options, originalOptions) { + var actions = getActions(); + var supportsTouchActionNone = getSupportsTouchActionNone(); + var supportsPassive = supportsTouchActionNone && getSupportsPassive(); + // All variables local to 'scope' are prefixed with 'scope_' + // Slider DOM Nodes + var scope_Target = target; + var scope_Base; + var scope_Handles; + var scope_Connects; + var scope_Pips; + var scope_Tooltips; + // Slider state values + var scope_Spectrum = options.spectrum; + var scope_Values = []; + var scope_Locations = []; + var scope_HandleNumbers = []; + var scope_ActiveHandlesCount = 0; + var scope_Events = {}; + // Document Nodes + var scope_Document = target.ownerDocument; + var scope_DocumentElement = options.documentElement || scope_Document.documentElement; + var scope_Body = scope_Document.body; + // For horizontal sliders in standard ltr documents, + // make .noUi-origin overflow to the left so the document doesn't scroll. + var scope_DirOffset = scope_Document.dir === "rtl" || options.ort === 1 ? 0 : 100; + // Creates a node, adds it to target, returns the new node. + function addNodeTo(addTarget, className) { + var div = scope_Document.createElement("div"); + if (className) { + addClass(div, className); + } + addTarget.appendChild(div); + return div; + } + // Append a origin to the base + function addOrigin(base, handleNumber) { + var origin = addNodeTo(base, options.cssClasses.origin); + var handle = addNodeTo(origin, options.cssClasses.handle); + addNodeTo(handle, options.cssClasses.touchArea); + handle.setAttribute("data-handle", String(handleNumber)); + if (options.keyboardSupport) { + // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex + // 0 = focusable and reachable + handle.setAttribute("tabindex", "0"); + handle.addEventListener("keydown", function (event) { + return eventKeydown(event, handleNumber); + }); + } + if (options.handleAttributes !== undefined) { + var attributes_1 = options.handleAttributes[handleNumber]; + Object.keys(attributes_1).forEach(function (attribute) { + handle.setAttribute(attribute, attributes_1[attribute]); + }); + } + handle.setAttribute("role", "slider"); + handle.setAttribute("aria-orientation", options.ort ? "vertical" : "horizontal"); + if (handleNumber === 0) { + addClass(handle, options.cssClasses.handleLower); + } + else if (handleNumber === options.handles - 1) { + addClass(handle, options.cssClasses.handleUpper); + } + origin.handle = handle; + return origin; + } + // Insert nodes for connect elements + function addConnect(base, add) { + if (!add) { + return false; + } + return addNodeTo(base, options.cssClasses.connect); + } + // Add handles to the slider base. + function addElements(connectOptions, base) { + var connectBase = addNodeTo(base, options.cssClasses.connects); + scope_Handles = []; + scope_Connects = []; + scope_Connects.push(addConnect(connectBase, connectOptions[0])); + // [::::O====O====O====] + // connectOptions = [0, 1, 1, 1] + for (var i = 0; i < options.handles; i++) { + // Keep a list of all added handles. + scope_Handles.push(addOrigin(base, i)); + scope_HandleNumbers[i] = i; + scope_Connects.push(addConnect(connectBase, connectOptions[i + 1])); + } + } + // Initialize a single slider. + function addSlider(addTarget) { + // Apply classes and data to the target. + addClass(addTarget, options.cssClasses.target); + if (options.dir === 0) { + addClass(addTarget, options.cssClasses.ltr); + } + else { + addClass(addTarget, options.cssClasses.rtl); + } + if (options.ort === 0) { + addClass(addTarget, options.cssClasses.horizontal); + } + else { + addClass(addTarget, options.cssClasses.vertical); + } + var textDirection = getComputedStyle(addTarget).direction; + if (textDirection === "rtl") { + addClass(addTarget, options.cssClasses.textDirectionRtl); + } + else { + addClass(addTarget, options.cssClasses.textDirectionLtr); + } + return addNodeTo(addTarget, options.cssClasses.base); + } + function addTooltip(handle, handleNumber) { + if (!options.tooltips || !options.tooltips[handleNumber]) { + return false; + } + return addNodeTo(handle.firstChild, options.cssClasses.tooltip); + } + function isSliderDisabled() { + return scope_Target.hasAttribute("disabled"); + } + // Disable the slider dragging if any handle is disabled + function isHandleDisabled(handleNumber) { + var handleOrigin = scope_Handles[handleNumber]; + return handleOrigin.hasAttribute("disabled"); + } + function disable(handleNumber) { + if (handleNumber !== null && handleNumber !== undefined) { + scope_Handles[handleNumber].setAttribute("disabled", ""); + scope_Handles[handleNumber].handle.removeAttribute("tabindex"); + } + else { + scope_Target.setAttribute("disabled", ""); + scope_Handles.forEach(function (handle) { + handle.handle.removeAttribute("tabindex"); + }); + } + } + function enable(handleNumber) { + if (handleNumber !== null && handleNumber !== undefined) { + scope_Handles[handleNumber].removeAttribute("disabled"); + scope_Handles[handleNumber].handle.setAttribute("tabindex", "0"); + } + else { + scope_Target.removeAttribute("disabled"); + scope_Handles.forEach(function (handle) { + handle.removeAttribute("disabled"); + handle.handle.setAttribute("tabindex", "0"); + }); + } + } + function removeTooltips() { + if (scope_Tooltips) { + removeEvent("update" + INTERNAL_EVENT_NS.tooltips); + scope_Tooltips.forEach(function (tooltip) { + if (tooltip) { + removeElement(tooltip); + } + }); + scope_Tooltips = null; + } + } + // The tooltips option is a shorthand for using the 'update' event. + function tooltips() { + removeTooltips(); + // Tooltips are added with options.tooltips in original order. + scope_Tooltips = scope_Handles.map(addTooltip); + bindEvent("update" + INTERNAL_EVENT_NS.tooltips, function (values, handleNumber, unencoded) { + if (!scope_Tooltips || !options.tooltips) { + return; + } + if (scope_Tooltips[handleNumber] === false) { + return; + } + var formattedValue = values[handleNumber]; + if (options.tooltips[handleNumber] !== true) { + formattedValue = options.tooltips[handleNumber].to(unencoded[handleNumber]); + } + scope_Tooltips[handleNumber].innerHTML = formattedValue; + }); + } + function aria() { + removeEvent("update" + INTERNAL_EVENT_NS.aria); + bindEvent("update" + INTERNAL_EVENT_NS.aria, function (values, handleNumber, unencoded, tap, positions) { + // Update Aria Values for all handles, as a change in one changes min and max values for the next. + scope_HandleNumbers.forEach(function (index) { + var handle = scope_Handles[index]; + var min = checkHandlePosition(scope_Locations, index, 0, true, true, true); + var max = checkHandlePosition(scope_Locations, index, 100, true, true, true); + var now = positions[index]; + // Formatted value for display + var text = String(options.ariaFormat.to(unencoded[index])); + // Map to slider range values + min = scope_Spectrum.fromStepping(min).toFixed(1); + max = scope_Spectrum.fromStepping(max).toFixed(1); + now = scope_Spectrum.fromStepping(now).toFixed(1); + handle.children[0].setAttribute("aria-valuemin", min); + handle.children[0].setAttribute("aria-valuemax", max); + handle.children[0].setAttribute("aria-valuenow", now); + handle.children[0].setAttribute("aria-valuetext", text); + }); + }); + } + function getGroup(pips) { + // Use the range. + if (pips.mode === PipsMode.Range || pips.mode === PipsMode.Steps) { + return scope_Spectrum.xVal; + } + if (pips.mode === PipsMode.Count) { + if (pips.values < 2) { + throw new Error("noUiSlider: 'values' (>= 2) required for mode 'count'."); + } + // Divide 0 - 100 in 'count' parts. + var interval = pips.values - 1; + var spread = 100 / interval; + var values = []; + // List these parts and have them handled as 'positions'. + while (interval--) { + values[interval] = interval * spread; + } + values.push(100); + return mapToRange(values, pips.stepped); + } + if (pips.mode === PipsMode.Positions) { + // Map all percentages to on-range values. + return mapToRange(pips.values, pips.stepped); + } + if (pips.mode === PipsMode.Values) { + // If the value must be stepped, it needs to be converted to a percentage first. + if (pips.stepped) { + return pips.values.map(function (value) { + // Convert to percentage, apply step, return to value. + return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value))); + }); + } + // Otherwise, we can simply use the values. + return pips.values; + } + return []; // pips.mode = never + } + function mapToRange(values, stepped) { + return values.map(function (value) { + return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value); + }); + } + function generateSpread(pips) { + function safeIncrement(value, increment) { + // Avoid floating point variance by dropping the smallest decimal places. + return Number((value + increment).toFixed(7)); + } + var group = getGroup(pips); + var indexes = {}; + var firstInRange = scope_Spectrum.xVal[0]; + var lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1]; + var ignoreFirst = false; + var ignoreLast = false; + var prevPct = 0; + // Create a copy of the group, sort it and filter away all duplicates. + group = unique(group.slice().sort(function (a, b) { + return a - b; + })); + // Make sure the range starts with the first element. + if (group[0] !== firstInRange) { + group.unshift(firstInRange); + ignoreFirst = true; + } + // Likewise for the last one. + if (group[group.length - 1] !== lastInRange) { + group.push(lastInRange); + ignoreLast = true; + } + group.forEach(function (current, index) { + // Get the current step and the lower + upper positions. + var step; + var i; + var q; + var low = current; + var high = group[index + 1]; + var newPct; + var pctDifference; + var pctPos; + var type; + var steps; + var realSteps; + var stepSize; + var isSteps = pips.mode === PipsMode.Steps; + // When using 'steps' mode, use the provided steps. + // Otherwise, we'll step on to the next subrange. + if (isSteps) { + step = scope_Spectrum.xNumSteps[index]; + } + // Default to a 'full' step. + if (!step) { + step = high - low; + } + // If high is undefined we are at the last subrange. Make sure it iterates once (#1088) + if (high === undefined) { + high = low; + } + // Make sure step isn't 0, which would cause an infinite loop (#654) + step = Math.max(step, 0.0000001); + // Find all steps in the subrange. + for (i = low; i <= high; i = safeIncrement(i, step)) { + // Get the percentage value for the current step, + // calculate the size for the subrange. + newPct = scope_Spectrum.toStepping(i); + pctDifference = newPct - prevPct; + steps = pctDifference / (pips.density || 1); + realSteps = Math.round(steps); + // This ratio represents the amount of percentage-space a point indicates. + // For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-divided. + // Round the percentage offset to an even number, then divide by two + // to spread the offset on both sides of the range. + stepSize = pctDifference / realSteps; + // Divide all points evenly, adding the correct number to this subrange. + // Run up to <= so that 100% gets a point, event if ignoreLast is set. + for (q = 1; q <= realSteps; q += 1) { + // The ratio between the rounded value and the actual size might be ~1% off. + // Correct the percentage offset by the number of points + // per subrange. density = 1 will result in 100 points on the + // full range, 2 for 50, 4 for 25, etc. + pctPos = prevPct + q * stepSize; + indexes[pctPos.toFixed(5)] = [scope_Spectrum.fromStepping(pctPos), 0]; + } + // Determine the point type. + type = group.indexOf(i) > -1 ? PipsType.LargeValue : isSteps ? PipsType.SmallValue : PipsType.NoValue; + // Enforce the 'ignoreFirst' option by overwriting the type for 0. + if (!index && ignoreFirst && i !== high) { + type = 0; + } + if (!(i === high && ignoreLast)) { + // Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value. + indexes[newPct.toFixed(5)] = [i, type]; + } + // Update the percentage count. + prevPct = newPct; + } + }); + return indexes; + } + function addMarking(spread, filterFunc, formatter) { + var _a, _b; + var element = scope_Document.createElement("div"); + var valueSizeClasses = (_a = {}, + _a[PipsType.None] = "", + _a[PipsType.NoValue] = options.cssClasses.valueNormal, + _a[PipsType.LargeValue] = options.cssClasses.valueLarge, + _a[PipsType.SmallValue] = options.cssClasses.valueSub, + _a); + var markerSizeClasses = (_b = {}, + _b[PipsType.None] = "", + _b[PipsType.NoValue] = options.cssClasses.markerNormal, + _b[PipsType.LargeValue] = options.cssClasses.markerLarge, + _b[PipsType.SmallValue] = options.cssClasses.markerSub, + _b); + var valueOrientationClasses = [options.cssClasses.valueHorizontal, options.cssClasses.valueVertical]; + var markerOrientationClasses = [options.cssClasses.markerHorizontal, options.cssClasses.markerVertical]; + addClass(element, options.cssClasses.pips); + addClass(element, options.ort === 0 ? options.cssClasses.pipsHorizontal : options.cssClasses.pipsVertical); + function getClasses(type, source) { + var a = source === options.cssClasses.value; + var orientationClasses = a ? valueOrientationClasses : markerOrientationClasses; + var sizeClasses = a ? valueSizeClasses : markerSizeClasses; + return source + " " + orientationClasses[options.ort] + " " + sizeClasses[type]; + } + function addSpread(offset, value, type) { + // Apply the filter function, if it is set. + type = filterFunc ? filterFunc(value, type) : type; + if (type === PipsType.None) { + return; + } + // Add a marker for every point + var node = addNodeTo(element, false); + node.className = getClasses(type, options.cssClasses.marker); + node.style[options.style] = offset + "%"; + // Values are only appended for points marked '1' or '2'. + if (type > PipsType.NoValue) { + node = addNodeTo(element, false); + node.className = getClasses(type, options.cssClasses.value); + node.setAttribute("data-value", String(value)); + node.style[options.style] = offset + "%"; + node.innerHTML = String(formatter.to(value)); + } + } + // Append all points. + Object.keys(spread).forEach(function (offset) { + addSpread(offset, spread[offset][0], spread[offset][1]); + }); + return element; + } + function removePips() { + if (scope_Pips) { + removeElement(scope_Pips); + scope_Pips = null; + } + } + function pips(pips) { + // Fix #669 + removePips(); + var spread = generateSpread(pips); + var filter = pips.filter; + var format = pips.format || { + to: function (value) { + return String(Math.round(value)); + }, + }; + scope_Pips = scope_Target.appendChild(addMarking(spread, filter, format)); + return scope_Pips; + } + // Shorthand for base dimensions. + function baseSize() { + var rect = scope_Base.getBoundingClientRect(); + var alt = ("offset" + ["Width", "Height"][options.ort]); + return options.ort === 0 ? rect.width || scope_Base[alt] : rect.height || scope_Base[alt]; + } + // Handler for attaching events trough a proxy. + function attachEvent(events, element, callback, data) { + // This function can be used to 'filter' events to the slider. + // element is a node, not a nodeList + var method = function (event) { + var e = fixEvent(event, data.pageOffset, data.target || element); + // fixEvent returns false if this event has a different target + // when handling (multi-) touch events; + if (!e) { + return false; + } + // doNotReject is passed by all end events to make sure released touches + // are not rejected, leaving the slider "stuck" to the cursor; + if (isSliderDisabled() && !data.doNotReject) { + return false; + } + // Stop if an active 'tap' transition is taking place. + if (hasClass(scope_Target, options.cssClasses.tap) && !data.doNotReject) { + return false; + } + // Ignore right or middle clicks on start #454 + if (events === actions.start && e.buttons !== undefined && e.buttons > 1) { + return false; + } + // Ignore right or middle clicks on start #454 + if (data.hover && e.buttons) { + return false; + } + // 'supportsPassive' is only true if a browser also supports touch-action: none in CSS. + // iOS safari does not, so it doesn't get to benefit from passive scrolling. iOS does support + // touch-action: manipulation, but that allows panning, which breaks + // sliders after zooming/on non-responsive pages. + // See: https://bugs.webkit.org/show_bug.cgi?id=133112 + if (!supportsPassive) { + e.preventDefault(); + } + e.calcPoint = e.points[options.ort]; + // Call the event handler with the event [ and additional data ]. + callback(e, data); + return; + }; + var methods = []; + // Bind a closure on the target for every event type. + events.split(" ").forEach(function (eventName) { + element.addEventListener(eventName, method, supportsPassive ? { passive: true } : false); + methods.push([eventName, method]); + }); + return methods; + } + // Provide a clean event with standardized offset values. + function fixEvent(e, pageOffset, eventTarget) { + // Filter the event to register the type, which can be + // touch, mouse or pointer. Offset changes need to be + // made on an event specific basis. + var touch = e.type.indexOf("touch") === 0; + var mouse = e.type.indexOf("mouse") === 0; + var pointer = e.type.indexOf("pointer") === 0; + var x = 0; + var y = 0; + // IE10 implemented pointer events with a prefix; + if (e.type.indexOf("MSPointer") === 0) { + pointer = true; + } + // Erroneous events seem to be passed in occasionally on iOS/iPadOS after user finishes interacting with + // the slider. They appear to be of type MouseEvent, yet they don't have usual properties set. Ignore + // events that have no touches or buttons associated with them. (#1057, #1079, #1095) + if (e.type === "mousedown" && !e.buttons && !e.touches) { + return false; + } + // The only thing one handle should be concerned about is the touches that originated on top of it. + if (touch) { + // Returns true if a touch originated on the target. + var isTouchOnTarget = function (checkTouch) { + var target = checkTouch.target; + return (target === eventTarget || + eventTarget.contains(target) || + (e.composed && e.composedPath().shift() === eventTarget)); + }; + // In the case of touchstart events, we need to make sure there is still no more than one + // touch on the target so we look amongst all touches. + if (e.type === "touchstart") { + var targetTouches = Array.prototype.filter.call(e.touches, isTouchOnTarget); + // Do not support more than one touch per handle. + if (targetTouches.length > 1) { + return false; + } + x = targetTouches[0].pageX; + y = targetTouches[0].pageY; + } + else { + // In the other cases, find on changedTouches is enough. + var targetTouch = Array.prototype.find.call(e.changedTouches, isTouchOnTarget); + // Cancel if the target touch has not moved. + if (!targetTouch) { + return false; + } + x = targetTouch.pageX; + y = targetTouch.pageY; + } + } + pageOffset = pageOffset || getPageOffset(scope_Document); + if (mouse || pointer) { + x = e.clientX + pageOffset.x; + y = e.clientY + pageOffset.y; + } + e.pageOffset = pageOffset; + e.points = [x, y]; + e.cursor = mouse || pointer; // Fix #435 + return e; + } + // Translate a coordinate in the document to a percentage on the slider + function calcPointToPercentage(calcPoint) { + var location = calcPoint - offset(scope_Base, options.ort); + var proposal = (location * 100) / baseSize(); + // Clamp proposal between 0% and 100% + // Out-of-bound coordinates may occur when .noUi-base pseudo-elements + // are used (e.g. contained handles feature) + proposal = limit(proposal); + return options.dir ? 100 - proposal : proposal; + } + // Find handle closest to a certain percentage on the slider + function getClosestHandle(clickedPosition) { + var smallestDifference = 100; + var handleNumber = false; + scope_Handles.forEach(function (handle, index) { + // Disabled handles are ignored + if (isHandleDisabled(index)) { + return; + } + var handlePosition = scope_Locations[index]; + var differenceWithThisHandle = Math.abs(handlePosition - clickedPosition); + // Initial state + var clickAtEdge = differenceWithThisHandle === 100 && smallestDifference === 100; + // Difference with this handle is smaller than the previously checked handle + var isCloser = differenceWithThisHandle < smallestDifference; + var isCloserAfter = differenceWithThisHandle <= smallestDifference && clickedPosition > handlePosition; + if (isCloser || isCloserAfter || clickAtEdge) { + handleNumber = index; + smallestDifference = differenceWithThisHandle; + } + }); + return handleNumber; + } + // Fire 'end' when a mouse or pen leaves the document. + function documentLeave(event, data) { + if (event.type === "mouseout" && + event.target.nodeName === "HTML" && + event.relatedTarget === null) { + eventEnd(event, data); + } + } + // Handle movement on document for handle and range drag. + function eventMove(event, data) { + // Fix #498 + // Check value of .buttons in 'start' to work around a bug in IE10 mobile (data.buttonsProperty). + // https://connect.microsoft.com/IE/feedback/details/927005/mobile-ie10-windows-phone-buttons-property-of-pointermove-event-always-zero + // IE9 has .buttons and .which zero on mousemove. + // Firefox breaks the spec MDN defines. + if (navigator.appVersion.indexOf("MSIE 9") === -1 && event.buttons === 0 && data.buttonsProperty !== 0) { + return eventEnd(event, data); + } + // Check if we are moving up or down + var movement = (options.dir ? -1 : 1) * (event.calcPoint - data.startCalcPoint); + // Convert the movement into a percentage of the slider width/height + var proposal = (movement * 100) / data.baseSize; + moveHandles(movement > 0, proposal, data.locations, data.handleNumbers, data.connect); + } + // Unbind move events on document, call callbacks. + function eventEnd(event, data) { + // The handle is no longer active, so remove the class. + if (data.handle) { + removeClass(data.handle, options.cssClasses.active); + scope_ActiveHandlesCount -= 1; + } + // Unbind the move and end events, which are added on 'start'. + data.listeners.forEach(function (c) { + scope_DocumentElement.removeEventListener(c[0], c[1]); + }); + if (scope_ActiveHandlesCount === 0) { + // Remove dragging class. + removeClass(scope_Target, options.cssClasses.drag); + setZindex(); + // Remove cursor styles and text-selection events bound to the body. + if (event.cursor) { + scope_Body.style.cursor = ""; + scope_Body.removeEventListener("selectstart", preventDefault); + } + } + if (options.events.smoothSteps) { + data.handleNumbers.forEach(function (handleNumber) { + setHandle(handleNumber, scope_Locations[handleNumber], true, true, false, false); + }); + data.handleNumbers.forEach(function (handleNumber) { + fireEvent("update", handleNumber); + }); + } + data.handleNumbers.forEach(function (handleNumber) { + fireEvent("change", handleNumber); + fireEvent("set", handleNumber); + fireEvent("end", handleNumber); + }); + } + // Bind move events on document. + function eventStart(event, data) { + // Ignore event if any handle is disabled + if (data.handleNumbers.some(isHandleDisabled)) { + return; + } + var handle; + if (data.handleNumbers.length === 1) { + var handleOrigin = scope_Handles[data.handleNumbers[0]]; + handle = handleOrigin.children[0]; + scope_ActiveHandlesCount += 1; + // Mark the handle as 'active' so it can be styled. + addClass(handle, options.cssClasses.active); + } + // A drag should never propagate up to the 'tap' event. + event.stopPropagation(); + // Record the event listeners. + var listeners = []; + // Attach the move and end events. + var moveEvent = attachEvent(actions.move, scope_DocumentElement, eventMove, { + // The event target has changed so we need to propagate the original one so that we keep + // relying on it to extract target touches. + target: event.target, + handle: handle, + connect: data.connect, + listeners: listeners, + startCalcPoint: event.calcPoint, + baseSize: baseSize(), + pageOffset: event.pageOffset, + handleNumbers: data.handleNumbers, + buttonsProperty: event.buttons, + locations: scope_Locations.slice(), + }); + var endEvent = attachEvent(actions.end, scope_DocumentElement, eventEnd, { + target: event.target, + handle: handle, + listeners: listeners, + doNotReject: true, + handleNumbers: data.handleNumbers, + }); + var outEvent = attachEvent("mouseout", scope_DocumentElement, documentLeave, { + target: event.target, + handle: handle, + listeners: listeners, + doNotReject: true, + handleNumbers: data.handleNumbers, + }); + // We want to make sure we pushed the listeners in the listener list rather than creating + // a new one as it has already been passed to the event handlers. + listeners.push.apply(listeners, moveEvent.concat(endEvent, outEvent)); + // Text selection isn't an issue on touch devices, + // so adding cursor styles can be skipped. + if (event.cursor) { + // Prevent the 'I' cursor and extend the range-drag cursor. + scope_Body.style.cursor = getComputedStyle(event.target).cursor; + // Mark the target with a dragging state. + if (scope_Handles.length > 1) { + addClass(scope_Target, options.cssClasses.drag); + } + // Prevent text selection when dragging the handles. + // In noUiSlider <= 9.2.0, this was handled by calling preventDefault on mouse/touch start/move, + // which is scroll blocking. The selectstart event is supported by FireFox starting from version 52, + // meaning the only holdout is iOS Safari. This doesn't matter: text selection isn't triggered there. + // The 'cursor' flag is false. + // See: http://caniuse.com/#search=selectstart + scope_Body.addEventListener("selectstart", preventDefault, false); + } + data.handleNumbers.forEach(function (handleNumber) { + fireEvent("start", handleNumber); + }); + } + // Move closest handle to tapped location. + function eventTap(event) { + // The tap event shouldn't propagate up + event.stopPropagation(); + var proposal = calcPointToPercentage(event.calcPoint); + var handleNumber = getClosestHandle(proposal); + // Tackle the case that all handles are 'disabled'. + if (handleNumber === false) { + return; + } + // Flag the slider as it is now in a transitional state. + // Transition takes a configurable amount of ms (default 300). Re-enable the slider after that. + if (!options.events.snap) { + addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration); + } + setHandle(handleNumber, proposal, true, true); + setZindex(); + fireEvent("slide", handleNumber, true); + fireEvent("update", handleNumber, true); + if (!options.events.snap) { + fireEvent("change", handleNumber, true); + fireEvent("set", handleNumber, true); + } + else { + eventStart(event, { handleNumbers: [handleNumber] }); + } + } + // Fires a 'hover' event for a hovered mouse/pen position. + function eventHover(event) { + var proposal = calcPointToPercentage(event.calcPoint); + var to = scope_Spectrum.getStep(proposal); + var value = scope_Spectrum.fromStepping(to); + Object.keys(scope_Events).forEach(function (targetEvent) { + if ("hover" === targetEvent.split(".")[0]) { + scope_Events[targetEvent].forEach(function (callback) { + callback.call(scope_Self, value); + }); + } + }); + } + // Handles keydown on focused handles + // Don't move the document when pressing arrow keys on focused handles + function eventKeydown(event, handleNumber) { + if (isSliderDisabled() || isHandleDisabled(handleNumber)) { + return false; + } + var horizontalKeys = ["Left", "Right"]; + var verticalKeys = ["Down", "Up"]; + var largeStepKeys = ["PageDown", "PageUp"]; + var edgeKeys = ["Home", "End"]; + if (options.dir && !options.ort) { + // On an right-to-left slider, the left and right keys act inverted + horizontalKeys.reverse(); + } + else if (options.ort && !options.dir) { + // On a top-to-bottom slider, the up and down keys act inverted + verticalKeys.reverse(); + largeStepKeys.reverse(); + } + // Strip "Arrow" for IE compatibility. https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key + var key = event.key.replace("Arrow", ""); + var isLargeDown = key === largeStepKeys[0]; + var isLargeUp = key === largeStepKeys[1]; + var isDown = key === verticalKeys[0] || key === horizontalKeys[0] || isLargeDown; + var isUp = key === verticalKeys[1] || key === horizontalKeys[1] || isLargeUp; + var isMin = key === edgeKeys[0]; + var isMax = key === edgeKeys[1]; + if (!isDown && !isUp && !isMin && !isMax) { + return true; + } + event.preventDefault(); + var to; + if (isUp || isDown) { + var direction = isDown ? 0 : 1; + var steps = getNextStepsForHandle(handleNumber); + var step = steps[direction]; + // At the edge of a slider, do nothing + if (step === null) { + return false; + } + // No step set, use the default of 10% of the sub-range + if (step === false) { + step = scope_Spectrum.getDefaultStep(scope_Locations[handleNumber], isDown, options.keyboardDefaultStep); + } + if (isLargeUp || isLargeDown) { + step *= options.keyboardPageMultiplier; + } + else { + step *= options.keyboardMultiplier; + } + // Step over zero-length ranges (#948); + step = Math.max(step, 0.0000001); + // Decrement for down steps + step = (isDown ? -1 : 1) * step; + to = scope_Values[handleNumber] + step; + } + else if (isMax) { + // End key + to = options.spectrum.xVal[options.spectrum.xVal.length - 1]; + } + else { + // Home key + to = options.spectrum.xVal[0]; + } + setHandle(handleNumber, scope_Spectrum.toStepping(to), true, true); + fireEvent("slide", handleNumber); + fireEvent("update", handleNumber); + fireEvent("change", handleNumber); + fireEvent("set", handleNumber); + return false; + } + // Attach events to several slider parts. + function bindSliderEvents(behaviour) { + // Attach the standard drag event to the handles. + if (!behaviour.fixed) { + scope_Handles.forEach(function (handle, index) { + // These events are only bound to the visual handle + // element, not the 'real' origin element. + attachEvent(actions.start, handle.children[0], eventStart, { + handleNumbers: [index], + }); + }); + } + // Attach the tap event to the slider base. + if (behaviour.tap) { + attachEvent(actions.start, scope_Base, eventTap, {}); + } + // Fire hover events + if (behaviour.hover) { + attachEvent(actions.move, scope_Base, eventHover, { + hover: true, + }); + } + // Make the range draggable. + if (behaviour.drag) { + scope_Connects.forEach(function (connect, index) { + if (connect === false || index === 0 || index === scope_Connects.length - 1) { + return; + } + var handleBefore = scope_Handles[index - 1]; + var handleAfter = scope_Handles[index]; + var eventHolders = [connect]; + var handlesToDrag = [handleBefore, handleAfter]; + var handleNumbersToDrag = [index - 1, index]; + addClass(connect, options.cssClasses.draggable); + // When the range is fixed, the entire range can + // be dragged by the handles. The handle in the first + // origin will propagate the start event upward, + // but it needs to be bound manually on the other. + if (behaviour.fixed) { + eventHolders.push(handleBefore.children[0]); + eventHolders.push(handleAfter.children[0]); + } + if (behaviour.dragAll) { + handlesToDrag = scope_Handles; + handleNumbersToDrag = scope_HandleNumbers; + } + eventHolders.forEach(function (eventHolder) { + attachEvent(actions.start, eventHolder, eventStart, { + handles: handlesToDrag, + handleNumbers: handleNumbersToDrag, + connect: connect, + }); + }); + }); + } + } + // Attach an event to this slider, possibly including a namespace + function bindEvent(namespacedEvent, callback) { + scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || []; + scope_Events[namespacedEvent].push(callback); + // If the event bound is 'update,' fire it immediately for all handles. + if (namespacedEvent.split(".")[0] === "update") { + scope_Handles.forEach(function (a, index) { + fireEvent("update", index); + }); + } + } + function isInternalNamespace(namespace) { + return namespace === INTERNAL_EVENT_NS.aria || namespace === INTERNAL_EVENT_NS.tooltips; + } + // Undo attachment of event + function removeEvent(namespacedEvent) { + var event = namespacedEvent && namespacedEvent.split(".")[0]; + var namespace = event ? namespacedEvent.substring(event.length) : namespacedEvent; + Object.keys(scope_Events).forEach(function (bind) { + var tEvent = bind.split(".")[0]; + var tNamespace = bind.substring(tEvent.length); + if ((!event || event === tEvent) && (!namespace || namespace === tNamespace)) { + // only delete protected internal event if intentional + if (!isInternalNamespace(tNamespace) || namespace === tNamespace) { + delete scope_Events[bind]; + } + } + }); + } + // External event handling + function fireEvent(eventName, handleNumber, tap) { + Object.keys(scope_Events).forEach(function (targetEvent) { + var eventType = targetEvent.split(".")[0]; + if (eventName === eventType) { + scope_Events[targetEvent].forEach(function (callback) { + callback.call( + // Use the slider public API as the scope ('this') + scope_Self, + // Return values as array, so arg_1[arg_2] is always valid. + scope_Values.map(options.format.to), + // Handle index, 0 or 1 + handleNumber, + // Un-formatted slider values + scope_Values.slice(), + // Event is fired by tap, true or false + tap || false, + // Left offset of the handle, in relation to the slider + scope_Locations.slice(), + // add the slider public API to an accessible parameter when this is unavailable + scope_Self); + }); + } + }); + } + // Split out the handle positioning logic so the Move event can use it, too + function checkHandlePosition(reference, handleNumber, to, lookBackward, lookForward, getValue, smoothSteps) { + var distance; + // For sliders with multiple handles, limit movement to the other handle. + // Apply the margin option by adding it to the handle positions. + if (scope_Handles.length > 1 && !options.events.unconstrained) { + if (lookBackward && handleNumber > 0) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.margin, false); + to = Math.max(to, distance); + } + if (lookForward && handleNumber < scope_Handles.length - 1) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.margin, true); + to = Math.min(to, distance); + } + } + // The limit option has the opposite effect, limiting handles to a + // maximum distance from another. Limit must be > 0, as otherwise + // handles would be unmovable. + if (scope_Handles.length > 1 && options.limit) { + if (lookBackward && handleNumber > 0) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber - 1], options.limit, false); + to = Math.min(to, distance); + } + if (lookForward && handleNumber < scope_Handles.length - 1) { + distance = scope_Spectrum.getAbsoluteDistance(reference[handleNumber + 1], options.limit, true); + to = Math.max(to, distance); + } + } + // The padding option keeps the handles a certain distance from the + // edges of the slider. Padding must be > 0. + if (options.padding) { + if (handleNumber === 0) { + distance = scope_Spectrum.getAbsoluteDistance(0, options.padding[0], false); + to = Math.max(to, distance); + } + if (handleNumber === scope_Handles.length - 1) { + distance = scope_Spectrum.getAbsoluteDistance(100, options.padding[1], true); + to = Math.min(to, distance); + } + } + if (!smoothSteps) { + to = scope_Spectrum.getStep(to); + } + // Limit percentage to the 0 - 100 range + to = limit(to); + // Return false if handle can't move + if (to === reference[handleNumber] && !getValue) { + return false; + } + return to; + } + // Uses slider orientation to create CSS rules. a = base value; + function inRuleOrder(v, a) { + var o = options.ort; + return (o ? a : v) + ", " + (o ? v : a); + } + // Moves handle(s) by a percentage + // (bool, % to move, [% where handle started, ...], [index in scope_Handles, ...]) + function moveHandles(upward, proposal, locations, handleNumbers, connect) { + var proposals = locations.slice(); + // Store first handle now, so we still have it in case handleNumbers is reversed + var firstHandle = handleNumbers[0]; + var smoothSteps = options.events.smoothSteps; + var b = [!upward, upward]; + var f = [upward, !upward]; + // Copy handleNumbers so we don't change the dataset + handleNumbers = handleNumbers.slice(); + // Check to see which handle is 'leading'. + // If that one can't move the second can't either. + if (upward) { + handleNumbers.reverse(); + } + // Step 1: get the maximum percentage that any of the handles can move + if (handleNumbers.length > 1) { + handleNumbers.forEach(function (handleNumber, o) { + var to = checkHandlePosition(proposals, handleNumber, proposals[handleNumber] + proposal, b[o], f[o], false, smoothSteps); + // Stop if one of the handles can't move. + if (to === false) { + proposal = 0; + } + else { + proposal = to - proposals[handleNumber]; + proposals[handleNumber] = to; + } + }); + } + // If using one handle, check backward AND forward + else { + b = f = [true]; + } + var state = false; + // Step 2: Try to set the handles with the found percentage + handleNumbers.forEach(function (handleNumber, o) { + state = + setHandle(handleNumber, locations[handleNumber] + proposal, b[o], f[o], false, smoothSteps) || state; + }); + // Step 3: If a handle moved, fire events + if (state) { + handleNumbers.forEach(function (handleNumber) { + fireEvent("update", handleNumber); + fireEvent("slide", handleNumber); + }); + // If target is a connect, then fire drag event + if (connect != undefined) { + fireEvent("drag", firstHandle); + } + } + } + // Takes a base value and an offset. This offset is used for the connect bar size. + // In the initial design for this feature, the origin element was 1% wide. + // Unfortunately, a rounding bug in Chrome makes it impossible to implement this feature + // in this manner: https://bugs.chromium.org/p/chromium/issues/detail?id=798223 + function transformDirection(a, b) { + return options.dir ? 100 - a - b : a; + } + // Updates scope_Locations and scope_Values, updates visual state + function updateHandlePosition(handleNumber, to) { + // Update locations. + scope_Locations[handleNumber] = to; + // Convert the value to the slider stepping/range. + scope_Values[handleNumber] = scope_Spectrum.fromStepping(to); + var translation = transformDirection(to, 0) - scope_DirOffset; + var translateRule = "translate(" + inRuleOrder(translation + "%", "0") + ")"; + scope_Handles[handleNumber].style[options.transformRule] = translateRule; + updateConnect(handleNumber); + updateConnect(handleNumber + 1); + } + // Handles before the slider middle are stacked later = higher, + // Handles after the middle later is lower + // [[7] [8] .......... | .......... [5] [4] + function setZindex() { + scope_HandleNumbers.forEach(function (handleNumber) { + var dir = scope_Locations[handleNumber] > 50 ? -1 : 1; + var zIndex = 3 + (scope_Handles.length + dir * handleNumber); + scope_Handles[handleNumber].style.zIndex = String(zIndex); + }); + } + // Test suggested values and apply margin, step. + // if exactInput is true, don't run checkHandlePosition, then the handle can be placed in between steps (#436) + function setHandle(handleNumber, to, lookBackward, lookForward, exactInput, smoothSteps) { + if (!exactInput) { + to = checkHandlePosition(scope_Locations, handleNumber, to, lookBackward, lookForward, false, smoothSteps); + } + if (to === false) { + return false; + } + updateHandlePosition(handleNumber, to); + return true; + } + // Updates style attribute for connect nodes + function updateConnect(index) { + // Skip connects set to false + if (!scope_Connects[index]) { + return; + } + var l = 0; + var h = 100; + if (index !== 0) { + l = scope_Locations[index - 1]; + } + if (index !== scope_Connects.length - 1) { + h = scope_Locations[index]; + } + // We use two rules: + // 'translate' to change the left/top offset; + // 'scale' to change the width of the element; + // As the element has a width of 100%, a translation of 100% is equal to 100% of the parent (.noUi-base) + var connectWidth = h - l; + var translateRule = "translate(" + inRuleOrder(transformDirection(l, connectWidth) + "%", "0") + ")"; + var scaleRule = "scale(" + inRuleOrder(connectWidth / 100, "1") + ")"; + scope_Connects[index].style[options.transformRule] = + translateRule + " " + scaleRule; + } + // Parses value passed to .set method. Returns current value if not parse-able. + function resolveToValue(to, handleNumber) { + // Setting with null indicates an 'ignore'. + // Inputting 'false' is invalid. + if (to === null || to === false || to === undefined) { + return scope_Locations[handleNumber]; + } + // If a formatted number was passed, attempt to decode it. + if (typeof to === "number") { + to = String(to); + } + to = options.format.from(to); + if (to !== false) { + to = scope_Spectrum.toStepping(to); + } + // If parsing the number failed, use the current value. + if (to === false || isNaN(to)) { + return scope_Locations[handleNumber]; + } + return to; + } + // Set the slider value. + function valueSet(input, fireSetEvent, exactInput) { + var values = asArray(input); + var isInit = scope_Locations[0] === undefined; + // Event fires by default + fireSetEvent = fireSetEvent === undefined ? true : fireSetEvent; + // Animation is optional. + // Make sure the initial values were set before using animated placement. + if (options.animate && !isInit) { + addClassFor(scope_Target, options.cssClasses.tap, options.animationDuration); + } + // First pass, without lookAhead but with lookBackward. Values are set from left to right. + scope_HandleNumbers.forEach(function (handleNumber) { + setHandle(handleNumber, resolveToValue(values[handleNumber], handleNumber), true, false, exactInput); + }); + var i = scope_HandleNumbers.length === 1 ? 0 : 1; + // Spread handles evenly across the slider if the range has no size (min=max) + if (isInit && scope_Spectrum.hasNoSize()) { + exactInput = true; + scope_Locations[0] = 0; + if (scope_HandleNumbers.length > 1) { + var space_1 = 100 / (scope_HandleNumbers.length - 1); + scope_HandleNumbers.forEach(function (handleNumber) { + scope_Locations[handleNumber] = handleNumber * space_1; + }); + } + } + // Secondary passes. Now that all base values are set, apply constraints. + // Iterate all handles to ensure constraints are applied for the entire slider (Issue #1009) + for (; i < scope_HandleNumbers.length; ++i) { + scope_HandleNumbers.forEach(function (handleNumber) { + setHandle(handleNumber, scope_Locations[handleNumber], true, true, exactInput); + }); + } + setZindex(); + scope_HandleNumbers.forEach(function (handleNumber) { + fireEvent("update", handleNumber); + // Fire the event only for handles that received a new value, as per #579 + if (values[handleNumber] !== null && fireSetEvent) { + fireEvent("set", handleNumber); + } + }); + } + // Reset slider to initial values + function valueReset(fireSetEvent) { + valueSet(options.start, fireSetEvent); + } + // Set value for a single handle + function valueSetHandle(handleNumber, value, fireSetEvent, exactInput) { + // Ensure numeric input + handleNumber = Number(handleNumber); + if (!(handleNumber >= 0 && handleNumber < scope_HandleNumbers.length)) { + throw new Error("noUiSlider: invalid handle number, got: " + handleNumber); + } + // Look both backward and forward, since we don't want this handle to "push" other handles (#960); + // The exactInput argument can be used to ignore slider stepping (#436) + setHandle(handleNumber, resolveToValue(value, handleNumber), true, true, exactInput); + fireEvent("update", handleNumber); + if (fireSetEvent) { + fireEvent("set", handleNumber); + } + } + // Get the slider value. + function valueGet(unencoded) { + if (unencoded === void 0) { unencoded = false; } + if (unencoded) { + // return a copy of the raw values + return scope_Values.length === 1 ? scope_Values[0] : scope_Values.slice(0); + } + var values = scope_Values.map(options.format.to); + // If only one handle is used, return a single value. + if (values.length === 1) { + return values[0]; + } + return values; + } + // Removes classes from the root and empties it. + function destroy() { + // remove protected internal listeners + removeEvent(INTERNAL_EVENT_NS.aria); + removeEvent(INTERNAL_EVENT_NS.tooltips); + Object.keys(options.cssClasses).forEach(function (key) { + removeClass(scope_Target, options.cssClasses[key]); + }); + while (scope_Target.firstChild) { + scope_Target.removeChild(scope_Target.firstChild); + } + delete scope_Target.noUiSlider; + } + function getNextStepsForHandle(handleNumber) { + var location = scope_Locations[handleNumber]; + var nearbySteps = scope_Spectrum.getNearbySteps(location); + var value = scope_Values[handleNumber]; + var increment = nearbySteps.thisStep.step; + var decrement = null; + // If snapped, directly use defined step value + if (options.snap) { + return [ + value - nearbySteps.stepBefore.startValue || null, + nearbySteps.stepAfter.startValue - value || null, + ]; + } + // If the next value in this step moves into the next step, + // the increment is the start of the next step - the current value + if (increment !== false) { + if (value + increment > nearbySteps.stepAfter.startValue) { + increment = nearbySteps.stepAfter.startValue - value; + } + } + // If the value is beyond the starting point + if (value > nearbySteps.thisStep.startValue) { + decrement = nearbySteps.thisStep.step; + } + else if (nearbySteps.stepBefore.step === false) { + decrement = false; + } + // If a handle is at the start of a step, it always steps back into the previous step first + else { + decrement = value - nearbySteps.stepBefore.highestStep; + } + // Now, if at the slider edges, there is no in/decrement + if (location === 100) { + increment = null; + } + else if (location === 0) { + decrement = null; + } + // As per #391, the comparison for the decrement step can have some rounding issues. + var stepDecimals = scope_Spectrum.countStepDecimals(); + // Round per #391 + if (increment !== null && increment !== false) { + increment = Number(increment.toFixed(stepDecimals)); + } + if (decrement !== null && decrement !== false) { + decrement = Number(decrement.toFixed(stepDecimals)); + } + return [decrement, increment]; + } + // Get the current step size for the slider. + function getNextSteps() { + return scope_HandleNumbers.map(getNextStepsForHandle); + } + // Updatable: margin, limit, padding, step, range, animate, snap + function updateOptions(optionsToUpdate, fireSetEvent) { + // Spectrum is created using the range, snap, direction and step options. + // 'snap' and 'step' can be updated. + // If 'snap' and 'step' are not passed, they should remain unchanged. + var v = valueGet(); + var updateAble = [ + "margin", + "limit", + "padding", + "range", + "animate", + "snap", + "step", + "format", + "pips", + "tooltips", + ]; + // Only change options that we're actually passed to update. + updateAble.forEach(function (name) { + // Check for undefined. null removes the value. + if (optionsToUpdate[name] !== undefined) { + originalOptions[name] = optionsToUpdate[name]; + } + }); + var newOptions = testOptions(originalOptions); + // Load new options into the slider state + updateAble.forEach(function (name) { + if (optionsToUpdate[name] !== undefined) { + options[name] = newOptions[name]; + } + }); + scope_Spectrum = newOptions.spectrum; + // Limit, margin and padding depend on the spectrum but are stored outside of it. (#677) + options.margin = newOptions.margin; + options.limit = newOptions.limit; + options.padding = newOptions.padding; + // Update pips, removes existing. + if (options.pips) { + pips(options.pips); + } + else { + removePips(); + } + // Update tooltips, removes existing. + if (options.tooltips) { + tooltips(); + } + else { + removeTooltips(); + } + // Invalidate the current positioning so valueSet forces an update. + scope_Locations = []; + valueSet(isSet(optionsToUpdate.start) ? optionsToUpdate.start : v, fireSetEvent); + } + // Initialization steps + function setupSlider() { + // Create the base element, initialize HTML and set classes. + // Add handles and connect elements. + scope_Base = addSlider(scope_Target); + addElements(options.connect, scope_Base); + // Attach user events. + bindSliderEvents(options.events); + // Use the public value method to set the start values. + valueSet(options.start); + if (options.pips) { + pips(options.pips); + } + if (options.tooltips) { + tooltips(); + } + aria(); + } + setupSlider(); + var scope_Self = { + destroy: destroy, + steps: getNextSteps, + on: bindEvent, + off: removeEvent, + get: valueGet, + set: valueSet, + setHandle: valueSetHandle, + reset: valueReset, + disable: disable, + enable: enable, + // Exposed for unit testing, don't use this in your application. + __moveHandles: function (upward, proposal, handleNumbers) { + moveHandles(upward, proposal, scope_Locations, handleNumbers); + }, + options: originalOptions, + updateOptions: updateOptions, + target: scope_Target, + removePips: removePips, + removeTooltips: removeTooltips, + getPositions: function () { + return scope_Locations.slice(); + }, + getTooltips: function () { + return scope_Tooltips; + }, + getOrigins: function () { + return scope_Handles; + }, + pips: pips, // Issue #594 + }; + return scope_Self; +} +// Run the standard initializer +function initialize(target, originalOptions) { + if (!target || !target.nodeName) { + throw new Error("noUiSlider: create requires a single element, got: " + target); + } + // Throw an error if the slider was already initialized. + if (target.noUiSlider) { + throw new Error("noUiSlider: Slider was already initialized."); + } + // Test the options and create the slider environment; + var options = testOptions(originalOptions); + var api = scope(target, options, originalOptions); + target.noUiSlider = api; + return api; +} +export { initialize as create }; +export { cssClasses }; +export default { + // Exposed for unit testing, don't use this in your application. + __spectrum: Spectrum, + // A reference to the default classes, allows global changes. + // Use the cssClasses option for changes to one slider. + cssClasses: cssClasses, + create: initialize, +}; diff --git a/gin_ops/static/dist/libs/plyr/dist/plyr.css b/gin_ops/static/dist/libs/plyr/dist/plyr.css new file mode 100644 index 0000000..c8abe65 --- /dev/null +++ b/gin_ops/static/dist/libs/plyr/dist/plyr.css @@ -0,0 +1 @@ +@charset "UTF-8";@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-family:var(--plyr-font-family,inherit);font-variant-numeric:tabular-nums;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui :after,.plyr--full-ui :before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:18px;font-size:var(--plyr-font-size-large,18px)}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:#000c;background:var(--plyr-captions-background,#000c);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:#0000;border:0;border-radius:4px;border-radius:var(--plyr-control-radius,4px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .3s ease}.plyr__control svg{fill:currentColor;display:block;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control:focus-visible{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}a.plyr__control{text-decoration:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed,a.plyr__control:after,a.plyr__control:before{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px;margin-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;padding:0 calc(var(--plyr-control-spacing, 10px)/2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip],.plyr__controls:empty{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:#ffffffe6;background:var(--plyr-menu-background,#ffffffe6);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-menu-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container:after{border:4px solid #0000;border-top-color:#ffffffe6;border:var(--plyr-menu-arrow-size,4px) solid #0000;border-top-color:var(--plyr-menu-background,#ffffffe6);content:"";height:0;position:absolute;right:14px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7 - var(--plyr-menu-arrow-size, 4px)/2);top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:flex;font-size:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;padding:calc(var(--plyr-control-spacing, 10px)*.7/1.5) calc(var(--plyr-control-spacing, 10px)*.7*1.5);-webkit-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control:after{border:4px solid #0000;border:var(--plyr-menu-item-arrow-size,4px) solid #0000;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;padding-right:calc(var(--plyr-control-spacing, 10px)*.7*4)}.plyr__menu__container .plyr__control--forward:after{border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:6.5px;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward:focus-visible:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:initial}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:3.5px;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:28px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 14px);width:calc(100% - var(--plyr-control-spacing, 10px)*.7*2)}.plyr__menu__container .plyr__control--back:after{border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:6.5px;left:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--back:before{background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:1px;left:0;margin-top:3.5px;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back:focus-visible:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:initial}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container .plyr__control[role=menuitemradio]:after,.plyr__menu__container .plyr__control[role=menuitemradio]:before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]:before{background:#0000001a;content:"";display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before{background:#00b2ff;background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio]:focus-visible:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:#23282f1a}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 - -2px);overflow:hidden;padding-left:24.5px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;appearance:none;background:#0000;border:0;border-radius:26px;border-radius:calc(var(--plyr-range-thumb-height, 13px)*2);color:#00b2ff;color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));display:block;height:19px;height:calc(var(--plyr-range-thumb-active-shadow-width, 3px)*2 + var(--plyr-range-thumb-height, 13px));margin:0;min-width:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:#0000;background-image:linear-gradient(90deg,currentColor 0,#0000 0);background-image:linear-gradient(to right,currentColor var(--value,0),#0000 var(--value,0));border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;margin-top:calc((var(--plyr-range-thumb-height, 13px) - var(--plyr-range-track-height, 5px))/2*-1);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:#0000}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:#0000;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]:focus-visible::-webkit-slider-runnable-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-moz-range-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-ms-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr__poster{background-color:#000;background-color:var(--plyr-video-background,var(--plyr-video-background,#000));background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr--youtube.plyr--paused.plyr__poster-enabled:not(.plyr--stopped) .plyr__poster{display:none}.plyr__time{font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"⁄";margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:#fff;background:var(--plyr-tooltip-background,#fff);border-radius:5px;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;font-size:var(--plyr-font-size-small,13px);font-weight:400;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:5px 7.5px;padding:calc(var(--plyr-control-spacing, 10px)/2) calc(var(--plyr-control-spacing, 10px)/2*1.5);pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;white-space:nowrap;z-index:2}.plyr__tooltip:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control:focus-visible .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translateY(10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip:before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip:before{left:16px;left:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7)}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translateY(10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-6.5px;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 13px);width:calc(100% + var(--plyr-range-thumb-height, 13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{left:0;max-width:120px;overflow-wrap:break-word}.plyr__progress__buffer{-webkit-appearance:none;background:#0000;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc((var(--plyr-range-track-height, 5px)/2)*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:#0000}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,#23282f99 25%,#0000 0,#0000 50%,#23282f99 0,#23282f99 75%,#0000 0,#0000);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,#23282f99) 25%,#0000 25%,#0000 50%,var(--plyr-progress-loading-background,#23282f99) 50%,var(--plyr-progress-loading-background,#23282f99) 75%,#0000 75%,#0000);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:#0000}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:#ffffff40;background-color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:#c1c8d199;background-color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:1px;height:5px;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;position:relative}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:5px;margin-right:calc(var(--plyr-control-spacing, 10px)/2);max-width:90px;min-width:60px;position:relative;z-index:2}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control:focus-visible,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--audio .plyr__progress__buffer{color:#c1c8d199;color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr--video{overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));border-radius:inherit;height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{aspect-ratio:16/9}@supports not (aspect-ratio:16/9){.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%;position:relative}}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:20px;padding-top:calc(var(--plyr-control-spacing, 10px)*2);position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;padding-top:calc(var(--plyr-control-spacing, 10px)*3.5)}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control:focus-visible,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));border:0;border-radius:100%;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:15px;padding:calc(var(--plyr-control-spacing, 10px)*1.5);position:absolute;top:50%;transform:translate(-50%,-50%);transition:.3s;z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--video .plyr__progress__buffer{color:#ffffff40;color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen video{height:100%}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;bottom:0;height:100%;left:0;margin:0;position:fixed;right:0;top:0;width:100%;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:#fff;background-color:var(--plyr-tooltip-background,#fff);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translateY(10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0) scale(1)}.plyr__preview-thumb:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:7px;border-radius:calc(var(--plyr-menu-radius, 8px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img,.plyr__preview-thumb__image-container:after{height:100%;left:0;position:absolute;top:0;width:100%}.plyr__preview-thumb__image-container:after{border-radius:inherit;box-shadow:inset 0 0 0 1px #00000026;content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:7px;border-bottom-left-radius:calc(var(--plyr-menu-radius, 8px) - 1px);border-bottom-right-radius:7px;border-bottom-right-radius:calc(var(--plyr-menu-radius, 8px) - 1px);bottom:0;left:0;line-height:1.1;padding:20px 6px 6px;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important} \ No newline at end of file diff --git a/gin_ops/static/dist/libs/plyr/dist/plyr.js b/gin_ops/static/dist/libs/plyr/dist/plyr.js new file mode 100644 index 0000000..0a79517 --- /dev/null +++ b/gin_ops/static/dist/libs/plyr/dist/plyr.js @@ -0,0 +1,8758 @@ +typeof navigator === "object" && (function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('Plyr', factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Plyr = factory()); +})(this, (function () { 'use strict'; + + function _defineProperty$1(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + + function _classCallCheck(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r); + } + } + function _createClass(e, t, n) { + return t && _defineProperties(e.prototype, t), n && _defineProperties(e, n), e; + } + function _defineProperty(e, t, n) { + return t in e ? Object.defineProperty(e, t, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) : e[t] = n, e; + } + function ownKeys(e, t) { + var n = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var r = Object.getOwnPropertySymbols(e); + t && (r = r.filter(function (t) { + return Object.getOwnPropertyDescriptor(e, t).enumerable; + })), n.push.apply(n, r); + } + return n; + } + function _objectSpread2(e) { + for (var t = 1; t < arguments.length; t++) { + var n = null != arguments[t] ? arguments[t] : {}; + t % 2 ? ownKeys(Object(n), !0).forEach(function (t) { + _defineProperty(e, t, n[t]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : ownKeys(Object(n)).forEach(function (t) { + Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t)); + }); + } + return e; + } + var defaults$1 = { + addCSS: !0, + thumbWidth: 15, + watch: !0 + }; + function matches$1(e, t) { + return function () { + return Array.from(document.querySelectorAll(t)).includes(this); + }.call(e, t); + } + function trigger(e, t) { + if (e && t) { + var n = new Event(t, { + bubbles: !0 + }); + e.dispatchEvent(n); + } + } + var getConstructor$1 = function (e) { + return null != e ? e.constructor : null; + }, + instanceOf$1 = function (e, t) { + return !!(e && t && e instanceof t); + }, + isNullOrUndefined$1 = function (e) { + return null == e; + }, + isObject$1 = function (e) { + return getConstructor$1(e) === Object; + }, + isNumber$1 = function (e) { + return getConstructor$1(e) === Number && !Number.isNaN(e); + }, + isString$1 = function (e) { + return getConstructor$1(e) === String; + }, + isBoolean$1 = function (e) { + return getConstructor$1(e) === Boolean; + }, + isFunction$1 = function (e) { + return getConstructor$1(e) === Function; + }, + isArray$1 = function (e) { + return Array.isArray(e); + }, + isNodeList$1 = function (e) { + return instanceOf$1(e, NodeList); + }, + isElement$1 = function (e) { + return instanceOf$1(e, Element); + }, + isEvent$1 = function (e) { + return instanceOf$1(e, Event); + }, + isEmpty$1 = function (e) { + return isNullOrUndefined$1(e) || (isString$1(e) || isArray$1(e) || isNodeList$1(e)) && !e.length || isObject$1(e) && !Object.keys(e).length; + }, + is$1 = { + nullOrUndefined: isNullOrUndefined$1, + object: isObject$1, + number: isNumber$1, + string: isString$1, + boolean: isBoolean$1, + function: isFunction$1, + array: isArray$1, + nodeList: isNodeList$1, + element: isElement$1, + event: isEvent$1, + empty: isEmpty$1 + }; + function getDecimalPlaces(e) { + var t = "".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + return t ? Math.max(0, (t[1] ? t[1].length : 0) - (t[2] ? +t[2] : 0)) : 0; + } + function round(e, t) { + if (1 > t) { + var n = getDecimalPlaces(t); + return parseFloat(e.toFixed(n)); + } + return Math.round(e / t) * t; + } + var RangeTouch = function () { + function e(t, n) { + _classCallCheck(this, e), is$1.element(t) ? this.element = t : is$1.string(t) && (this.element = document.querySelector(t)), is$1.element(this.element) && is$1.empty(this.element.rangeTouch) && (this.config = _objectSpread2({}, defaults$1, {}, n), this.init()); + } + return _createClass(e, [{ + key: "init", + value: function () { + e.enabled && (this.config.addCSS && (this.element.style.userSelect = "none", this.element.style.webKitUserSelect = "none", this.element.style.touchAction = "manipulation"), this.listeners(!0), this.element.rangeTouch = this); + } + }, { + key: "destroy", + value: function () { + e.enabled && (this.config.addCSS && (this.element.style.userSelect = "", this.element.style.webKitUserSelect = "", this.element.style.touchAction = ""), this.listeners(!1), this.element.rangeTouch = null); + } + }, { + key: "listeners", + value: function (e) { + var t = this, + n = e ? "addEventListener" : "removeEventListener"; + ["touchstart", "touchmove", "touchend"].forEach(function (e) { + t.element[n](e, function (e) { + return t.set(e); + }, !1); + }); + } + }, { + key: "get", + value: function (t) { + if (!e.enabled || !is$1.event(t)) return null; + var n, + r = t.target, + i = t.changedTouches[0], + o = parseFloat(r.getAttribute("min")) || 0, + s = parseFloat(r.getAttribute("max")) || 100, + u = parseFloat(r.getAttribute("step")) || 1, + c = r.getBoundingClientRect(), + a = 100 / c.width * (this.config.thumbWidth / 2) / 100; + return 0 > (n = 100 / c.width * (i.clientX - c.left)) ? n = 0 : 100 < n && (n = 100), 50 > n ? n -= (100 - 2 * n) * a : 50 < n && (n += 2 * (n - 50) * a), o + round(n / 100 * (s - o), u); + } + }, { + key: "set", + value: function (t) { + e.enabled && is$1.event(t) && !t.target.disabled && (t.preventDefault(), t.target.value = this.get(t), trigger(t.target, "touchend" === t.type ? "change" : "input")); + } + }], [{ + key: "setup", + value: function (t) { + var n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, + r = null; + if (is$1.empty(t) || is$1.string(t) ? r = Array.from(document.querySelectorAll(is$1.string(t) ? t : 'input[type="range"]')) : is$1.element(t) ? r = [t] : is$1.nodeList(t) ? r = Array.from(t) : is$1.array(t) && (r = t.filter(is$1.element)), is$1.empty(r)) return null; + var i = _objectSpread2({}, defaults$1, {}, n); + if (is$1.string(t) && i.watch) { + var o = new MutationObserver(function (n) { + Array.from(n).forEach(function (n) { + Array.from(n.addedNodes).forEach(function (n) { + is$1.element(n) && matches$1(n, t) && new e(n, i); + }); + }); + }); + o.observe(document.body, { + childList: !0, + subtree: !0 + }); + } + return r.map(function (t) { + return new e(t, n); + }); + } + }, { + key: "enabled", + get: function () { + return "ontouchstart" in document.documentElement; + } + }]), e; + }(); + + // ========================================================================== + // Type checking utils + // ========================================================================== + + const getConstructor = input => input !== null && typeof input !== 'undefined' ? input.constructor : null; + const instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor); + const isNullOrUndefined = input => input === null || typeof input === 'undefined'; + const isObject = input => getConstructor(input) === Object; + const isNumber = input => getConstructor(input) === Number && !Number.isNaN(input); + const isString = input => getConstructor(input) === String; + const isBoolean = input => getConstructor(input) === Boolean; + const isFunction = input => typeof input === 'function'; + const isArray = input => Array.isArray(input); + const isWeakMap = input => instanceOf(input, WeakMap); + const isNodeList = input => instanceOf(input, NodeList); + const isTextNode = input => getConstructor(input) === Text; + const isEvent = input => instanceOf(input, Event); + const isKeyboardEvent = input => instanceOf(input, KeyboardEvent); + const isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue); + const isTrack = input => instanceOf(input, TextTrack) || !isNullOrUndefined(input) && isString(input.kind); + const isPromise = input => instanceOf(input, Promise) && isFunction(input.then); + const isElement = input => input !== null && typeof input === 'object' && input.nodeType === 1 && typeof input.style === 'object' && typeof input.ownerDocument === 'object'; + const isEmpty = input => isNullOrUndefined(input) || (isString(input) || isArray(input) || isNodeList(input)) && !input.length || isObject(input) && !Object.keys(input).length; + const isUrl = input => { + // Accept a URL object + if (instanceOf(input, window.URL)) { + return true; + } + + // Must be string from here + if (!isString(input)) { + return false; + } + + // Add the protocol if required + let string = input; + if (!input.startsWith('http://') || !input.startsWith('https://')) { + string = `http://${input}`; + } + try { + return !isEmpty(new URL(string).hostname); + } catch (_) { + return false; + } + }; + var is = { + nullOrUndefined: isNullOrUndefined, + object: isObject, + number: isNumber, + string: isString, + boolean: isBoolean, + function: isFunction, + array: isArray, + weakMap: isWeakMap, + nodeList: isNodeList, + element: isElement, + textNode: isTextNode, + event: isEvent, + keyboardEvent: isKeyboardEvent, + cue: isCue, + track: isTrack, + promise: isPromise, + url: isUrl, + empty: isEmpty + }; + + // ========================================================================== + const transitionEndEvent = (() => { + const element = document.createElement('span'); + const events = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'oTransitionEnd otransitionend', + transition: 'transitionend' + }; + const type = Object.keys(events).find(event => element.style[event] !== undefined); + return is.string(type) ? events[type] : false; + })(); + + // Force repaint of element + function repaint(element, delay) { + setTimeout(() => { + try { + // eslint-disable-next-line no-param-reassign + element.hidden = true; + + // eslint-disable-next-line no-unused-expressions + element.offsetHeight; + + // eslint-disable-next-line no-param-reassign + element.hidden = false; + } catch (_) { + // Do nothing + } + }, delay); + } + + // ========================================================================== + // Browser sniffing + // Unfortunately, due to mixed support, UA sniffing is required + // ========================================================================== + + const isIE = Boolean(window.document.documentMode); + const isEdge = /Edge/g.test(navigator.userAgent); + const isWebKit = 'WebkitAppearance' in document.documentElement.style && !/Edge/g.test(navigator.userAgent); + const isIPhone = /iPhone|iPod/gi.test(navigator.userAgent) && navigator.maxTouchPoints > 1; + // navigator.platform may be deprecated but this check is still required + const isIPadOS = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1; + const isIos = /iPad|iPhone|iPod/gi.test(navigator.userAgent) && navigator.maxTouchPoints > 1; + var browser = { + isIE, + isEdge, + isWebKit, + isIPhone, + isIPadOS, + isIos + }; + + // ========================================================================== + + // Clone nested objects + function cloneDeep(object) { + return JSON.parse(JSON.stringify(object)); + } + + // Get a nested value in an object + function getDeep(object, path) { + return path.split('.').reduce((obj, key) => obj && obj[key], object); + } + + // Deep extend destination object with N more objects + function extend(target = {}, ...sources) { + if (!sources.length) { + return target; + } + const source = sources.shift(); + if (!is.object(source)) { + return target; + } + Object.keys(source).forEach(key => { + if (is.object(source[key])) { + if (!Object.keys(target).includes(key)) { + Object.assign(target, { + [key]: {} + }); + } + extend(target[key], source[key]); + } else { + Object.assign(target, { + [key]: source[key] + }); + } + }); + return extend(target, ...sources); + } + + // ========================================================================== + + // Wrap an element + function wrap(elements, wrapper) { + // Convert `elements` to an array, if necessary. + const targets = elements.length ? elements : [elements]; + + // Loops backwards to prevent having to clone the wrapper on the + // first element (see `child` below). + Array.from(targets).reverse().forEach((element, index) => { + const child = index > 0 ? wrapper.cloneNode(true) : wrapper; + // Cache the current parent and sibling. + const parent = element.parentNode; + const sibling = element.nextSibling; + + // Wrap the element (is automatically removed from its current + // parent). + child.appendChild(element); + + // If the element had a sibling, insert the wrapper before + // the sibling to maintain the HTML structure; otherwise, just + // append it to the parent. + if (sibling) { + parent.insertBefore(child, sibling); + } else { + parent.appendChild(child); + } + }); + } + + // Set attributes + function setAttributes(element, attributes) { + if (!is.element(element) || is.empty(attributes)) return; + + // Assume null and undefined attributes should be left out, + // Setting them would otherwise convert them to "null" and "undefined" + Object.entries(attributes).filter(([, value]) => !is.nullOrUndefined(value)).forEach(([key, value]) => element.setAttribute(key, value)); + } + + // Create a DocumentFragment + function createElement(type, attributes, text) { + // Create a new + const element = document.createElement(type); + + // Set all passed attributes + if (is.object(attributes)) { + setAttributes(element, attributes); + } + + // Add text node + if (is.string(text)) { + element.innerText = text; + } + + // Return built element + return element; + } + + // Insert an element after another + function insertAfter(element, target) { + if (!is.element(element) || !is.element(target)) return; + target.parentNode.insertBefore(element, target.nextSibling); + } + + // Insert a DocumentFragment + function insertElement(type, parent, attributes, text) { + if (!is.element(parent)) return; + parent.appendChild(createElement(type, attributes, text)); + } + + // Remove element(s) + function removeElement(element) { + if (is.nodeList(element) || is.array(element)) { + Array.from(element).forEach(removeElement); + return; + } + if (!is.element(element) || !is.element(element.parentNode)) { + return; + } + element.parentNode.removeChild(element); + } + + // Remove all child elements + function emptyElement(element) { + if (!is.element(element)) return; + let { + length + } = element.childNodes; + while (length > 0) { + element.removeChild(element.lastChild); + length -= 1; + } + } + + // Replace element + function replaceElement(newChild, oldChild) { + if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) return null; + oldChild.parentNode.replaceChild(newChild, oldChild); + return newChild; + } + + // Get an attribute object from a string selector + function getAttributesFromSelector(sel, existingAttributes) { + // For example: + // '.test' to { class: 'test' } + // '#test' to { id: 'test' } + // '[data-test="test"]' to { 'data-test': 'test' } + + if (!is.string(sel) || is.empty(sel)) return {}; + const attributes = {}; + const existing = extend({}, existingAttributes); + sel.split(',').forEach(s => { + // Remove whitespace + const selector = s.trim(); + const className = selector.replace('.', ''); + const stripped = selector.replace(/[[\]]/g, ''); + // Get the parts and value + const parts = stripped.split('='); + const [key] = parts; + const value = parts.length > 1 ? parts[1].replace(/["']/g, '') : ''; + // Get the first character + const start = selector.charAt(0); + switch (start) { + case '.': + // Add to existing classname + if (is.string(existing.class)) { + attributes.class = `${existing.class} ${className}`; + } else { + attributes.class = className; + } + break; + case '#': + // ID selector + attributes.id = selector.replace('#', ''); + break; + case '[': + // Attribute selector + attributes[key] = value; + break; + } + }); + return extend(existing, attributes); + } + + // Toggle hidden + function toggleHidden(element, hidden) { + if (!is.element(element)) return; + let hide = hidden; + if (!is.boolean(hide)) { + hide = !element.hidden; + } + + // eslint-disable-next-line no-param-reassign + element.hidden = hide; + } + + // Mirror Element.classList.toggle, with IE compatibility for "force" argument + function toggleClass(element, className, force) { + if (is.nodeList(element)) { + return Array.from(element).map(e => toggleClass(e, className, force)); + } + if (is.element(element)) { + let method = 'toggle'; + if (typeof force !== 'undefined') { + method = force ? 'add' : 'remove'; + } + element.classList[method](className); + return element.classList.contains(className); + } + return false; + } + + // Has class name + function hasClass(element, className) { + return is.element(element) && element.classList.contains(className); + } + + // Element matches selector + function matches(element, selector) { + const { + prototype + } = Element; + function match() { + return Array.from(document.querySelectorAll(selector)).includes(this); + } + const method = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match; + return method.call(element, selector); + } + + // Closest ancestor element matching selector (also tests element itself) + function closest$1(element, selector) { + const { + prototype + } = Element; + + // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill + function closestElement() { + let el = this; + do { + if (matches.matches(el, selector)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + } + const method = prototype.closest || closestElement; + return method.call(element, selector); + } + + // Find all elements + function getElements(selector) { + return this.elements.container.querySelectorAll(selector); + } + + // Find a single element + function getElement(selector) { + return this.elements.container.querySelector(selector); + } + + // Set focus and tab focus class + function setFocus(element = null, focusVisible = false) { + if (!is.element(element)) return; + + // Set regular focus + element.focus({ + preventScroll: true, + focusVisible + }); + } + + // ========================================================================== + + // Default codecs for checking mimetype support + const defaultCodecs = { + 'audio/ogg': 'vorbis', + 'audio/wav': '1', + 'video/webm': 'vp8, vorbis', + 'video/mp4': 'avc1.42E01E, mp4a.40.2', + 'video/ogg': 'theora' + }; + + // Check for feature support + const support = { + // Basic support + audio: 'canPlayType' in document.createElement('audio'), + video: 'canPlayType' in document.createElement('video'), + // Check for support + // Basic functionality vs full UI + check(type, provider) { + const api = support[type] || provider !== 'html5'; + const ui = api && support.rangeInput; + return { + api, + ui + }; + }, + // Picture-in-picture support + // Safari & Chrome only currently + pip: (() => { + // While iPhone's support picture-in-picture for some apps, seemingly Safari isn't one of them + // It will throw the following error when trying to enter picture-in-picture + // `NotSupportedError: The Picture-in-Picture mode is not supported.` + if (browser.isIPhone) { + return false; + } + + // Safari + // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls + if (is.function(createElement('video').webkitSetPresentationMode)) { + return true; + } + + // Chrome + // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture + if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) { + return true; + } + return false; + })(), + // Airplay support + // Safari only currently + airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent), + // Inline playback support + // https://webkit.org/blog/6784/new-video-policies-for-ios/ + playsinline: 'playsInline' in document.createElement('video'), + // Check for mime type support against a player instance + // Credits: http://diveintohtml5.info/everything.html + // Related: http://www.leanbackplayer.com/test/h5mt.html + mime(input) { + if (is.empty(input)) { + return false; + } + const [mediaType] = input.split('/'); + let type = input; + + // Verify we're using HTML5 and there's no media type mismatch + if (!this.isHTML5 || mediaType !== this.type) { + return false; + } + + // Add codec if required + if (Object.keys(defaultCodecs).includes(type)) { + type += `; codecs="${defaultCodecs[input]}"`; + } + try { + return Boolean(type && this.media.canPlayType(type).replace(/no/, '')); + } catch (_) { + return false; + } + }, + // Check for textTracks support + textTracks: 'textTracks' in document.createElement('video'), + // Sliders + rangeInput: (() => { + const range = document.createElement('input'); + range.type = 'range'; + return range.type === 'range'; + })(), + // Touch + // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event + touch: 'ontouchstart' in document.documentElement, + // Detect transitions support + transitions: transitionEndEvent !== false, + // Reduced motion iOS & MacOS setting + // https://webkit.org/blog/7551/responsive-design-for-motion/ + reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches + }; + + // ========================================================================== + + // Check for passive event listener support + // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md + // https://www.youtube.com/watch?v=NPM6172J22g + const supportsPassiveListeners = (() => { + // Test via a getter in the options object to see if the passive property is accessed + let supported = false; + try { + const options = Object.defineProperty({}, 'passive', { + get() { + supported = true; + return null; + } + }); + window.addEventListener('test', null, options); + window.removeEventListener('test', null, options); + } catch (_) { + // Do nothing + } + return supported; + })(); + + // Toggle event listener + function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) { + // Bail if no element, event, or callback + if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) { + return; + } + + // Allow multiple events + const events = event.split(' '); + // Build options + // Default to just the capture boolean for browsers with no passive listener support + let options = capture; + + // If passive events listeners are supported + if (supportsPassiveListeners) { + options = { + // Whether the listener can be passive (i.e. default never prevented) + passive, + // Whether the listener is a capturing listener or not + capture + }; + } + + // If a single node is passed, bind the event listener + events.forEach(type => { + if (this && this.eventListeners && toggle) { + // Cache event listener + this.eventListeners.push({ + element, + type, + callback, + options + }); + } + element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options); + }); + } + + // Bind event handler + function on(element, events = '', callback, passive = true, capture = false) { + toggleListener.call(this, element, events, callback, true, passive, capture); + } + + // Unbind event handler + function off(element, events = '', callback, passive = true, capture = false) { + toggleListener.call(this, element, events, callback, false, passive, capture); + } + + // Bind once-only event handler + function once(element, events = '', callback, passive = true, capture = false) { + const onceCallback = (...args) => { + off(element, events, onceCallback, passive, capture); + callback.apply(this, args); + }; + toggleListener.call(this, element, events, onceCallback, true, passive, capture); + } + + // Trigger event + function triggerEvent(element, type = '', bubbles = false, detail = {}) { + // Bail if no element + if (!is.element(element) || is.empty(type)) { + return; + } + + // Create and dispatch the event + const event = new CustomEvent(type, { + bubbles, + detail: { + ...detail, + plyr: this + } + }); + + // Dispatch the event + element.dispatchEvent(event); + } + + // Unbind all cached event listeners + function unbindListeners() { + if (this && this.eventListeners) { + this.eventListeners.forEach(item => { + const { + element, + type, + callback, + options + } = item; + element.removeEventListener(type, callback, options); + }); + this.eventListeners = []; + } + } + + // Run method when / if player is ready + function ready() { + return new Promise(resolve => this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve)).then(() => {}); + } + + /** + * Silence a Promise-like object. + * This is useful for avoiding non-harmful, but potentially confusing "uncaught + * play promise" rejection error messages. + * @param {Object} value An object that may or may not be `Promise`-like. + */ + function silencePromise(value) { + if (is.promise(value)) { + value.then(null, () => {}); + } + } + + // ========================================================================== + + // Remove duplicates in an array + function dedupe(array) { + if (!is.array(array)) { + return array; + } + return array.filter((item, index) => array.indexOf(item) === index); + } + + // Get the closest value in an array + function closest(array, value) { + if (!is.array(array) || !array.length) { + return null; + } + return array.reduce((prev, curr) => Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev); + } + + // ========================================================================== + + // Check support for a CSS declaration + function supportsCSS(declaration) { + if (!window || !window.CSS) { + return false; + } + return window.CSS.supports(declaration); + } + + // Standard/common aspect ratios + const standardRatios = [[1, 1], [4, 3], [3, 4], [5, 4], [4, 5], [3, 2], [2, 3], [16, 10], [10, 16], [16, 9], [9, 16], [21, 9], [9, 21], [32, 9], [9, 32]].reduce((out, [x, y]) => ({ + ...out, + [x / y]: [x, y] + }), {}); + + // Validate an aspect ratio + function validateAspectRatio(input) { + if (!is.array(input) && (!is.string(input) || !input.includes(':'))) { + return false; + } + const ratio = is.array(input) ? input : input.split(':'); + return ratio.map(Number).every(is.number); + } + + // Reduce an aspect ratio to it's lowest form + function reduceAspectRatio(ratio) { + if (!is.array(ratio) || !ratio.every(is.number)) { + return null; + } + const [width, height] = ratio; + const getDivider = (w, h) => h === 0 ? w : getDivider(h, w % h); + const divider = getDivider(width, height); + return [width / divider, height / divider]; + } + + // Calculate an aspect ratio + function getAspectRatio(input) { + const parse = ratio => validateAspectRatio(ratio) ? ratio.split(':').map(Number) : null; + // Try provided ratio + let ratio = parse(input); + + // Get from config + if (ratio === null) { + ratio = parse(this.config.ratio); + } + + // Get from embed + if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) { + ({ + ratio + } = this.embed); + } + + // Get from HTML5 video + if (ratio === null && this.isHTML5) { + const { + videoWidth, + videoHeight + } = this.media; + ratio = [videoWidth, videoHeight]; + } + return reduceAspectRatio(ratio); + } + + // Set aspect ratio for responsive container + function setAspectRatio(input) { + if (!this.isVideo) { + return {}; + } + const { + wrapper + } = this.elements; + const ratio = getAspectRatio.call(this, input); + if (!is.array(ratio)) { + return {}; + } + const [x, y] = reduceAspectRatio(ratio); + const useNative = supportsCSS(`aspect-ratio: ${x}/${y}`); + const padding = 100 / x * y; + if (useNative) { + wrapper.style.aspectRatio = `${x}/${y}`; + } else { + wrapper.style.paddingBottom = `${padding}%`; + } + + // For Vimeo we have an extra
    to hide the standard controls and UI + if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) { + const height = 100 / this.media.offsetWidth * parseInt(window.getComputedStyle(this.media).paddingBottom, 10); + const offset = (height - padding) / (height / 50); + if (this.fullscreen.active) { + wrapper.style.paddingBottom = null; + } else { + this.media.style.transform = `translateY(-${offset}%)`; + } + } else if (this.isHTML5) { + wrapper.classList.add(this.config.classNames.videoFixedRatio); + } + return { + padding, + ratio + }; + } + + // Round an aspect ratio to closest standard ratio + function roundAspectRatio(x, y, tolerance = 0.05) { + const ratio = x / y; + const closestRatio = closest(Object.keys(standardRatios), ratio); + + // Check match is within tolerance + if (Math.abs(closestRatio - ratio) <= tolerance) { + return standardRatios[closestRatio]; + } + + // No match + return [x, y]; + } + + // Get the size of the viewport + // https://stackoverflow.com/questions/1248081/how-to-get-the-browser-viewport-dimensions + function getViewportSize() { + const width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); + const height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0); + return [width, height]; + } + + // ========================================================================== + const html5 = { + getSources() { + if (!this.isHTML5) { + return []; + } + const sources = Array.from(this.media.querySelectorAll('source')); + + // Filter out unsupported sources (if type is specified) + return sources.filter(source => { + const type = source.getAttribute('type'); + if (is.empty(type)) { + return true; + } + return support.mime.call(this, type); + }); + }, + // Get quality levels + getQualityOptions() { + // Whether we're forcing all options (e.g. for streaming) + if (this.config.quality.forced) { + return this.config.quality.options; + } + + // Get sizes from elements + return html5.getSources.call(this).map(source => Number(source.getAttribute('size'))).filter(Boolean); + }, + setup() { + if (!this.isHTML5) { + return; + } + const player = this; + + // Set speed options from config + player.options.speed = player.config.speed.options; + + // Set aspect ratio if fixed + if (!is.empty(this.config.ratio)) { + setAspectRatio.call(player); + } + + // Quality + Object.defineProperty(player.media, 'quality', { + get() { + // Get sources + const sources = html5.getSources.call(player); + const source = sources.find(s => s.getAttribute('src') === player.source); + + // Return size, if match is found + return source && Number(source.getAttribute('size')); + }, + set(input) { + if (player.quality === input) { + return; + } + + // If we're using an external handler... + if (player.config.quality.forced && is.function(player.config.quality.onChange)) { + player.config.quality.onChange(input); + } else { + // Get sources + const sources = html5.getSources.call(player); + // Get first match for requested size + const source = sources.find(s => Number(s.getAttribute('size')) === input); + + // No matching source found + if (!source) { + return; + } + + // Get current state + const { + currentTime, + paused, + preload, + readyState, + playbackRate + } = player.media; + + // Set new source + player.media.src = source.getAttribute('src'); + + // Prevent loading if preload="none" and the current source isn't loaded (#1044) + if (preload !== 'none' || readyState) { + // Restore time + player.once('loadedmetadata', () => { + player.speed = playbackRate; + player.currentTime = currentTime; + + // Resume playing + if (!paused) { + silencePromise(player.play()); + } + }); + + // Load new source + player.media.load(); + } + } + + // Trigger change event + triggerEvent.call(player, player.media, 'qualitychange', false, { + quality: input + }); + } + }); + }, + // Cancel current network requests + // See https://github.com/sampotts/plyr/issues/174 + cancelRequests() { + if (!this.isHTML5) { + return; + } + + // Remove child sources + removeElement(html5.getSources.call(this)); + + // Set blank video src attribute + // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error + // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection + this.media.setAttribute('src', this.config.blankVideo); + + // Load the new empty source + // This will cancel existing requests + // See https://github.com/sampotts/plyr/issues/174 + this.media.load(); + + // Debugging + this.debug.log('Cancelled network requests'); + } + }; + + // ========================================================================== + + // Generate a random ID + function generateId(prefix) { + return `${prefix}-${Math.floor(Math.random() * 10000)}`; + } + + // Format string + function format(input, ...args) { + if (is.empty(input)) return input; + return input.toString().replace(/{(\d+)}/g, (_, i) => args[i].toString()); + } + + // Get percentage + function getPercentage(current, max) { + if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) { + return 0; + } + return (current / max * 100).toFixed(2); + } + + // Replace all occurrences of a string in a string + const replaceAll = (input = '', find = '', replace = '') => input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'), 'g'), replace.toString()); + + // Convert to title case + const toTitleCase = (input = '') => input.toString().replace(/\w\S*/g, text => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase()); + + // Convert string to pascalCase + function toPascalCase(input = '') { + let string = input.toString(); + + // Convert kebab case + string = replaceAll(string, '-', ' '); + + // Convert snake case + string = replaceAll(string, '_', ' '); + + // Convert to title case + string = toTitleCase(string); + + // Convert to pascal case + return replaceAll(string, ' ', ''); + } + + // Convert string to pascalCase + function toCamelCase(input = '') { + let string = input.toString(); + + // Convert to pascal case + string = toPascalCase(string); + + // Convert first character to lowercase + return string.charAt(0).toLowerCase() + string.slice(1); + } + + // Remove HTML from a string + function stripHTML(source) { + const fragment = document.createDocumentFragment(); + const element = document.createElement('div'); + fragment.appendChild(element); + element.innerHTML = source; + return fragment.firstChild.innerText; + } + + // Like outerHTML, but also works for DocumentFragment + function getHTML(element) { + const wrapper = document.createElement('div'); + wrapper.appendChild(element); + return wrapper.innerHTML; + } + + // ========================================================================== + + // Skip i18n for abbreviations and brand names + const resources = { + pip: 'PIP', + airplay: 'AirPlay', + html5: 'HTML5', + vimeo: 'Vimeo', + youtube: 'YouTube' + }; + const i18n = { + get(key = '', config = {}) { + if (is.empty(key) || is.empty(config)) { + return ''; + } + let string = getDeep(config.i18n, key); + if (is.empty(string)) { + if (Object.keys(resources).includes(key)) { + return resources[key]; + } + return ''; + } + const replace = { + '{seektime}': config.seekTime, + '{title}': config.title + }; + Object.entries(replace).forEach(([k, v]) => { + string = replaceAll(string, k, v); + }); + return string; + } + }; + + class Storage { + constructor(player) { + _defineProperty$1(this, "get", key => { + if (!Storage.supported || !this.enabled) { + return null; + } + const store = window.localStorage.getItem(this.key); + if (is.empty(store)) { + return null; + } + const json = JSON.parse(store); + return is.string(key) && key.length ? json[key] : json; + }); + _defineProperty$1(this, "set", object => { + // Bail if we don't have localStorage support or it's disabled + if (!Storage.supported || !this.enabled) { + return; + } + + // Can only store objectst + if (!is.object(object)) { + return; + } + + // Get current storage + let storage = this.get(); + + // Default to empty object + if (is.empty(storage)) { + storage = {}; + } + + // Update the working copy of the values + extend(storage, object); + + // Update storage + try { + window.localStorage.setItem(this.key, JSON.stringify(storage)); + } catch (_) { + // Do nothing + } + }); + this.enabled = player.config.storage.enabled; + this.key = player.config.storage.key; + } + + // Check for actual support (see if we can use it) + static get supported() { + try { + if (!('localStorage' in window)) { + return false; + } + const test = '___test'; + + // Try to use it (it might be disabled, e.g. user is in private mode) + // see: https://github.com/sampotts/plyr/issues/131 + window.localStorage.setItem(test, test); + window.localStorage.removeItem(test); + return true; + } catch (_) { + return false; + } + } + } + + // ========================================================================== + // Fetch wrapper + // Using XHR to avoid issues with older browsers + // ========================================================================== + + function fetch(url, responseType = 'text') { + return new Promise((resolve, reject) => { + try { + const request = new XMLHttpRequest(); + + // Check for CORS support + if (!('withCredentials' in request)) { + return; + } + request.addEventListener('load', () => { + if (responseType === 'text') { + try { + resolve(JSON.parse(request.responseText)); + } catch (_) { + resolve(request.responseText); + } + } else { + resolve(request.response); + } + }); + request.addEventListener('error', () => { + throw new Error(request.status); + }); + request.open('GET', url, true); + + // Set the required response type + request.responseType = responseType; + request.send(); + } catch (error) { + reject(error); + } + }); + } + + // ========================================================================== + + // Load an external SVG sprite + function loadSprite(url, id) { + if (!is.string(url)) { + return; + } + const prefix = 'cache'; + const hasId = is.string(id); + let isCached = false; + const exists = () => document.getElementById(id) !== null; + const update = (container, data) => { + // eslint-disable-next-line no-param-reassign + container.innerHTML = data; + + // Check again incase of race condition + if (hasId && exists()) { + return; + } + + // Inject the SVG to the body + document.body.insertAdjacentElement('afterbegin', container); + }; + + // Only load once if ID set + if (!hasId || !exists()) { + const useStorage = Storage.supported; + // Create container + const container = document.createElement('div'); + container.setAttribute('hidden', ''); + if (hasId) { + container.setAttribute('id', id); + } + + // Check in cache + if (useStorage) { + const cached = window.localStorage.getItem(`${prefix}-${id}`); + isCached = cached !== null; + if (isCached) { + const data = JSON.parse(cached); + update(container, data.content); + } + } + + // Get the sprite + fetch(url).then(result => { + if (is.empty(result)) { + return; + } + if (useStorage) { + try { + window.localStorage.setItem(`${prefix}-${id}`, JSON.stringify({ + content: result + })); + } catch (_) { + // Do nothing + } + } + update(container, result); + }).catch(() => {}); + } + } + + // ========================================================================== + + // Time helpers + const getHours = value => Math.trunc(value / 60 / 60 % 60, 10); + const getMinutes = value => Math.trunc(value / 60 % 60, 10); + const getSeconds = value => Math.trunc(value % 60, 10); + + // Format time to UI friendly string + function formatTime(time = 0, displayHours = false, inverted = false) { + // Bail if the value isn't a number + if (!is.number(time)) { + return formatTime(undefined, displayHours, inverted); + } + + // Format time component to add leading zero + const format = value => `0${value}`.slice(-2); + // Breakdown to hours, mins, secs + let hours = getHours(time); + const mins = getMinutes(time); + const secs = getSeconds(time); + + // Do we need to display hours? + if (displayHours || hours > 0) { + hours = `${hours}:`; + } else { + hours = ''; + } + + // Render + return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`; + } + + // ========================================================================== + + // TODO: Don't export a massive object - break down and create class + const controls = { + // Get icon URL + getIconUrl() { + const url = new URL(this.config.iconUrl, window.location); + const host = window.location.host ? window.location.host : window.top.location.host; + const cors = url.host !== host || browser.isIE && !window.svg4everybody; + return { + url: this.config.iconUrl, + cors + }; + }, + // Find the UI controls + findElements() { + try { + this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper); + + // Buttons + this.elements.buttons = { + play: getElements.call(this, this.config.selectors.buttons.play), + pause: getElement.call(this, this.config.selectors.buttons.pause), + restart: getElement.call(this, this.config.selectors.buttons.restart), + rewind: getElement.call(this, this.config.selectors.buttons.rewind), + fastForward: getElement.call(this, this.config.selectors.buttons.fastForward), + mute: getElement.call(this, this.config.selectors.buttons.mute), + pip: getElement.call(this, this.config.selectors.buttons.pip), + airplay: getElement.call(this, this.config.selectors.buttons.airplay), + settings: getElement.call(this, this.config.selectors.buttons.settings), + captions: getElement.call(this, this.config.selectors.buttons.captions), + fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen) + }; + + // Progress + this.elements.progress = getElement.call(this, this.config.selectors.progress); + + // Inputs + this.elements.inputs = { + seek: getElement.call(this, this.config.selectors.inputs.seek), + volume: getElement.call(this, this.config.selectors.inputs.volume) + }; + + // Display + this.elements.display = { + buffer: getElement.call(this, this.config.selectors.display.buffer), + currentTime: getElement.call(this, this.config.selectors.display.currentTime), + duration: getElement.call(this, this.config.selectors.display.duration) + }; + + // Seek tooltip + if (is.element(this.elements.progress)) { + this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`); + } + return true; + } catch (error) { + // Log it + this.debug.warn('It looks like there is a problem with your custom controls HTML', error); + + // Restore native video controls + this.toggleNativeControls(true); + return false; + } + }, + // Create icon + createIcon(type, attributes) { + const namespace = 'http://www.w3.org/2000/svg'; + const iconUrl = controls.getIconUrl.call(this); + const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`; + // Create + const icon = document.createElementNS(namespace, 'svg'); + setAttributes(icon, extend(attributes, { + 'aria-hidden': 'true', + focusable: 'false' + })); + + // Create the to reference sprite + const use = document.createElementNS(namespace, 'use'); + const path = `${iconPath}-${type}`; + + // Set `href` attributes + // https://github.com/sampotts/plyr/issues/460 + // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href + if ('href' in use) { + use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path); + } + + // Always set the older attribute even though it's "deprecated" (it'll be around for ages) + use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path); + + // Add to + icon.appendChild(use); + return icon; + }, + // Create hidden text label + createLabel(key, attr = {}) { + const text = i18n.get(key, this.config); + const attributes = { + ...attr, + class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') + }; + return createElement('span', attributes, text); + }, + // Create a badge + createBadge(text) { + if (is.empty(text)) { + return null; + } + const badge = createElement('span', { + class: this.config.classNames.menu.value + }); + badge.appendChild(createElement('span', { + class: this.config.classNames.menu.badge + }, text)); + return badge; + }, + // Create a
    `); + } + + // Set position + tipElement.style.left = `${percent}%`; + + // Show/hide the tooltip + // If the event is a moues in/out and percentage is inside bounds + if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) { + toggle(event.type === 'mouseenter'); + } + }, + // Handle time change event + timeUpdate(event) { + // Only invert if only one time element is displayed and used for both duration and currentTime + const invert = !is.element(this.elements.display.duration) && this.config.invertTime; + + // Duration + controls.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert); + + // Ignore updates while seeking + if (event && event.type === 'timeupdate' && this.media.seeking) { + return; + } + + // Playing progress + controls.updateProgress.call(this, event); + }, + // Show the duration on metadataloaded or durationchange events + durationUpdate() { + // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false + if (!this.supported.ui || !this.config.invertTime && this.currentTime) { + return; + } + + // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar. + // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415 + // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062 + // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338 + if (this.duration >= 2 ** 32) { + toggleHidden(this.elements.display.currentTime, true); + toggleHidden(this.elements.progress, true); + return; + } + + // Update ARIA values + if (is.element(this.elements.inputs.seek)) { + this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration); + } + + // If there's a spot to display duration + const hasDuration = is.element(this.elements.display.duration); + + // If there's only one time display, display duration there + if (!hasDuration && this.config.displayDuration && this.paused) { + controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration); + } + + // If there's a duration element, update content + if (hasDuration) { + controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration); + } + if (this.config.markers.enabled) { + controls.setMarkers.call(this); + } + + // Update the tooltip (if visible) + controls.updateSeekTooltip.call(this); + }, + // Hide/show a tab + toggleMenuButton(setting, toggle) { + toggleHidden(this.elements.settings.buttons[setting], !toggle); + }, + // Update the selected setting + updateSetting(setting, container, input) { + const pane = this.elements.settings.panels[setting]; + let value = null; + let list = container; + if (setting === 'captions') { + value = this.currentTrack; + } else { + value = !is.empty(input) ? input : this[setting]; + + // Get default + if (is.empty(value)) { + value = this.config[setting].default; + } + + // Unsupported value + if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) { + this.debug.warn(`Unsupported value of '${value}' for ${setting}`); + return; + } + + // Disabled value + if (!this.config[setting].options.includes(value)) { + this.debug.warn(`Disabled value of '${value}' for ${setting}`); + return; + } + } + + // Get the list if we need to + if (!is.element(list)) { + list = pane && pane.querySelector('[role="menu"]'); + } + + // If there's no list it means it's not been rendered... + if (!is.element(list)) { + return; + } + + // Update the label + const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`); + label.innerHTML = controls.getLabel.call(this, setting, value); + + // Find the radio option and check it + const target = list && list.querySelector(`[value="${value}"]`); + if (is.element(target)) { + target.checked = true; + } + }, + // Translate a value into a nice label + getLabel(setting, value) { + switch (setting) { + case 'speed': + return value === 1 ? i18n.get('normal', this.config) : `${value}×`; + case 'quality': + if (is.number(value)) { + const label = i18n.get(`qualityLabel.${value}`, this.config); + if (!label.length) { + return `${value}p`; + } + return label; + } + return toTitleCase(value); + case 'captions': + return captions.getLabel.call(this); + default: + return null; + } + }, + // Set the quality menu + setQualityMenu(options) { + // Menu required + if (!is.element(this.elements.settings.panels.quality)) { + return; + } + const type = 'quality'; + const list = this.elements.settings.panels.quality.querySelector('[role="menu"]'); + + // Set options if passed and filter based on uniqueness and config + if (is.array(options)) { + this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality)); + } + + // Toggle the pane and tab + const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1; + controls.toggleMenuButton.call(this, type, toggle); + + // Empty the menu + emptyElement(list); + + // Check if we need to toggle the parent + controls.checkMenu.call(this); + + // If we're hiding, nothing more to do + if (!toggle) { + return; + } + + // Get the badge HTML for HD, 4K etc + const getBadge = quality => { + const label = i18n.get(`qualityBadge.${quality}`, this.config); + if (!label.length) { + return null; + } + return controls.createBadge.call(this, label); + }; + + // Sort options by the config and then render options + this.options.quality.sort((a, b) => { + const sorting = this.config.quality.options; + return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1; + }).forEach(quality => { + controls.createMenuItem.call(this, { + value: quality, + list, + type, + title: controls.getLabel.call(this, 'quality', quality), + badge: getBadge(quality) + }); + }); + controls.updateSetting.call(this, type, list); + }, + // Set the looping options + /* setLoopMenu() { + // Menu required + if (!is.element(this.elements.settings.panels.loop)) { + return; + } + const options = ['start', 'end', 'all', 'reset']; + const list = this.elements.settings.panels.loop.querySelector('[role="menu"]'); + // Show the pane and tab + toggleHidden(this.elements.settings.buttons.loop, false); + toggleHidden(this.elements.settings.panels.loop, false); + // Toggle the pane and tab + const toggle = !is.empty(this.loop.options); + controls.toggleMenuButton.call(this, 'loop', toggle); + // Empty the menu + emptyElement(list); + options.forEach(option => { + const item = createElement('li'); + const button = createElement( + 'button', + extend(getAttributesFromSelector(this.config.selectors.buttons.loop), { + type: 'button', + class: this.config.classNames.control, + 'data-plyr-loop-action': option, + }), + i18n.get(option, this.config) + ); + if (['start', 'end'].includes(option)) { + const badge = controls.createBadge.call(this, '00:00'); + button.appendChild(badge); + } + item.appendChild(button); + list.appendChild(item); + }); + }, */ + + // Get current selected caption language + // TODO: rework this to user the getter in the API? + + // Set a list of available captions languages + setCaptionsMenu() { + // Menu required + if (!is.element(this.elements.settings.panels.captions)) { + return; + } + + // TODO: Captions or language? Currently it's mixed + const type = 'captions'; + const list = this.elements.settings.panels.captions.querySelector('[role="menu"]'); + const tracks = captions.getTracks.call(this); + const toggle = Boolean(tracks.length); + + // Toggle the pane and tab + controls.toggleMenuButton.call(this, type, toggle); + + // Empty the menu + emptyElement(list); + + // Check if we need to toggle the parent + controls.checkMenu.call(this); + + // If there's no captions, bail + if (!toggle) { + return; + } + + // Generate options data + const options = tracks.map((track, value) => ({ + value, + checked: this.captions.toggled && this.currentTrack === value, + title: captions.getLabel.call(this, track), + badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()), + list, + type: 'language' + })); + + // Add the "Disabled" option to turn off captions + options.unshift({ + value: -1, + checked: !this.captions.toggled, + title: i18n.get('disabled', this.config), + list, + type: 'language' + }); + + // Generate options + options.forEach(controls.createMenuItem.bind(this)); + controls.updateSetting.call(this, type, list); + }, + // Set a list of available captions languages + setSpeedMenu() { + // Menu required + if (!is.element(this.elements.settings.panels.speed)) { + return; + } + const type = 'speed'; + const list = this.elements.settings.panels.speed.querySelector('[role="menu"]'); + + // Filter out invalid speeds + this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed); + + // Toggle the pane and tab + const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1; + controls.toggleMenuButton.call(this, type, toggle); + + // Empty the menu + emptyElement(list); + + // Check if we need to toggle the parent + controls.checkMenu.call(this); + + // If we're hiding, nothing more to do + if (!toggle) { + return; + } + + // Create items + this.options.speed.forEach(speed => { + controls.createMenuItem.call(this, { + value: speed, + list, + type, + title: controls.getLabel.call(this, 'speed', speed) + }); + }); + controls.updateSetting.call(this, type, list); + }, + // Check if we need to hide/show the settings menu + checkMenu() { + const { + buttons + } = this.elements.settings; + const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden); + toggleHidden(this.elements.settings.menu, !visible); + }, + // Focus the first menu item in a given (or visible) menu + focusFirstMenuItem(pane, focusVisible = false) { + if (this.elements.settings.popup.hidden) { + return; + } + let target = pane; + if (!is.element(target)) { + target = Object.values(this.elements.settings.panels).find(p => !p.hidden); + } + const firstItem = target.querySelector('[role^="menuitem"]'); + setFocus.call(this, firstItem, focusVisible); + }, + // Show/hide menu + toggleMenu(input) { + const { + popup + } = this.elements.settings; + const button = this.elements.buttons.settings; + + // Menu and button are required + if (!is.element(popup) || !is.element(button)) { + return; + } + + // True toggle by default + const { + hidden + } = popup; + let show = hidden; + if (is.boolean(input)) { + show = input; + } else if (is.keyboardEvent(input) && input.key === 'Escape') { + show = false; + } else if (is.event(input)) { + // If Plyr is in a shadowDOM, the event target is set to the component, instead of the + // Element in the shadowDOM. The path, if available, is complete. + const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target; + const isMenuItem = popup.contains(target); + + // If the click was inside the menu or if the click + // wasn't the button or menu item and we're trying to + // show the menu (a doc click shouldn't show the menu) + if (isMenuItem || !isMenuItem && input.target !== button && show) { + return; + } + } + + // Set button attributes + button.setAttribute('aria-expanded', show); + + // Show the actual popup + toggleHidden(popup, !show); + + // Add class hook + toggleClass(this.elements.container, this.config.classNames.menu.open, show); + + // Focus the first item if key interaction + if (show && is.keyboardEvent(input)) { + controls.focusFirstMenuItem.call(this, null, true); + } else if (!show && !hidden) { + // If closing, re-focus the button + setFocus.call(this, button, is.keyboardEvent(input)); + } + }, + // Get the natural size of a menu panel + getMenuSize(tab) { + const clone = tab.cloneNode(true); + clone.style.position = 'absolute'; + clone.style.opacity = 0; + clone.removeAttribute('hidden'); + + // Append to parent so we get the "real" size + tab.parentNode.appendChild(clone); + + // Get the sizes before we remove + const width = clone.scrollWidth; + const height = clone.scrollHeight; + + // Remove from the DOM + removeElement(clone); + return { + width, + height + }; + }, + // Show a panel in the menu + showMenuPanel(type = '', focusVisible = false) { + const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`); + + // Nothing to show, bail + if (!is.element(target)) { + return; + } + + // Hide all other panels + const container = target.parentNode; + const current = Array.from(container.children).find(node => !node.hidden); + + // If we can do fancy animations, we'll animate the height/width + if (support.transitions && !support.reducedMotion) { + // Set the current width as a base + container.style.width = `${current.scrollWidth}px`; + container.style.height = `${current.scrollHeight}px`; + + // Get potential sizes + const size = controls.getMenuSize.call(this, target); + + // Restore auto height/width + const restore = event => { + // We're only bothered about height and width on the container + if (event.target !== container || !['width', 'height'].includes(event.propertyName)) { + return; + } + + // Revert back to auto + container.style.width = ''; + container.style.height = ''; + + // Only listen once + off.call(this, container, transitionEndEvent, restore); + }; + + // Listen for the transition finishing and restore auto height/width + on.call(this, container, transitionEndEvent, restore); + + // Set dimensions to target + container.style.width = `${size.width}px`; + container.style.height = `${size.height}px`; + } + + // Set attributes on current tab + toggleHidden(current, true); + + // Set attributes on target + toggleHidden(target, false); + + // Focus the first item + controls.focusFirstMenuItem.call(this, target, focusVisible); + }, + // Set the download URL + setDownloadUrl() { + const button = this.elements.buttons.download; + + // Bail if no button + if (!is.element(button)) { + return; + } + + // Set attribute + button.setAttribute('href', this.download); + }, + // Build the default HTML + create(data) { + const { + bindMenuItemShortcuts, + createButton, + createProgress, + createRange, + createTime, + setQualityMenu, + setSpeedMenu, + showMenuPanel + } = controls; + this.elements.controls = null; + + // Larger overlaid play button + if (is.array(this.config.controls) && this.config.controls.includes('play-large')) { + this.elements.container.appendChild(createButton.call(this, 'play-large')); + } + + // Create the container + const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper)); + this.elements.controls = container; + + // Default item attributes + const defaultAttributes = { + class: 'plyr__controls__item' + }; + + // Loop through controls in order + dedupe(is.array(this.config.controls) ? this.config.controls : []).forEach(control => { + // Restart button + if (control === 'restart') { + container.appendChild(createButton.call(this, 'restart', defaultAttributes)); + } + + // Rewind button + if (control === 'rewind') { + container.appendChild(createButton.call(this, 'rewind', defaultAttributes)); + } + + // Play/Pause button + if (control === 'play') { + container.appendChild(createButton.call(this, 'play', defaultAttributes)); + } + + // Fast forward button + if (control === 'fast-forward') { + container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes)); + } + + // Progress + if (control === 'progress') { + const progressContainer = createElement('div', { + class: `${defaultAttributes.class} plyr__progress__container` + }); + const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress)); + + // Seek range slider + progress.appendChild(createRange.call(this, 'seek', { + id: `plyr-seek-${data.id}` + })); + + // Buffer progress + progress.appendChild(createProgress.call(this, 'buffer')); + + // TODO: Add loop display indicator + + // Seek tooltip + if (this.config.tooltips.seek) { + const tooltip = createElement('span', { + class: this.config.classNames.tooltip + }, '00:00'); + progress.appendChild(tooltip); + this.elements.display.seekTooltip = tooltip; + } + this.elements.progress = progress; + progressContainer.appendChild(this.elements.progress); + container.appendChild(progressContainer); + } + + // Media current time display + if (control === 'current-time') { + container.appendChild(createTime.call(this, 'currentTime', defaultAttributes)); + } + + // Media duration display + if (control === 'duration') { + container.appendChild(createTime.call(this, 'duration', defaultAttributes)); + } + + // Volume controls + if (control === 'mute' || control === 'volume') { + let { + volume + } = this.elements; + + // Create the volume container if needed + if (!is.element(volume) || !container.contains(volume)) { + volume = createElement('div', extend({}, defaultAttributes, { + class: `${defaultAttributes.class} plyr__volume`.trim() + })); + this.elements.volume = volume; + container.appendChild(volume); + } + + // Toggle mute button + if (control === 'mute') { + volume.appendChild(createButton.call(this, 'mute')); + } + + // Volume range control + // Ignored on iOS as it's handled globally + // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html + if (control === 'volume' && !browser.isIos && !browser.isIPadOS) { + // Set the attributes + const attributes = { + max: 1, + step: 0.05, + value: this.config.volume + }; + + // Create the volume range slider + volume.appendChild(createRange.call(this, 'volume', extend(attributes, { + id: `plyr-volume-${data.id}` + }))); + } + } + + // Toggle captions button + if (control === 'captions') { + container.appendChild(createButton.call(this, 'captions', defaultAttributes)); + } + + // Settings button / menu + if (control === 'settings' && !is.empty(this.config.settings)) { + const wrapper = createElement('div', extend({}, defaultAttributes, { + class: `${defaultAttributes.class} plyr__menu`.trim(), + hidden: '' + })); + wrapper.appendChild(createButton.call(this, 'settings', { + 'aria-haspopup': true, + 'aria-controls': `plyr-settings-${data.id}`, + 'aria-expanded': false + })); + const popup = createElement('div', { + class: 'plyr__menu__container', + id: `plyr-settings-${data.id}`, + hidden: '' + }); + const inner = createElement('div'); + const home = createElement('div', { + id: `plyr-settings-${data.id}-home` + }); + + // Create the menu + const menu = createElement('div', { + role: 'menu' + }); + home.appendChild(menu); + inner.appendChild(home); + this.elements.settings.panels.home = home; + + // Build the menu items + this.config.settings.forEach(type => { + // TODO: bundle this with the createMenuItem helper and bindings + const menuItem = createElement('button', extend(getAttributesFromSelector(this.config.selectors.buttons.settings), { + type: 'button', + class: `${this.config.classNames.control} ${this.config.classNames.control}--forward`, + role: 'menuitem', + 'aria-haspopup': true, + hidden: '' + })); + + // Bind menu shortcuts for keyboard users + bindMenuItemShortcuts.call(this, menuItem, type); + + // Show menu on click + on.call(this, menuItem, 'click', () => { + showMenuPanel.call(this, type, false); + }); + const flex = createElement('span', null, i18n.get(type, this.config)); + const value = createElement('span', { + class: this.config.classNames.menu.value + }); + + // Speed contains HTML entities + value.innerHTML = data[type]; + flex.appendChild(value); + menuItem.appendChild(flex); + menu.appendChild(menuItem); + + // Build the panes + const pane = createElement('div', { + id: `plyr-settings-${data.id}-${type}`, + hidden: '' + }); + + // Back button + const backButton = createElement('button', { + type: 'button', + class: `${this.config.classNames.control} ${this.config.classNames.control}--back` + }); + + // Visible label + backButton.appendChild(createElement('span', { + 'aria-hidden': true + }, i18n.get(type, this.config))); + + // Screen reader label + backButton.appendChild(createElement('span', { + class: this.config.classNames.hidden + }, i18n.get('menuBack', this.config))); + + // Go back via keyboard + on.call(this, pane, 'keydown', event => { + if (event.key !== 'ArrowLeft') return; + + // Prevent seek + event.preventDefault(); + event.stopPropagation(); + + // Show the respective menu + showMenuPanel.call(this, 'home', true); + }, false); + + // Go back via button click + on.call(this, backButton, 'click', () => { + showMenuPanel.call(this, 'home', false); + }); + + // Add to pane + pane.appendChild(backButton); + + // Menu + pane.appendChild(createElement('div', { + role: 'menu' + })); + inner.appendChild(pane); + this.elements.settings.buttons[type] = menuItem; + this.elements.settings.panels[type] = pane; + }); + popup.appendChild(inner); + wrapper.appendChild(popup); + container.appendChild(wrapper); + this.elements.settings.popup = popup; + this.elements.settings.menu = wrapper; + } + + // Picture in picture button + if (control === 'pip' && support.pip) { + container.appendChild(createButton.call(this, 'pip', defaultAttributes)); + } + + // Airplay button + if (control === 'airplay' && support.airplay) { + container.appendChild(createButton.call(this, 'airplay', defaultAttributes)); + } + + // Download button + if (control === 'download') { + const attributes = extend({}, defaultAttributes, { + element: 'a', + href: this.download, + target: '_blank' + }); + + // Set download attribute for HTML5 only + if (this.isHTML5) { + attributes.download = ''; + } + const { + download + } = this.config.urls; + if (!is.url(download) && this.isEmbed) { + extend(attributes, { + icon: `logo-${this.provider}`, + label: this.provider + }); + } + container.appendChild(createButton.call(this, 'download', attributes)); + } + + // Toggle fullscreen button + if (control === 'fullscreen') { + container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes)); + } + }); + + // Set available quality levels + if (this.isHTML5) { + setQualityMenu.call(this, html5.getQualityOptions.call(this)); + } + setSpeedMenu.call(this); + return container; + }, + // Insert controls + inject() { + // Sprite + if (this.config.loadSprite) { + const icon = controls.getIconUrl.call(this); + + // Only load external sprite using AJAX + if (icon.cors) { + loadSprite(icon.url, 'sprite-plyr'); + } + } + + // Create a unique ID + this.id = Math.floor(Math.random() * 10000); + + // Null by default + let container = null; + this.elements.controls = null; + + // Set template properties + const props = { + id: this.id, + seektime: this.config.seekTime, + title: this.config.title + }; + let update = true; + + // If function, run it and use output + if (is.function(this.config.controls)) { + this.config.controls = this.config.controls.call(this, props); + } + + // Convert falsy controls to empty array (primarily for empty strings) + if (!this.config.controls) { + this.config.controls = []; + } + if (is.element(this.config.controls) || is.string(this.config.controls)) { + // HTMLElement or Non-empty string passed as the option + container = this.config.controls; + } else { + // Create controls + container = controls.create.call(this, { + id: this.id, + seektime: this.config.seekTime, + speed: this.speed, + quality: this.quality, + captions: captions.getLabel.call(this) + // TODO: Looping + // loop: 'None', + }); + + update = false; + } + + // Replace props with their value + const replace = input => { + let result = input; + Object.entries(props).forEach(([key, value]) => { + result = replaceAll(result, `{${key}}`, value); + }); + return result; + }; + + // Update markup + if (update) { + if (is.string(this.config.controls)) { + container = replace(container); + } + } + + // Controls container + let target; + + // Inject to custom location + if (is.string(this.config.selectors.controls.container)) { + target = document.querySelector(this.config.selectors.controls.container); + } + + // Inject into the container by default + if (!is.element(target)) { + target = this.elements.container; + } + + // Inject controls HTML (needs to be before captions, hence "afterbegin") + const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML'; + target[insertMethod]('afterbegin', container); + + // Find the elements if need be + if (!is.element(this.elements.controls)) { + controls.findElements.call(this); + } + + // Add pressed property to buttons + if (!is.empty(this.elements.buttons)) { + const addProperty = button => { + const className = this.config.classNames.controlPressed; + button.setAttribute('aria-pressed', 'false'); + Object.defineProperty(button, 'pressed', { + configurable: true, + enumerable: true, + get() { + return hasClass(button, className); + }, + set(pressed = false) { + toggleClass(button, className, pressed); + button.setAttribute('aria-pressed', pressed ? 'true' : 'false'); + } + }); + }; + + // Toggle classname when pressed property is set + Object.values(this.elements.buttons).filter(Boolean).forEach(button => { + if (is.array(button) || is.nodeList(button)) { + Array.from(button).filter(Boolean).forEach(addProperty); + } else { + addProperty(button); + } + }); + } + + // Edge sometimes doesn't finish the paint so force a repaint + if (browser.isEdge) { + repaint(target); + } + + // Setup tooltips + if (this.config.tooltips.controls) { + const { + classNames, + selectors + } = this.config; + const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`; + const labels = getElements.call(this, selector); + Array.from(labels).forEach(label => { + toggleClass(label, this.config.classNames.hidden, false); + toggleClass(label, this.config.classNames.tooltip, true); + }); + } + }, + // Set media metadata + setMediaMetadata() { + try { + if ('mediaSession' in navigator) { + navigator.mediaSession.metadata = new window.MediaMetadata({ + title: this.config.mediaMetadata.title, + artist: this.config.mediaMetadata.artist, + album: this.config.mediaMetadata.album, + artwork: this.config.mediaMetadata.artwork + }); + } + } catch (_) { + // Do nothing + } + }, + // Add markers + setMarkers() { + var _this$config$markers2, _this$config$markers3; + if (!this.duration || this.elements.markers) return; + + // Get valid points + const points = (_this$config$markers2 = this.config.markers) === null || _this$config$markers2 === void 0 ? void 0 : (_this$config$markers3 = _this$config$markers2.points) === null || _this$config$markers3 === void 0 ? void 0 : _this$config$markers3.filter(({ + time + }) => time > 0 && time < this.duration); + if (!(points !== null && points !== void 0 && points.length)) return; + const containerFragment = document.createDocumentFragment(); + const pointsFragment = document.createDocumentFragment(); + let tipElement = null; + const tipVisible = `${this.config.classNames.tooltip}--visible`; + const toggleTip = show => toggleClass(tipElement, tipVisible, show); + + // Inject markers to progress container + points.forEach(point => { + const markerElement = createElement('span', { + class: this.config.classNames.marker + }, ''); + const left = `${point.time / this.duration * 100}%`; + if (tipElement) { + // Show on hover + markerElement.addEventListener('mouseenter', () => { + if (point.label) return; + tipElement.style.left = left; + tipElement.innerHTML = point.label; + toggleTip(true); + }); + + // Hide on leave + markerElement.addEventListener('mouseleave', () => { + toggleTip(false); + }); + } + markerElement.addEventListener('click', () => { + this.currentTime = point.time; + }); + markerElement.style.left = left; + pointsFragment.appendChild(markerElement); + }); + containerFragment.appendChild(pointsFragment); + + // Inject a tooltip if needed + if (!this.config.tooltips.seek) { + tipElement = createElement('span', { + class: this.config.classNames.tooltip + }, ''); + containerFragment.appendChild(tipElement); + } + this.elements.markers = { + points: pointsFragment, + tip: tipElement + }; + this.elements.progress.appendChild(containerFragment); + } + }; + + // ========================================================================== + + /** + * Parse a string to a URL object + * @param {String} input - the URL to be parsed + * @param {Boolean} safe - failsafe parsing + */ + function parseUrl(input, safe = true) { + let url = input; + if (safe) { + const parser = document.createElement('a'); + parser.href = url; + url = parser.href; + } + try { + return new URL(url); + } catch (_) { + return null; + } + } + + // Convert object to URLSearchParams + function buildUrlParams(input) { + const params = new URLSearchParams(); + if (is.object(input)) { + Object.entries(input).forEach(([key, value]) => { + params.set(key, value); + }); + } + return params; + } + + // ========================================================================== + const captions = { + // Setup captions + setup() { + // Requires UI support + if (!this.supported.ui) { + return; + } + + // Only Vimeo and HTML5 video supported at this point + if (!this.isVideo || this.isYouTube || this.isHTML5 && !support.textTracks) { + // Clear menu and hide + if (is.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) { + controls.setCaptionsMenu.call(this); + } + return; + } + + // Inject the container + if (!is.element(this.elements.captions)) { + this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions)); + this.elements.captions.setAttribute('dir', 'auto'); + insertAfter(this.elements.captions, this.elements.wrapper); + } + + // Fix IE captions if CORS is used + // Fetch captions and inject as blobs instead (data URIs not supported!) + if (browser.isIE && window.URL) { + const elements = this.media.querySelectorAll('track'); + Array.from(elements).forEach(track => { + const src = track.getAttribute('src'); + const url = parseUrl(src); + if (url !== null && url.hostname !== window.location.href.hostname && ['http:', 'https:'].includes(url.protocol)) { + fetch(src, 'blob').then(blob => { + track.setAttribute('src', window.URL.createObjectURL(blob)); + }).catch(() => { + removeElement(track); + }); + } + }); + } + + // Get and set initial data + // The "preferred" options are not realized unless / until the wanted language has a match + // * languages: Array of user's browser languages. + // * language: The language preferred by user settings or config + // * active: The state preferred by user settings or config + // * toggled: The real captions state + + const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en']; + const languages = dedupe(browserLanguages.map(language => language.split('-')[0])); + let language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase(); + + // Use first browser language when language is 'auto' + if (language === 'auto') { + [language] = languages; + } + let active = this.storage.get('captions'); + if (!is.boolean(active)) { + ({ + active + } = this.config.captions); + } + Object.assign(this.captions, { + toggled: false, + active, + language, + languages + }); + + // Watch changes to textTracks and update captions menu + if (this.isHTML5) { + const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack'; + on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this)); + } + + // Update available languages in list next tick (the event must not be triggered before the listeners) + setTimeout(captions.update.bind(this), 0); + }, + // Update available language options in settings based on tracks + update() { + const tracks = captions.getTracks.call(this, true); + // Get the wanted language + const { + active, + language, + meta, + currentTrackNode + } = this.captions; + const languageExists = Boolean(tracks.find(track => track.language === language)); + + // Handle tracks (add event listener and "pseudo"-default) + if (this.isHTML5 && this.isVideo) { + tracks.filter(track => !meta.get(track)).forEach(track => { + this.debug.log('Track added', track); + + // Attempt to store if the original dom element was "default" + meta.set(track, { + default: track.mode === 'showing' + }); + + // Turn off native caption rendering to avoid double captions + // Note: mode='hidden' forces a track to download. To ensure every track + // isn't downloaded at once, only 'showing' tracks should be reassigned + // eslint-disable-next-line no-param-reassign + if (track.mode === 'showing') { + // eslint-disable-next-line no-param-reassign + track.mode = 'hidden'; + } + + // Add event listener for cue changes + on.call(this, track, 'cuechange', () => captions.updateCues.call(this)); + }); + } + + // Update language first time it matches, or if the previous matching track was removed + if (languageExists && this.language !== language || !tracks.includes(currentTrackNode)) { + captions.setLanguage.call(this, language); + captions.toggle.call(this, active && languageExists); + } + + // Enable or disable captions based on track length + if (this.elements) { + toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks)); + } + + // Update available languages in list + if (is.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) { + controls.setCaptionsMenu.call(this); + } + }, + // Toggle captions display + // Used internally for the toggleCaptions method, with the passive option forced to false + toggle(input, passive = true) { + // If there's no full support + if (!this.supported.ui) { + return; + } + const { + toggled + } = this.captions; // Current state + const activeClass = this.config.classNames.captions.active; + // Get the next state + // If the method is called without parameter, toggle based on current value + const active = is.nullOrUndefined(input) ? !toggled : input; + + // Update state and trigger event + if (active !== toggled) { + // When passive, don't override user preferences + if (!passive) { + this.captions.active = active; + this.storage.set({ + captions: active + }); + } + + // Force language if the call isn't passive and there is no matching language to toggle to + if (!this.language && active && !passive) { + const tracks = captions.getTracks.call(this); + const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true); + + // Override user preferences to avoid switching languages if a matching track is added + this.captions.language = track.language; + + // Set caption, but don't store in localStorage as user preference + captions.set.call(this, tracks.indexOf(track)); + return; + } + + // Toggle button if it's enabled + if (this.elements.buttons.captions) { + this.elements.buttons.captions.pressed = active; + } + + // Add class hook + toggleClass(this.elements.container, activeClass, active); + this.captions.toggled = active; + + // Update settings menu + controls.updateSetting.call(this, 'captions'); + + // Trigger event (not used internally) + triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled'); + } + + // Wait for the call stack to clear before setting mode='hidden' + // on the active track - forcing the browser to download it + setTimeout(() => { + if (active && this.captions.toggled) { + this.captions.currentTrackNode.mode = 'hidden'; + } + }); + }, + // Set captions by track index + // Used internally for the currentTrack setter with the passive option forced to false + set(index, passive = true) { + const tracks = captions.getTracks.call(this); + + // Disable captions if setting to -1 + if (index === -1) { + captions.toggle.call(this, false, passive); + return; + } + if (!is.number(index)) { + this.debug.warn('Invalid caption argument', index); + return; + } + if (!(index in tracks)) { + this.debug.warn('Track not found', index); + return; + } + if (this.captions.currentTrack !== index) { + this.captions.currentTrack = index; + const track = tracks[index]; + const { + language + } = track || {}; + + // Store reference to node for invalidation on remove + this.captions.currentTrackNode = track; + + // Update settings menu + controls.updateSetting.call(this, 'captions'); + + // When passive, don't override user preferences + if (!passive) { + this.captions.language = language; + this.storage.set({ + language + }); + } + + // Handle Vimeo captions + if (this.isVimeo) { + this.embed.enableTextTrack(language); + } + + // Trigger event + triggerEvent.call(this, this.media, 'languagechange'); + } + + // Show captions + captions.toggle.call(this, true, passive); + if (this.isHTML5 && this.isVideo) { + // If we change the active track while a cue is already displayed we need to update it + captions.updateCues.call(this); + } + }, + // Set captions by language + // Used internally for the language setter with the passive option forced to false + setLanguage(input, passive = true) { + if (!is.string(input)) { + this.debug.warn('Invalid language argument', input); + return; + } + // Normalize + const language = input.toLowerCase(); + this.captions.language = language; + + // Set currentTrack + const tracks = captions.getTracks.call(this); + const track = captions.findTrack.call(this, [language]); + captions.set.call(this, tracks.indexOf(track), passive); + }, + // Get current valid caption tracks + // If update is false it will also ignore tracks without metadata + // This is used to "freeze" the language options when captions.update is false + getTracks(update = false) { + // Handle media or textTracks missing or null + const tracks = Array.from((this.media || {}).textTracks || []); + // For HTML5, use cache instead of current tracks when it exists (if captions.update is false) + // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata) + return tracks.filter(track => !this.isHTML5 || update || this.captions.meta.has(track)).filter(track => ['captions', 'subtitles'].includes(track.kind)); + }, + // Match tracks based on languages and get the first + findTrack(languages, force = false) { + const tracks = captions.getTracks.call(this); + const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default); + const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a)); + let track; + languages.every(language => { + track = sorted.find(t => t.language === language); + return !track; // Break iteration if there is a match + }); + + // If no match is found but is required, get first + return track || (force ? sorted[0] : undefined); + }, + // Get the current track + getCurrentTrack() { + return captions.getTracks.call(this)[this.currentTrack]; + }, + // Get UI label for track + getLabel(track) { + let currentTrack = track; + if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) { + currentTrack = captions.getCurrentTrack.call(this); + } + if (is.track(currentTrack)) { + if (!is.empty(currentTrack.label)) { + return currentTrack.label; + } + if (!is.empty(currentTrack.language)) { + return track.language.toUpperCase(); + } + return i18n.get('enabled', this.config); + } + return i18n.get('disabled', this.config); + }, + // Update captions using current track's active cues + // Also optional array argument in case there isn't any track (ex: vimeo) + updateCues(input) { + // Requires UI + if (!this.supported.ui) { + return; + } + if (!is.element(this.elements.captions)) { + this.debug.warn('No captions element to render to'); + return; + } + + // Only accept array or empty input + if (!is.nullOrUndefined(input) && !Array.isArray(input)) { + this.debug.warn('updateCues: Invalid input', input); + return; + } + let cues = input; + + // Get cues from track + if (!cues) { + const track = captions.getCurrentTrack.call(this); + cues = Array.from((track || {}).activeCues || []).map(cue => cue.getCueAsHTML()).map(getHTML); + } + + // Set new caption text + const content = cues.map(cueText => cueText.trim()).join('\n'); + const changed = content !== this.elements.captions.innerHTML; + if (changed) { + // Empty the container and create a new child element + emptyElement(this.elements.captions); + const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption)); + caption.innerHTML = content; + this.elements.captions.appendChild(caption); + + // Trigger event + triggerEvent.call(this, this.media, 'cuechange'); + } + } + }; + + // ========================================================================== + // Plyr default config + // ========================================================================== + + const defaults = { + // Disable + enabled: true, + // Custom media title + title: '', + // Logging to console + debug: false, + // Auto play (if supported) + autoplay: false, + // Only allow one media playing at once (vimeo only) + autopause: true, + // Allow inline playback on iOS + playsinline: true, + // Default time to skip when rewind/fast forward + seekTime: 10, + // Default volume + volume: 1, + muted: false, + // Pass a custom duration + duration: null, + // Display the media duration on load in the current time position + // If you have opted to display both duration and currentTime, this is ignored + displayDuration: true, + // Invert the current time to be a countdown + invertTime: true, + // Clicking the currentTime inverts it's value to show time left rather than elapsed + toggleInvert: true, + // Force an aspect ratio + // The format must be `'w:h'` (e.g. `'16:9'`) + ratio: null, + // Click video container to play/pause + clickToPlay: true, + // Auto hide the controls + hideControls: true, + // Reset to start when playback ended + resetOnEnd: false, + // Disable the standard context menu + disableContextMenu: true, + // Sprite (for icons) + loadSprite: true, + iconPrefix: 'plyr', + iconUrl: 'https://cdn.plyr.io/3.7.8/plyr.svg', + // Blank video (used to prevent errors on source change) + blankVideo: 'https://cdn.plyr.io/static/blank.mp4', + // Quality default + quality: { + default: 576, + // The options to display in the UI, if available for the source media + options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240], + forced: false, + onChange: null + }, + // Set loops + loop: { + active: false + // start: null, + // end: null, + }, + + // Speed default and options to display + speed: { + selected: 1, + // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x) + options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4] + }, + // Keyboard shortcut settings + keyboard: { + focused: true, + global: false + }, + // Display tooltips + tooltips: { + controls: false, + seek: true + }, + // Captions settings + captions: { + active: false, + language: 'auto', + // Listen to new tracks added after Plyr is initialized. + // This is needed for streaming captions, but may result in unselectable options + update: false + }, + // Fullscreen settings + fullscreen: { + enabled: true, + // Allow fullscreen? + fallback: true, + // Fallback using full viewport/window + iosNative: false // Use the native fullscreen in iOS (disables custom controls) + // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode + // Non-ancestors of the player element will be ignored + // container: null, // defaults to the player element + }, + + // Local storage + storage: { + enabled: true, + key: 'plyr' + }, + // Default controls + controls: ['play-large', + // 'restart', + // 'rewind', + 'play', + // 'fast-forward', + 'progress', 'current-time', + // 'duration', + 'mute', 'volume', 'captions', 'settings', 'pip', 'airplay', + // 'download', + 'fullscreen'], + settings: ['captions', 'quality', 'speed'], + // Localisation + i18n: { + restart: 'Restart', + rewind: 'Rewind {seektime}s', + play: 'Play', + pause: 'Pause', + fastForward: 'Forward {seektime}s', + seek: 'Seek', + seekLabel: '{currentTime} of {duration}', + played: 'Played', + buffered: 'Buffered', + currentTime: 'Current time', + duration: 'Duration', + volume: 'Volume', + mute: 'Mute', + unmute: 'Unmute', + enableCaptions: 'Enable captions', + disableCaptions: 'Disable captions', + download: 'Download', + enterFullscreen: 'Enter fullscreen', + exitFullscreen: 'Exit fullscreen', + frameTitle: 'Player for {title}', + captions: 'Captions', + settings: 'Settings', + pip: 'PIP', + menuBack: 'Go back to previous menu', + speed: 'Speed', + normal: 'Normal', + quality: 'Quality', + loop: 'Loop', + start: 'Start', + end: 'End', + all: 'All', + reset: 'Reset', + disabled: 'Disabled', + enabled: 'Enabled', + advertisement: 'Ad', + qualityBadge: { + 2160: '4K', + 1440: 'HD', + 1080: 'HD', + 720: 'HD', + 576: 'SD', + 480: 'SD' + } + }, + // URLs + urls: { + download: null, + vimeo: { + sdk: 'https://player.vimeo.com/api/player.js', + iframe: 'https://player.vimeo.com/video/{0}?{1}', + api: 'https://vimeo.com/api/oembed.json?url={0}' + }, + youtube: { + sdk: 'https://www.youtube.com/iframe_api', + api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}' + }, + googleIMA: { + sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js' + } + }, + // Custom control listeners + listeners: { + seek: null, + play: null, + pause: null, + restart: null, + rewind: null, + fastForward: null, + mute: null, + volume: null, + captions: null, + download: null, + fullscreen: null, + pip: null, + airplay: null, + speed: null, + quality: null, + loop: null, + language: null + }, + // Events to watch and bubble + events: [ + // Events to watch on HTML5 media elements and bubble + // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events + 'ended', 'progress', 'stalled', 'playing', 'waiting', 'canplay', 'canplaythrough', 'loadstart', 'loadeddata', 'loadedmetadata', 'timeupdate', 'volumechange', 'play', 'pause', 'error', 'seeking', 'seeked', 'emptied', 'ratechange', 'cuechange', + // Custom events + 'download', 'enterfullscreen', 'exitfullscreen', 'captionsenabled', 'captionsdisabled', 'languagechange', 'controlshidden', 'controlsshown', 'ready', + // YouTube + 'statechange', + // Quality + 'qualitychange', + // Ads + 'adsloaded', 'adscontentpause', 'adscontentresume', 'adstarted', 'adsmidpoint', 'adscomplete', 'adsallcomplete', 'adsimpression', 'adsclick'], + // Selectors + // Change these to match your template if using custom HTML + selectors: { + editable: 'input, textarea, select, [contenteditable]', + container: '.plyr', + controls: { + container: null, + wrapper: '.plyr__controls' + }, + labels: '[data-plyr]', + buttons: { + play: '[data-plyr="play"]', + pause: '[data-plyr="pause"]', + restart: '[data-plyr="restart"]', + rewind: '[data-plyr="rewind"]', + fastForward: '[data-plyr="fast-forward"]', + mute: '[data-plyr="mute"]', + captions: '[data-plyr="captions"]', + download: '[data-plyr="download"]', + fullscreen: '[data-plyr="fullscreen"]', + pip: '[data-plyr="pip"]', + airplay: '[data-plyr="airplay"]', + settings: '[data-plyr="settings"]', + loop: '[data-plyr="loop"]' + }, + inputs: { + seek: '[data-plyr="seek"]', + volume: '[data-plyr="volume"]', + speed: '[data-plyr="speed"]', + language: '[data-plyr="language"]', + quality: '[data-plyr="quality"]' + }, + display: { + currentTime: '.plyr__time--current', + duration: '.plyr__time--duration', + buffer: '.plyr__progress__buffer', + loop: '.plyr__progress__loop', + // Used later + volume: '.plyr__volume--display' + }, + progress: '.plyr__progress', + captions: '.plyr__captions', + caption: '.plyr__caption' + }, + // Class hooks added to the player in different states + classNames: { + type: 'plyr--{0}', + provider: 'plyr--{0}', + video: 'plyr__video-wrapper', + embed: 'plyr__video-embed', + videoFixedRatio: 'plyr__video-wrapper--fixed-ratio', + embedContainer: 'plyr__video-embed__container', + poster: 'plyr__poster', + posterEnabled: 'plyr__poster-enabled', + ads: 'plyr__ads', + control: 'plyr__control', + controlPressed: 'plyr__control--pressed', + playing: 'plyr--playing', + paused: 'plyr--paused', + stopped: 'plyr--stopped', + loading: 'plyr--loading', + hover: 'plyr--hover', + tooltip: 'plyr__tooltip', + cues: 'plyr__cues', + marker: 'plyr__progress__marker', + hidden: 'plyr__sr-only', + hideControls: 'plyr--hide-controls', + isTouch: 'plyr--is-touch', + uiSupported: 'plyr--full-ui', + noTransition: 'plyr--no-transition', + display: { + time: 'plyr__time' + }, + menu: { + value: 'plyr__menu__value', + badge: 'plyr__badge', + open: 'plyr--menu-open' + }, + captions: { + enabled: 'plyr--captions-enabled', + active: 'plyr--captions-active' + }, + fullscreen: { + enabled: 'plyr--fullscreen-enabled', + fallback: 'plyr--fullscreen-fallback' + }, + pip: { + supported: 'plyr--pip-supported', + active: 'plyr--pip-active' + }, + airplay: { + supported: 'plyr--airplay-supported', + active: 'plyr--airplay-active' + }, + previewThumbnails: { + // Tooltip thumbs + thumbContainer: 'plyr__preview-thumb', + thumbContainerShown: 'plyr__preview-thumb--is-shown', + imageContainer: 'plyr__preview-thumb__image-container', + timeContainer: 'plyr__preview-thumb__time-container', + // Scrubbing + scrubbingContainer: 'plyr__preview-scrubbing', + scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown' + } + }, + // Embed attributes + attributes: { + embed: { + provider: 'data-plyr-provider', + id: 'data-plyr-embed-id', + hash: 'data-plyr-embed-hash' + } + }, + // Advertisements plugin + // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio + ads: { + enabled: false, + publisherId: '', + tagUrl: '' + }, + // Preview Thumbnails plugin + previewThumbnails: { + enabled: false, + src: '' + }, + // Vimeo plugin + vimeo: { + byline: false, + portrait: false, + title: false, + speed: true, + transparent: false, + // Custom settings from Plyr + customControls: true, + referrerPolicy: null, + // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy + // Whether the owner of the video has a Pro or Business account + // (which allows us to properly hide controls without CSS hacks, etc) + premium: false + }, + // YouTube plugin + youtube: { + rel: 0, + // No related vids + showinfo: 0, + // Hide info + iv_load_policy: 3, + // Hide annotations + modestbranding: 1, + // Hide logos as much as possible (they still show one in the corner when paused) + // Custom settings from Plyr + customControls: true, + noCookie: false // Whether to use an alternative version of YouTube without cookies + }, + + // Media Metadata + mediaMetadata: { + title: '', + artist: '', + album: '', + artwork: [] + }, + // Markers + markers: { + enabled: false, + points: [] + } + }; + + // ========================================================================== + // Plyr states + // ========================================================================== + + const pip = { + active: 'picture-in-picture', + inactive: 'inline' + }; + + // ========================================================================== + // Plyr supported types and providers + // ========================================================================== + + const providers = { + html5: 'html5', + youtube: 'youtube', + vimeo: 'vimeo' + }; + const types = { + audio: 'audio', + video: 'video' + }; + + /** + * Get provider by URL + * @param {String} url + */ + function getProviderByUrl(url) { + // YouTube + if (/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(url)) { + return providers.youtube; + } + + // Vimeo + if (/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(url)) { + return providers.vimeo; + } + return null; + } + + // ========================================================================== + // Console wrapper + // ========================================================================== + + const noop = () => {}; + class Console { + constructor(enabled = false) { + this.enabled = window.console && enabled; + if (this.enabled) { + this.log('Debugging enabled'); + } + } + get log() { + // eslint-disable-next-line no-console + return this.enabled ? Function.prototype.bind.call(console.log, console) : noop; + } + get warn() { + // eslint-disable-next-line no-console + return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop; + } + get error() { + // eslint-disable-next-line no-console + return this.enabled ? Function.prototype.bind.call(console.error, console) : noop; + } + } + + class Fullscreen { + constructor(player) { + _defineProperty$1(this, "onChange", () => { + if (!this.supported) return; + + // Update toggle button + const button = this.player.elements.buttons.fullscreen; + if (is.element(button)) { + button.pressed = this.active; + } + + // Always trigger events on the plyr / media element (not a fullscreen container) and let them bubble up + const target = this.target === this.player.media ? this.target : this.player.elements.container; + // Trigger an event + triggerEvent.call(this.player, target, this.active ? 'enterfullscreen' : 'exitfullscreen', true); + }); + _defineProperty$1(this, "toggleFallback", (toggle = false) => { + // Store or restore scroll position + if (toggle) { + this.scrollPosition = { + x: window.scrollX ?? 0, + y: window.scrollY ?? 0 + }; + } else { + window.scrollTo(this.scrollPosition.x, this.scrollPosition.y); + } + + // Toggle scroll + document.body.style.overflow = toggle ? 'hidden' : ''; + + // Toggle class hook + toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle); + + // Force full viewport on iPhone X+ + if (browser.isIos) { + let viewport = document.head.querySelector('meta[name="viewport"]'); + const property = 'viewport-fit=cover'; + + // Inject the viewport meta if required + if (!viewport) { + viewport = document.createElement('meta'); + viewport.setAttribute('name', 'viewport'); + } + + // Check if the property already exists + const hasProperty = is.string(viewport.content) && viewport.content.includes(property); + if (toggle) { + this.cleanupViewport = !hasProperty; + if (!hasProperty) viewport.content += `,${property}`; + } else if (this.cleanupViewport) { + viewport.content = viewport.content.split(',').filter(part => part.trim() !== property).join(','); + } + } + + // Toggle button and fire events + this.onChange(); + }); + // Trap focus inside container + _defineProperty$1(this, "trapFocus", event => { + // Bail if iOS/iPadOS, not active, not the tab key + if (browser.isIos || browser.isIPadOS || !this.active || event.key !== 'Tab') return; + + // Get the current focused element + const focused = document.activeElement; + const focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]'); + const [first] = focusable; + const last = focusable[focusable.length - 1]; + if (focused === last && !event.shiftKey) { + // Move focus to first element that can be tabbed if Shift isn't used + first.focus(); + event.preventDefault(); + } else if (focused === first && event.shiftKey) { + // Move focus to last element that can be tabbed if Shift is used + last.focus(); + event.preventDefault(); + } + }); + // Update UI + _defineProperty$1(this, "update", () => { + if (this.supported) { + let mode; + if (this.forceFallback) mode = 'Fallback (forced)';else if (Fullscreen.nativeSupported) mode = 'Native';else mode = 'Fallback'; + this.player.debug.log(`${mode} fullscreen enabled`); + } else { + this.player.debug.log('Fullscreen not supported and fallback disabled'); + } + + // Add styling hook to show button + toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.supported); + }); + // Make an element fullscreen + _defineProperty$1(this, "enter", () => { + if (!this.supported) return; + + // iOS native fullscreen doesn't need the request step + if (browser.isIos && this.player.config.fullscreen.iosNative) { + if (this.player.isVimeo) { + this.player.embed.requestFullscreen(); + } else { + this.target.webkitEnterFullscreen(); + } + } else if (!Fullscreen.nativeSupported || this.forceFallback) { + this.toggleFallback(true); + } else if (!this.prefix) { + this.target.requestFullscreen({ + navigationUI: 'hide' + }); + } else if (!is.empty(this.prefix)) { + this.target[`${this.prefix}Request${this.property}`](); + } + }); + // Bail from fullscreen + _defineProperty$1(this, "exit", () => { + if (!this.supported) return; + + // iOS native fullscreen + if (browser.isIos && this.player.config.fullscreen.iosNative) { + if (this.player.isVimeo) { + this.player.embed.exitFullscreen(); + } else { + this.target.webkitEnterFullscreen(); + } + silencePromise(this.player.play()); + } else if (!Fullscreen.nativeSupported || this.forceFallback) { + this.toggleFallback(false); + } else if (!this.prefix) { + (document.cancelFullScreen || document.exitFullscreen).call(document); + } else if (!is.empty(this.prefix)) { + const action = this.prefix === 'moz' ? 'Cancel' : 'Exit'; + document[`${this.prefix}${action}${this.property}`](); + } + }); + // Toggle state + _defineProperty$1(this, "toggle", () => { + if (!this.active) this.enter();else this.exit(); + }); + // Keep reference to parent + this.player = player; + + // Get prefix + this.prefix = Fullscreen.prefix; + this.property = Fullscreen.property; + + // Scroll position + this.scrollPosition = { + x: 0, + y: 0 + }; + + // Force the use of 'full window/browser' rather than fullscreen + this.forceFallback = player.config.fullscreen.fallback === 'force'; + + // Get the fullscreen element + // Checks container is an ancestor, defaults to null + this.player.elements.fullscreen = player.config.fullscreen.container && closest$1(this.player.elements.container, player.config.fullscreen.container); + + // Register event listeners + // Handle event (incase user presses escape etc) + on.call(this.player, document, this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`, () => { + // TODO: Filter for target?? + this.onChange(); + }); + + // Fullscreen toggle on double click + on.call(this.player, this.player.elements.container, 'dblclick', event => { + // Ignore double click in controls + if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) { + return; + } + this.player.listeners.proxy(event, this.toggle, 'fullscreen'); + }); + + // Tap focus when in fullscreen + on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event)); + + // Update the UI + this.update(); + } + + // Determine if native supported + static get nativeSupported() { + return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled); + } + + // If we're actually using native + get useNative() { + return Fullscreen.nativeSupported && !this.forceFallback; + } + + // Get the prefix for handlers + static get prefix() { + // No prefix + if (is.function(document.exitFullscreen)) return ''; + + // Check for fullscreen support by vendor prefix + let value = ''; + const prefixes = ['webkit', 'moz', 'ms']; + prefixes.some(pre => { + if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) { + value = pre; + return true; + } + return false; + }); + return value; + } + static get property() { + return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen'; + } + + // Determine if fullscreen is supported + get supported() { + return [ + // Fullscreen is enabled in config + this.player.config.fullscreen.enabled, + // Must be a video + this.player.isVideo, + // Either native is supported or fallback enabled + Fullscreen.nativeSupported || this.player.config.fullscreen.fallback, + // YouTube has no way to trigger fullscreen, so on devices with no native support, playsinline + // must be enabled and iosNative fullscreen must be disabled to offer the fullscreen fallback + !this.player.isYouTube || Fullscreen.nativeSupported || !browser.isIos || this.player.config.playsinline && !this.player.config.fullscreen.iosNative].every(Boolean); + } + + // Get active state + get active() { + if (!this.supported) return false; + + // Fallback using classname + if (!Fullscreen.nativeSupported || this.forceFallback) { + return hasClass(this.target, this.player.config.classNames.fullscreen.fallback); + } + const element = !this.prefix ? this.target.getRootNode().fullscreenElement : this.target.getRootNode()[`${this.prefix}${this.property}Element`]; + return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target; + } + + // Get target element + get target() { + return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.fullscreen ?? this.player.elements.container; + } + } + + // ========================================================================== + // Load image avoiding xhr/fetch CORS issues + // Server status can't be obtained this way unfortunately, so this uses "naturalWidth" to determine if the image has loaded + // By default it checks if it is at least 1px, but you can add a second argument to change this + // ========================================================================== + + function loadImage(src, minWidth = 1) { + return new Promise((resolve, reject) => { + const image = new Image(); + const handler = () => { + delete image.onload; + delete image.onerror; + (image.naturalWidth >= minWidth ? resolve : reject)(image); + }; + Object.assign(image, { + onload: handler, + onerror: handler, + src + }); + }); + } + + // ========================================================================== + const ui = { + addStyleHook() { + toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true); + toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui); + }, + // Toggle native HTML5 media controls + toggleNativeControls(toggle = false) { + if (toggle && this.isHTML5) { + this.media.setAttribute('controls', ''); + } else { + this.media.removeAttribute('controls'); + } + }, + // Setup the UI + build() { + // Re-attach media element listeners + // TODO: Use event bubbling? + this.listeners.media(); + + // Don't setup interface if no support + if (!this.supported.ui) { + this.debug.warn(`Basic support only for ${this.provider} ${this.type}`); + + // Restore native controls + ui.toggleNativeControls.call(this, true); + + // Bail + return; + } + + // Inject custom controls if not present + if (!is.element(this.elements.controls)) { + // Inject custom controls + controls.inject.call(this); + + // Re-attach control listeners + this.listeners.controls(); + } + + // Remove native controls + ui.toggleNativeControls.call(this); + + // Setup captions for HTML5 + if (this.isHTML5) { + captions.setup.call(this); + } + + // Reset volume + this.volume = null; + + // Reset mute state + this.muted = null; + + // Reset loop state + this.loop = null; + + // Reset quality setting + this.quality = null; + + // Reset speed + this.speed = null; + + // Reset volume display + controls.updateVolume.call(this); + + // Reset time display + controls.timeUpdate.call(this); + + // Reset duration display + controls.durationUpdate.call(this); + + // Update the UI + ui.checkPlaying.call(this); + + // Check for picture-in-picture support + toggleClass(this.elements.container, this.config.classNames.pip.supported, support.pip && this.isHTML5 && this.isVideo); + + // Check for airplay support + toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5); + + // Add touch class + toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch); + + // Ready for API calls + this.ready = true; + + // Ready event at end of execution stack + setTimeout(() => { + triggerEvent.call(this, this.media, 'ready'); + }, 0); + + // Set the title + ui.setTitle.call(this); + + // Assure the poster image is set, if the property was added before the element was created + if (this.poster) { + ui.setPoster.call(this, this.poster, false).catch(() => {}); + } + + // Manually set the duration if user has overridden it. + // The event listeners for it doesn't get called if preload is disabled (#701) + if (this.config.duration) { + controls.durationUpdate.call(this); + } + + // Media metadata + if (this.config.mediaMetadata) { + controls.setMediaMetadata.call(this); + } + }, + // Setup aria attribute for play and iframe title + setTitle() { + // Find the current text + let label = i18n.get('play', this.config); + + // If there's a media title set, use that for the label + if (is.string(this.config.title) && !is.empty(this.config.title)) { + label += `, ${this.config.title}`; + } + + // If there's a play button, set label + Array.from(this.elements.buttons.play || []).forEach(button => { + button.setAttribute('aria-label', label); + }); + + // Set iframe title + // https://github.com/sampotts/plyr/issues/124 + if (this.isEmbed) { + const iframe = getElement.call(this, 'iframe'); + if (!is.element(iframe)) { + return; + } + + // Default to media type + const title = !is.empty(this.config.title) ? this.config.title : 'video'; + const format = i18n.get('frameTitle', this.config); + iframe.setAttribute('title', format.replace('{title}', title)); + } + }, + // Toggle poster + togglePoster(enable) { + toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable); + }, + // Set the poster image (async) + // Used internally for the poster setter, with the passive option forced to false + setPoster(poster, passive = true) { + // Don't override if call is passive + if (passive && this.poster) { + return Promise.reject(new Error('Poster already set')); + } + + // Set property synchronously to respect the call order + this.media.setAttribute('data-poster', poster); + + // Show the poster + this.elements.poster.removeAttribute('hidden'); + + // Wait until ui is ready + return ready.call(this) + // Load image + .then(() => loadImage(poster)).catch(error => { + // Hide poster on error unless it's been set by another call + if (poster === this.poster) { + ui.togglePoster.call(this, false); + } + // Rethrow + throw error; + }).then(() => { + // Prevent race conditions + if (poster !== this.poster) { + throw new Error('setPoster cancelled by later call to setPoster'); + } + }).then(() => { + Object.assign(this.elements.poster.style, { + backgroundImage: `url('${poster}')`, + // Reset backgroundSize as well (since it can be set to "cover" for padded thumbnails for youtube) + backgroundSize: '' + }); + ui.togglePoster.call(this, true); + return poster; + }); + }, + // Check playing state + checkPlaying(event) { + // Class hooks + toggleClass(this.elements.container, this.config.classNames.playing, this.playing); + toggleClass(this.elements.container, this.config.classNames.paused, this.paused); + toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped); + + // Set state + Array.from(this.elements.buttons.play || []).forEach(target => { + Object.assign(target, { + pressed: this.playing + }); + target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config)); + }); + + // Only update controls on non timeupdate events + if (is.event(event) && event.type === 'timeupdate') { + return; + } + + // Toggle controls + ui.toggleControls.call(this); + }, + // Check if media is loading + checkLoading(event) { + this.loading = ['stalled', 'waiting'].includes(event.type); + + // Clear timer + clearTimeout(this.timers.loading); + + // Timer to prevent flicker when seeking + this.timers.loading = setTimeout(() => { + // Update progress bar loading class state + toggleClass(this.elements.container, this.config.classNames.loading, this.loading); + + // Update controls visibility + ui.toggleControls.call(this); + }, this.loading ? 250 : 0); + }, + // Toggle controls based on state and `force` argument + toggleControls(force) { + const { + controls: controlsElement + } = this.elements; + if (controlsElement && this.config.hideControls) { + // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.) + const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now(); + + // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide + this.toggleControls(Boolean(force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek)); + } + }, + // Migrate any custom properties from the media to the parent + migrateStyles() { + // Loop through values (as they are the keys when the object is spread 🤔) + Object.values({ + ...this.media.style + }) + // We're only fussed about Plyr specific properties + .filter(key => !is.empty(key) && is.string(key) && key.startsWith('--plyr')).forEach(key => { + // Set on the container + this.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key)); + + // Clean up from media element + this.media.style.removeProperty(key); + }); + + // Remove attribute if empty + if (is.empty(this.media.style)) { + this.media.removeAttribute('style'); + } + } + }; + + class Listeners { + constructor(_player) { + // Device is touch enabled + _defineProperty$1(this, "firstTouch", () => { + const { + player + } = this; + const { + elements + } = player; + player.touch = true; + + // Add touch class + toggleClass(elements.container, player.config.classNames.isTouch, true); + }); + // Global window & document listeners + _defineProperty$1(this, "global", (toggle = true) => { + const { + player + } = this; + + // Keyboard shortcuts + if (player.config.keyboard.global) { + toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false); + } + + // Click anywhere closes menu + toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle); + + // Detect touch by events + once.call(player, document.body, 'touchstart', this.firstTouch); + }); + // Container listeners + _defineProperty$1(this, "container", () => { + const { + player + } = this; + const { + config, + elements, + timers + } = player; + + // Keyboard shortcuts + if (!config.keyboard.global && config.keyboard.focused) { + on.call(player, elements.container, 'keydown keyup', this.handleKey, false); + } + + // Toggle controls on mouse events and entering fullscreen + on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', event => { + const { + controls: controlsElement + } = elements; + + // Remove button states for fullscreen + if (controlsElement && event.type === 'enterfullscreen') { + controlsElement.pressed = false; + controlsElement.hover = false; + } + + // Show, then hide after a timeout unless another control event occurs + const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type); + let delay = 0; + if (show) { + ui.toggleControls.call(player, true); + // Use longer timeout for touch devices + delay = player.touch ? 3000 : 2000; + } + + // Clear timer + clearTimeout(timers.controls); + + // Set new timer to prevent flicker when seeking + timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay); + }); + + // Set a gutter for Vimeo + const setGutter = () => { + if (!player.isVimeo || player.config.vimeo.premium) { + return; + } + const target = elements.wrapper; + const { + active + } = player.fullscreen; + const [videoWidth, videoHeight] = getAspectRatio.call(player); + const useNativeAspectRatio = supportsCSS(`aspect-ratio: ${videoWidth} / ${videoHeight}`); + + // If not active, remove styles + if (!active) { + if (useNativeAspectRatio) { + target.style.width = null; + target.style.height = null; + } else { + target.style.maxWidth = null; + target.style.margin = null; + } + return; + } + + // Determine which dimension will overflow and constrain view + const [viewportWidth, viewportHeight] = getViewportSize(); + const overflow = viewportWidth / viewportHeight > videoWidth / videoHeight; + if (useNativeAspectRatio) { + target.style.width = overflow ? 'auto' : '100%'; + target.style.height = overflow ? '100%' : 'auto'; + } else { + target.style.maxWidth = overflow ? `${viewportHeight / videoHeight * videoWidth}px` : null; + target.style.margin = overflow ? '0 auto' : null; + } + }; + + // Handle resizing + const resized = () => { + clearTimeout(timers.resized); + timers.resized = setTimeout(setGutter, 50); + }; + on.call(player, elements.container, 'enterfullscreen exitfullscreen', event => { + const { + target + } = player.fullscreen; + + // Ignore events not from target + if (target !== elements.container) { + return; + } + + // If it's not an embed and no ratio specified + if (!player.isEmbed && is.empty(player.config.ratio)) { + return; + } + + // Set Vimeo gutter + setGutter(); + + // Watch for resizes + const method = event.type === 'enterfullscreen' ? on : off; + method.call(player, window, 'resize', resized); + }); + }); + // Listen for media events + _defineProperty$1(this, "media", () => { + const { + player + } = this; + const { + elements + } = player; + + // Time change on media + on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event)); + + // Display duration + on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event => controls.durationUpdate.call(player, event)); + + // Handle the media finishing + on.call(player, player.media, 'ended', () => { + // Show poster on end + if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) { + // Restart + player.restart(); + + // Call pause otherwise IE11 will start playing the video again + player.pause(); + } + }); + + // Check for buffer progress + on.call(player, player.media, 'progress playing seeking seeked', event => controls.updateProgress.call(player, event)); + + // Handle volume changes + on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event)); + + // Handle play/pause + on.call(player, player.media, 'playing play pause ended emptied timeupdate', event => ui.checkPlaying.call(player, event)); + + // Loading state + on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event)); + + // Click video + if (player.supported.ui && player.config.clickToPlay && !player.isAudio) { + // Re-fetch the wrapper + const wrapper = getElement.call(player, `.${player.config.classNames.video}`); + + // Bail if there's no wrapper (this should never happen) + if (!is.element(wrapper)) { + return; + } + + // On click play, pause or restart + on.call(player, elements.container, 'click', event => { + const targets = [elements.container, wrapper]; + + // Ignore if click if not container or in video wrapper + if (!targets.includes(event.target) && !wrapper.contains(event.target)) { + return; + } + + // Touch devices will just show controls (if hidden) + if (player.touch && player.config.hideControls) { + return; + } + if (player.ended) { + this.proxy(event, player.restart, 'restart'); + this.proxy(event, () => { + silencePromise(player.play()); + }, 'play'); + } else { + this.proxy(event, () => { + silencePromise(player.togglePlay()); + }, 'play'); + } + }); + } + + // Disable right click + if (player.supported.ui && player.config.disableContextMenu) { + on.call(player, elements.wrapper, 'contextmenu', event => { + event.preventDefault(); + }, false); + } + + // Volume change + on.call(player, player.media, 'volumechange', () => { + // Save to storage + player.storage.set({ + volume: player.volume, + muted: player.muted + }); + }); + + // Speed change + on.call(player, player.media, 'ratechange', () => { + // Update UI + controls.updateSetting.call(player, 'speed'); + + // Save to storage + player.storage.set({ + speed: player.speed + }); + }); + + // Quality change + on.call(player, player.media, 'qualitychange', event => { + // Update UI + controls.updateSetting.call(player, 'quality', null, event.detail.quality); + }); + + // Update download link when ready and if quality changes + on.call(player, player.media, 'ready qualitychange', () => { + controls.setDownloadUrl.call(player); + }); + + // Proxy events to container + // Bubble up key events for Edge + const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' '); + on.call(player, player.media, proxyEvents, event => { + let { + detail = {} + } = event; + + // Get error details from media + if (event.type === 'error') { + detail = player.media.error; + } + triggerEvent.call(player, elements.container, event.type, true, detail); + }); + }); + // Run default and custom handlers + _defineProperty$1(this, "proxy", (event, defaultHandler, customHandlerKey) => { + const { + player + } = this; + const customHandler = player.config.listeners[customHandlerKey]; + const hasCustomHandler = is.function(customHandler); + let returned = true; + + // Execute custom handler + if (hasCustomHandler) { + returned = customHandler.call(player, event); + } + + // Only call default handler if not prevented in custom handler + if (returned !== false && is.function(defaultHandler)) { + defaultHandler.call(player, event); + } + }); + // Trigger custom and default handlers + _defineProperty$1(this, "bind", (element, type, defaultHandler, customHandlerKey, passive = true) => { + const { + player + } = this; + const customHandler = player.config.listeners[customHandlerKey]; + const hasCustomHandler = is.function(customHandler); + on.call(player, element, type, event => this.proxy(event, defaultHandler, customHandlerKey), passive && !hasCustomHandler); + }); + // Listen for control events + _defineProperty$1(this, "controls", () => { + const { + player + } = this; + const { + elements + } = player; + // IE doesn't support input event, so we fallback to change + const inputEvent = browser.isIE ? 'change' : 'input'; + + // Play/pause toggle + if (elements.buttons.play) { + Array.from(elements.buttons.play).forEach(button => { + this.bind(button, 'click', () => { + silencePromise(player.togglePlay()); + }, 'play'); + }); + } + + // Pause + this.bind(elements.buttons.restart, 'click', player.restart, 'restart'); + + // Rewind + this.bind(elements.buttons.rewind, 'click', () => { + // Record seek time so we can prevent hiding controls for a few seconds after rewind + player.lastSeekTime = Date.now(); + player.rewind(); + }, 'rewind'); + + // Rewind + this.bind(elements.buttons.fastForward, 'click', () => { + // Record seek time so we can prevent hiding controls for a few seconds after fast forward + player.lastSeekTime = Date.now(); + player.forward(); + }, 'fastForward'); + + // Mute toggle + this.bind(elements.buttons.mute, 'click', () => { + player.muted = !player.muted; + }, 'mute'); + + // Captions toggle + this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions()); + + // Download + this.bind(elements.buttons.download, 'click', () => { + triggerEvent.call(player, player.media, 'download'); + }, 'download'); + + // Fullscreen toggle + this.bind(elements.buttons.fullscreen, 'click', () => { + player.fullscreen.toggle(); + }, 'fullscreen'); + + // Picture-in-Picture + this.bind(elements.buttons.pip, 'click', () => { + player.pip = 'toggle'; + }, 'pip'); + + // Airplay + this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay'); + + // Settings menu - click toggle + this.bind(elements.buttons.settings, 'click', event => { + // Prevent the document click listener closing the menu + event.stopPropagation(); + event.preventDefault(); + controls.toggleMenu.call(player, event); + }, null, false); // Can't be passive as we're preventing default + + // Settings menu - keyboard toggle + // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus + // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143 + this.bind(elements.buttons.settings, 'keyup', event => { + if (![' ', 'Enter'].includes(event.key)) { + return; + } + + // Because return triggers a click anyway, all we need to do is set focus + if (event.key === 'Enter') { + controls.focusFirstMenuItem.call(player, null, true); + return; + } + + // Prevent scroll + event.preventDefault(); + + // Prevent playing video (Firefox) + event.stopPropagation(); + + // Toggle menu + controls.toggleMenu.call(player, event); + }, null, false // Can't be passive as we're preventing default + ); + + // Escape closes menu + this.bind(elements.settings.menu, 'keydown', event => { + if (event.key === 'Escape') { + controls.toggleMenu.call(player, event); + } + }); + + // Set range input alternative "value", which matches the tooltip time (#954) + this.bind(elements.inputs.seek, 'mousedown mousemove', event => { + const rect = elements.progress.getBoundingClientRect(); + const percent = 100 / rect.width * (event.pageX - rect.left); + event.currentTarget.setAttribute('seek-value', percent); + }); + + // Pause while seeking + this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => { + const seek = event.currentTarget; + const attribute = 'play-on-seeked'; + if (is.keyboardEvent(event) && !['ArrowLeft', 'ArrowRight'].includes(event.key)) { + return; + } + + // Record seek time so we can prevent hiding controls for a few seconds after seek + player.lastSeekTime = Date.now(); + + // Was playing before? + const play = seek.hasAttribute(attribute); + // Done seeking + const done = ['mouseup', 'touchend', 'keyup'].includes(event.type); + + // If we're done seeking and it was playing, resume playback + if (play && done) { + seek.removeAttribute(attribute); + silencePromise(player.play()); + } else if (!done && player.playing) { + seek.setAttribute(attribute, ''); + player.pause(); + } + }); + + // Fix range inputs on iOS + // Super weird iOS bug where after you interact with an , + // it takes over further interactions on the page. This is a hack + if (browser.isIos) { + const inputs = getElements.call(player, 'input[type="range"]'); + Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target))); + } + + // Seek + this.bind(elements.inputs.seek, inputEvent, event => { + const seek = event.currentTarget; + // If it exists, use seek-value instead of "value" for consistency with tooltip time (#954) + let seekTo = seek.getAttribute('seek-value'); + if (is.empty(seekTo)) { + seekTo = seek.value; + } + seek.removeAttribute('seek-value'); + player.currentTime = seekTo / seek.max * player.duration; + }, 'seek'); + + // Seek tooltip + this.bind(elements.progress, 'mouseenter mouseleave mousemove', event => controls.updateSeekTooltip.call(player, event)); + + // Preview thumbnails plugin + // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this + this.bind(elements.progress, 'mousemove touchmove', event => { + const { + previewThumbnails + } = player; + if (previewThumbnails && previewThumbnails.loaded) { + previewThumbnails.startMove(event); + } + }); + + // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering + this.bind(elements.progress, 'mouseleave touchend click', () => { + const { + previewThumbnails + } = player; + if (previewThumbnails && previewThumbnails.loaded) { + previewThumbnails.endMove(false, true); + } + }); + + // Show scrubbing preview + this.bind(elements.progress, 'mousedown touchstart', event => { + const { + previewThumbnails + } = player; + if (previewThumbnails && previewThumbnails.loaded) { + previewThumbnails.startScrubbing(event); + } + }); + this.bind(elements.progress, 'mouseup touchend', event => { + const { + previewThumbnails + } = player; + if (previewThumbnails && previewThumbnails.loaded) { + previewThumbnails.endScrubbing(event); + } + }); + + // Polyfill for lower fill in for webkit + if (browser.isWebKit) { + Array.from(getElements.call(player, 'input[type="range"]')).forEach(element => { + this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target)); + }); + } + + // Current time invert + // Only if one time element is used for both currentTime and duration + if (player.config.toggleInvert && !is.element(elements.display.duration)) { + this.bind(elements.display.currentTime, 'click', () => { + // Do nothing if we're at the start + if (player.currentTime === 0) { + return; + } + player.config.invertTime = !player.config.invertTime; + controls.timeUpdate.call(player); + }); + } + + // Volume + this.bind(elements.inputs.volume, inputEvent, event => { + player.volume = event.target.value; + }, 'volume'); + + // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting) + this.bind(elements.controls, 'mouseenter mouseleave', event => { + elements.controls.hover = !player.touch && event.type === 'mouseenter'; + }); + + // Also update controls.hover state for any non-player children of fullscreen element (as above) + if (elements.fullscreen) { + Array.from(elements.fullscreen.children).filter(c => !c.contains(elements.container)).forEach(child => { + this.bind(child, 'mouseenter mouseleave', event => { + if (elements.controls) { + elements.controls.hover = !player.touch && event.type === 'mouseenter'; + } + }); + }); + } + + // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting) + this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => { + elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type); + }); + + // Show controls when they receive focus (e.g., when using keyboard tab key) + this.bind(elements.controls, 'focusin', () => { + const { + config, + timers + } = player; + + // Skip transition to prevent focus from scrolling the parent element + toggleClass(elements.controls, config.classNames.noTransition, true); + + // Toggle + ui.toggleControls.call(player, true); + + // Restore transition + setTimeout(() => { + toggleClass(elements.controls, config.classNames.noTransition, false); + }, 0); + + // Delay a little more for mouse users + const delay = this.touch ? 3000 : 4000; + + // Clear timer + clearTimeout(timers.controls); + + // Hide again after delay + timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay); + }); + + // Mouse wheel for volume + this.bind(elements.inputs.volume, 'wheel', event => { + // Detect "natural" scroll - supported on OS X Safari only + // Other browsers on OS X will be inverted until support improves + const inverted = event.webkitDirectionInvertedFromDevice; + // Get delta from event. Invert if `inverted` is true + const [x, y] = [event.deltaX, -event.deltaY].map(value => inverted ? -value : value); + // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta) + const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y); + + // Change the volume by 2% + player.increaseVolume(direction / 50); + + // Don't break page scrolling at max and min + const { + volume + } = player.media; + if (direction === 1 && volume < 1 || direction === -1 && volume > 0) { + event.preventDefault(); + } + }, 'volume', false); + }); + this.player = _player; + this.lastKey = null; + this.focusTimer = null; + this.lastKeyDown = null; + this.handleKey = this.handleKey.bind(this); + this.toggleMenu = this.toggleMenu.bind(this); + this.firstTouch = this.firstTouch.bind(this); + } + + // Handle key presses + handleKey(event) { + const { + player + } = this; + const { + elements + } = player; + const { + key, + type, + altKey, + ctrlKey, + metaKey, + shiftKey + } = event; + const pressed = type === 'keydown'; + const repeat = pressed && key === this.lastKey; + + // Bail if a modifier key is set + if (altKey || ctrlKey || metaKey || shiftKey) { + return; + } + + // If the event is bubbled from the media element + // Firefox doesn't get the key for whatever reason + if (!key) { + return; + } + + // Seek by increment + const seekByIncrement = increment => { + // Divide the max duration into 10th's and times by the number value + player.currentTime = player.duration / 10 * increment; + }; + + // Handle the key on keydown + // Reset on keyup + if (pressed) { + // Check focused element + // and if the focused element is not editable (e.g. text input) + // and any that accept key input http://webaim.org/techniques/keyboard/ + const focused = document.activeElement; + if (is.element(focused)) { + const { + editable + } = player.config.selectors; + const { + seek + } = elements.inputs; + if (focused !== seek && matches(focused, editable)) { + return; + } + if (event.key === ' ' && matches(focused, 'button, [role^="menuitem"]')) { + return; + } + } + + // Which keys should we prevent default + const preventDefault = [' ', 'ArrowLeft', 'ArrowUp', 'ArrowRight', 'ArrowDown', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'c', 'f', 'k', 'l', 'm']; + + // If the key is found prevent default (e.g. prevent scrolling for arrows) + if (preventDefault.includes(key)) { + event.preventDefault(); + event.stopPropagation(); + } + switch (key) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (!repeat) { + seekByIncrement(parseInt(key, 10)); + } + break; + case ' ': + case 'k': + if (!repeat) { + silencePromise(player.togglePlay()); + } + break; + case 'ArrowUp': + player.increaseVolume(0.1); + break; + case 'ArrowDown': + player.decreaseVolume(0.1); + break; + case 'm': + if (!repeat) { + player.muted = !player.muted; + } + break; + case 'ArrowRight': + player.forward(); + break; + case 'ArrowLeft': + player.rewind(); + break; + case 'f': + player.fullscreen.toggle(); + break; + case 'c': + if (!repeat) { + player.toggleCaptions(); + } + break; + case 'l': + player.loop = !player.loop; + break; + } + + // Escape is handle natively when in full screen + // So we only need to worry about non native + if (key === 'Escape' && !player.fullscreen.usingNative && player.fullscreen.active) { + player.fullscreen.toggle(); + } + + // Store last key for next cycle + this.lastKey = key; + } else { + this.lastKey = null; + } + } + + // Toggle menu + toggleMenu(event) { + controls.toggleMenu.call(this.player, event); + } + } + + var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; + } + + var loadjs_umd = createCommonjsModule(function (module, exports) { + (function (root, factory) { + { + module.exports = factory(); + } + })(commonjsGlobal, function () { + /** + * Global dependencies. + * @global {Object} document - DOM + */ + + var devnull = function () {}, + bundleIdCache = {}, + bundleResultCache = {}, + bundleCallbackQueue = {}; + + /** + * Subscribe to bundle load event. + * @param {string[]} bundleIds - Bundle ids + * @param {Function} callbackFn - The callback function + */ + function subscribe(bundleIds, callbackFn) { + // listify + bundleIds = bundleIds.push ? bundleIds : [bundleIds]; + var depsNotFound = [], + i = bundleIds.length, + numWaiting = i, + fn, + bundleId, + r, + q; + + // define callback function + fn = function (bundleId, pathsNotFound) { + if (pathsNotFound.length) depsNotFound.push(bundleId); + numWaiting--; + if (!numWaiting) callbackFn(depsNotFound); + }; + + // register callback + while (i--) { + bundleId = bundleIds[i]; + + // execute callback if in result cache + r = bundleResultCache[bundleId]; + if (r) { + fn(bundleId, r); + continue; + } + + // add to callback queue + q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || []; + q.push(fn); + } + } + + /** + * Publish bundle load event. + * @param {string} bundleId - Bundle id + * @param {string[]} pathsNotFound - List of files not found + */ + function publish(bundleId, pathsNotFound) { + // exit if id isn't defined + if (!bundleId) return; + var q = bundleCallbackQueue[bundleId]; + + // cache result + bundleResultCache[bundleId] = pathsNotFound; + + // exit if queue is empty + if (!q) return; + + // empty callback queue + while (q.length) { + q[0](bundleId, pathsNotFound); + q.splice(0, 1); + } + } + + /** + * Execute callbacks. + * @param {Object or Function} args - The callback args + * @param {string[]} depsNotFound - List of dependencies not found + */ + function executeCallbacks(args, depsNotFound) { + // accept function as argument + if (args.call) args = { + success: args + }; + + // success and error callbacks + if (depsNotFound.length) (args.error || devnull)(depsNotFound);else (args.success || devnull)(args); + } + + /** + * Load individual file. + * @param {string} path - The file path + * @param {Function} callbackFn - The callback function + */ + function loadFile(path, callbackFn, args, numTries) { + var doc = document, + async = args.async, + maxTries = (args.numRetries || 0) + 1, + beforeCallbackFn = args.before || devnull, + pathname = path.replace(/[\?|#].*$/, ''), + pathStripped = path.replace(/^(css|img)!/, ''), + isLegacyIECss, + e; + numTries = numTries || 0; + if (/(^css!|\.css$)/.test(pathname)) { + // css + e = doc.createElement('link'); + e.rel = 'stylesheet'; + e.href = pathStripped; + + // tag IE9+ + isLegacyIECss = 'hideFocus' in e; + + // use preload in IE Edge (to detect load errors) + if (isLegacyIECss && e.relList) { + isLegacyIECss = 0; + e.rel = 'preload'; + e.as = 'style'; + } + } else if (/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(pathname)) { + // image + e = doc.createElement('img'); + e.src = pathStripped; + } else { + // javascript + e = doc.createElement('script'); + e.src = path; + e.async = async === undefined ? true : async; + } + e.onload = e.onerror = e.onbeforeload = function (ev) { + var result = ev.type[0]; + + // treat empty stylesheets as failures to get around lack of onerror + // support in IE9-11 + if (isLegacyIECss) { + try { + if (!e.sheet.cssText.length) result = 'e'; + } catch (x) { + // sheets objects created from load errors don't allow access to + // `cssText` (unless error is Code:18 SecurityError) + if (x.code != 18) result = 'e'; + } + } + + // handle retries in case of load failure + if (result == 'e') { + // increment counter + numTries += 1; + + // exit function and try again + if (numTries < maxTries) { + return loadFile(path, callbackFn, args, numTries); + } + } else if (e.rel == 'preload' && e.as == 'style') { + // activate preloaded stylesheets + return e.rel = 'stylesheet'; // jshint ignore:line + } + + // execute callback + callbackFn(path, result, ev.defaultPrevented); + }; + + // add to document (unless callback returns `false`) + if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); + } + + /** + * Load multiple files. + * @param {string[]} paths - The file paths + * @param {Function} callbackFn - The callback function + */ + function loadFiles(paths, callbackFn, args) { + // listify paths + paths = paths.push ? paths : [paths]; + var numWaiting = paths.length, + x = numWaiting, + pathsNotFound = [], + fn, + i; + + // define callback function + fn = function (path, result, defaultPrevented) { + // handle error + if (result == 'e') pathsNotFound.push(path); + + // handle beforeload event. If defaultPrevented then that means the load + // will be blocked (ex. Ghostery/ABP on Safari) + if (result == 'b') { + if (defaultPrevented) pathsNotFound.push(path);else return; + } + numWaiting--; + if (!numWaiting) callbackFn(pathsNotFound); + }; + + // load scripts + for (i = 0; i < x; i++) loadFile(paths[i], fn, args); + } + + /** + * Initiate script load and register bundle. + * @param {(string|string[])} paths - The file paths + * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success + * callback or (3) object literal with success/error arguments, numRetries, + * etc. + * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object + * literal with success/error arguments, numRetries, etc. + */ + function loadjs(paths, arg1, arg2) { + var bundleId, args; + + // bundleId (if string) + if (arg1 && arg1.trim) bundleId = arg1; + + // args (default is {}) + args = (bundleId ? arg2 : arg1) || {}; + + // throw error if bundle is already defined + if (bundleId) { + if (bundleId in bundleIdCache) { + throw "LoadJS"; + } else { + bundleIdCache[bundleId] = true; + } + } + function loadFn(resolve, reject) { + loadFiles(paths, function (pathsNotFound) { + // execute callbacks + executeCallbacks(args, pathsNotFound); + + // resolve Promise + if (resolve) { + executeCallbacks({ + success: resolve, + error: reject + }, pathsNotFound); + } + + // publish bundle load event + publish(bundleId, pathsNotFound); + }, args); + } + if (args.returnPromise) return new Promise(loadFn);else loadFn(); + } + + /** + * Execute callbacks when dependencies have been satisfied. + * @param {(string|string[])} deps - List of bundle ids + * @param {Object} args - success/error arguments + */ + loadjs.ready = function ready(deps, args) { + // subscribe to bundle load event + subscribe(deps, function (depsNotFound) { + // execute callbacks + executeCallbacks(args, depsNotFound); + }); + return loadjs; + }; + + /** + * Manually satisfy bundle dependencies. + * @param {string} bundleId - The bundle id + */ + loadjs.done = function done(bundleId) { + publish(bundleId, []); + }; + + /** + * Reset loadjs dependencies statuses + */ + loadjs.reset = function reset() { + bundleIdCache = {}; + bundleResultCache = {}; + bundleCallbackQueue = {}; + }; + + /** + * Determine if bundle has already been defined + * @param String} bundleId - The bundle id + */ + loadjs.isDefined = function isDefined(bundleId) { + return bundleId in bundleIdCache; + }; + + // export + return loadjs; + }); + }); + + // ========================================================================== + function loadScript(url) { + return new Promise((resolve, reject) => { + loadjs_umd(url, { + success: resolve, + error: reject + }); + }); + } + + // ========================================================================== + + // Parse Vimeo ID from URL + function parseId$1(url) { + if (is.empty(url)) { + return null; + } + if (is.number(Number(url))) { + return url; + } + const regex = /^.*(vimeo.com\/|video\/)(\d+).*/; + return url.match(regex) ? RegExp.$2 : url; + } + + // Try to extract a hash for private videos from the URL + function parseHash(url) { + /* This regex matches a hexadecimal hash if given in any of these forms: + * - [https://player.]vimeo.com/video/{id}/{hash}[?params] + * - [https://player.]vimeo.com/video/{id}?h={hash}[¶ms] + * - [https://player.]vimeo.com/video/{id}?[params]&h={hash} + * - video/{id}/{hash} + * If matched, the hash is available in capture group 4 + */ + const regex = /^.*(vimeo.com\/|video\/)(\d+)(\?.*&*h=|\/)+([\d,a-f]+)/; + const found = url.match(regex); + return found && found.length === 5 ? found[4] : null; + } + + // Set playback state and trigger change (only on actual change) + function assurePlaybackState$1(play) { + if (play && !this.embed.hasPlayed) { + this.embed.hasPlayed = true; + } + if (this.media.paused === play) { + this.media.paused = !play; + triggerEvent.call(this, this.media, play ? 'play' : 'pause'); + } + } + const vimeo = { + setup() { + const player = this; + + // Add embed class for responsive + toggleClass(player.elements.wrapper, player.config.classNames.embed, true); + + // Set speed options from config + player.options.speed = player.config.speed.options; + + // Set intial ratio + setAspectRatio.call(player); + + // Load the SDK if not already + if (!is.object(window.Vimeo)) { + loadScript(player.config.urls.vimeo.sdk).then(() => { + vimeo.ready.call(player); + }).catch(error => { + player.debug.warn('Vimeo SDK (player.js) failed to load', error); + }); + } else { + vimeo.ready.call(player); + } + }, + // API Ready + ready() { + const player = this; + const config = player.config.vimeo; + const { + premium, + referrerPolicy, + ...frameParams + } = config; + // Get the source URL or ID + let source = player.media.getAttribute('src'); + let hash = ''; + // Get from
    if needed + if (is.empty(source)) { + source = player.media.getAttribute(player.config.attributes.embed.id); + // hash can also be set as attribute on the
    + hash = player.media.getAttribute(player.config.attributes.embed.hash); + } else { + hash = parseHash(source); + } + const hashParam = hash ? { + h: hash + } : {}; + + // If the owner has a pro or premium account then we can hide controls etc + if (premium) { + Object.assign(frameParams, { + controls: false, + sidedock: false + }); + } + + // Get Vimeo params for the iframe + const params = buildUrlParams({ + loop: player.config.loop.active, + autoplay: player.autoplay, + muted: player.muted, + gesture: 'media', + playsinline: player.config.playsinline, + // hash has to be added to iframe-URL + ...hashParam, + ...frameParams + }); + const id = parseId$1(source); + // Build an iframe + const iframe = createElement('iframe'); + const src = format(player.config.urls.vimeo.iframe, id, params); + iframe.setAttribute('src', src); + iframe.setAttribute('allowfullscreen', ''); + iframe.setAttribute('allow', ['autoplay', 'fullscreen', 'picture-in-picture', 'encrypted-media', 'accelerometer', 'gyroscope'].join('; ')); + + // Set the referrer policy if required + if (!is.empty(referrerPolicy)) { + iframe.setAttribute('referrerPolicy', referrerPolicy); + } + + // Inject the package + if (premium || !config.customControls) { + iframe.setAttribute('data-poster', player.poster); + player.media = replaceElement(iframe, player.media); + } else { + const wrapper = createElement('div', { + class: player.config.classNames.embedContainer, + 'data-poster': player.poster + }); + wrapper.appendChild(iframe); + player.media = replaceElement(wrapper, player.media); + } + + // Get poster image + if (!config.customControls) { + fetch(format(player.config.urls.vimeo.api, src)).then(response => { + if (is.empty(response) || !response.thumbnail_url) { + return; + } + + // Set and show poster + ui.setPoster.call(player, response.thumbnail_url).catch(() => {}); + }); + } + + // Setup instance + // https://github.com/vimeo/player.js + player.embed = new window.Vimeo.Player(iframe, { + autopause: player.config.autopause, + muted: player.muted + }); + player.media.paused = true; + player.media.currentTime = 0; + + // Disable native text track rendering + if (player.supported.ui) { + player.embed.disableTextTrack(); + } + + // Create a faux HTML5 API using the Vimeo API + player.media.play = () => { + assurePlaybackState$1.call(player, true); + return player.embed.play(); + }; + player.media.pause = () => { + assurePlaybackState$1.call(player, false); + return player.embed.pause(); + }; + player.media.stop = () => { + player.pause(); + player.currentTime = 0; + }; + + // Seeking + let { + currentTime + } = player.media; + Object.defineProperty(player.media, 'currentTime', { + get() { + return currentTime; + }, + set(time) { + // Vimeo will automatically play on seek if the video hasn't been played before + + // Get current paused state and volume etc + const { + embed, + media, + paused, + volume + } = player; + const restorePause = paused && !embed.hasPlayed; + + // Set seeking state and trigger event + media.seeking = true; + triggerEvent.call(player, media, 'seeking'); + + // If paused, mute until seek is complete + Promise.resolve(restorePause && embed.setVolume(0)) + // Seek + .then(() => embed.setCurrentTime(time)) + // Restore paused + .then(() => restorePause && embed.pause()) + // Restore volume + .then(() => restorePause && embed.setVolume(volume)).catch(() => { + // Do nothing + }); + } + }); + + // Playback speed + let speed = player.config.speed.selected; + Object.defineProperty(player.media, 'playbackRate', { + get() { + return speed; + }, + set(input) { + player.embed.setPlaybackRate(input).then(() => { + speed = input; + triggerEvent.call(player, player.media, 'ratechange'); + }).catch(() => { + // Cannot set Playback Rate, Video is probably not on Pro account + player.options.speed = [1]; + }); + } + }); + + // Volume + let { + volume + } = player.config; + Object.defineProperty(player.media, 'volume', { + get() { + return volume; + }, + set(input) { + player.embed.setVolume(input).then(() => { + volume = input; + triggerEvent.call(player, player.media, 'volumechange'); + }); + } + }); + + // Muted + let { + muted + } = player.config; + Object.defineProperty(player.media, 'muted', { + get() { + return muted; + }, + set(input) { + const toggle = is.boolean(input) ? input : false; + player.embed.setMuted(toggle ? true : player.config.muted).then(() => { + muted = toggle; + triggerEvent.call(player, player.media, 'volumechange'); + }); + } + }); + + // Loop + let { + loop + } = player.config; + Object.defineProperty(player.media, 'loop', { + get() { + return loop; + }, + set(input) { + const toggle = is.boolean(input) ? input : player.config.loop.active; + player.embed.setLoop(toggle).then(() => { + loop = toggle; + }); + } + }); + + // Source + let currentSrc; + player.embed.getVideoUrl().then(value => { + currentSrc = value; + controls.setDownloadUrl.call(player); + }).catch(error => { + this.debug.warn(error); + }); + Object.defineProperty(player.media, 'currentSrc', { + get() { + return currentSrc; + } + }); + + // Ended + Object.defineProperty(player.media, 'ended', { + get() { + return player.currentTime === player.duration; + } + }); + + // Set aspect ratio based on video size + Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(dimensions => { + const [width, height] = dimensions; + player.embed.ratio = roundAspectRatio(width, height); + setAspectRatio.call(this); + }); + + // Set autopause + player.embed.setAutopause(player.config.autopause).then(state => { + player.config.autopause = state; + }); + + // Get title + player.embed.getVideoTitle().then(title => { + player.config.title = title; + ui.setTitle.call(this); + }); + + // Get current time + player.embed.getCurrentTime().then(value => { + currentTime = value; + triggerEvent.call(player, player.media, 'timeupdate'); + }); + + // Get duration + player.embed.getDuration().then(value => { + player.media.duration = value; + triggerEvent.call(player, player.media, 'durationchange'); + }); + + // Get captions + player.embed.getTextTracks().then(tracks => { + player.media.textTracks = tracks; + captions.setup.call(player); + }); + player.embed.on('cuechange', ({ + cues = [] + }) => { + const strippedCues = cues.map(cue => stripHTML(cue.text)); + captions.updateCues.call(player, strippedCues); + }); + player.embed.on('loaded', () => { + // Assure state and events are updated on autoplay + player.embed.getPaused().then(paused => { + assurePlaybackState$1.call(player, !paused); + if (!paused) { + triggerEvent.call(player, player.media, 'playing'); + } + }); + if (is.element(player.embed.element) && player.supported.ui) { + const frame = player.embed.element; + + // Fix keyboard focus issues + // https://github.com/sampotts/plyr/issues/317 + frame.setAttribute('tabindex', -1); + } + }); + player.embed.on('bufferstart', () => { + triggerEvent.call(player, player.media, 'waiting'); + }); + player.embed.on('bufferend', () => { + triggerEvent.call(player, player.media, 'playing'); + }); + player.embed.on('play', () => { + assurePlaybackState$1.call(player, true); + triggerEvent.call(player, player.media, 'playing'); + }); + player.embed.on('pause', () => { + assurePlaybackState$1.call(player, false); + }); + player.embed.on('timeupdate', data => { + player.media.seeking = false; + currentTime = data.seconds; + triggerEvent.call(player, player.media, 'timeupdate'); + }); + player.embed.on('progress', data => { + player.media.buffered = data.percent; + triggerEvent.call(player, player.media, 'progress'); + + // Check all loaded + if (parseInt(data.percent, 10) === 1) { + triggerEvent.call(player, player.media, 'canplaythrough'); + } + + // Get duration as if we do it before load, it gives an incorrect value + // https://github.com/sampotts/plyr/issues/891 + player.embed.getDuration().then(value => { + if (value !== player.media.duration) { + player.media.duration = value; + triggerEvent.call(player, player.media, 'durationchange'); + } + }); + }); + player.embed.on('seeked', () => { + player.media.seeking = false; + triggerEvent.call(player, player.media, 'seeked'); + }); + player.embed.on('ended', () => { + player.media.paused = true; + triggerEvent.call(player, player.media, 'ended'); + }); + player.embed.on('error', detail => { + player.media.error = detail; + triggerEvent.call(player, player.media, 'error'); + }); + + // Rebuild UI + if (config.customControls) { + setTimeout(() => ui.build.call(player), 0); + } + } + }; + + // ========================================================================== + + // Parse YouTube ID from URL + function parseId(url) { + if (is.empty(url)) { + return null; + } + const regex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/; + return url.match(regex) ? RegExp.$2 : url; + } + + // Set playback state and trigger change (only on actual change) + function assurePlaybackState(play) { + if (play && !this.embed.hasPlayed) { + this.embed.hasPlayed = true; + } + if (this.media.paused === play) { + this.media.paused = !play; + triggerEvent.call(this, this.media, play ? 'play' : 'pause'); + } + } + function getHost(config) { + if (config.noCookie) { + return 'https://www.youtube-nocookie.com'; + } + if (window.location.protocol === 'http:') { + return 'http://www.youtube.com'; + } + + // Use YouTube's default + return undefined; + } + const youtube = { + setup() { + // Add embed class for responsive + toggleClass(this.elements.wrapper, this.config.classNames.embed, true); + + // Setup API + if (is.object(window.YT) && is.function(window.YT.Player)) { + youtube.ready.call(this); + } else { + // Reference current global callback + const callback = window.onYouTubeIframeAPIReady; + + // Set callback to process queue + window.onYouTubeIframeAPIReady = () => { + // Call global callback if set + if (is.function(callback)) { + callback(); + } + youtube.ready.call(this); + }; + + // Load the SDK + loadScript(this.config.urls.youtube.sdk).catch(error => { + this.debug.warn('YouTube API failed to load', error); + }); + } + }, + // Get the media title + getTitle(videoId) { + const url = format(this.config.urls.youtube.api, videoId); + fetch(url).then(data => { + if (is.object(data)) { + const { + title, + height, + width + } = data; + + // Set title + this.config.title = title; + ui.setTitle.call(this); + + // Set aspect ratio + this.embed.ratio = roundAspectRatio(width, height); + } + setAspectRatio.call(this); + }).catch(() => { + // Set aspect ratio + setAspectRatio.call(this); + }); + }, + // API ready + ready() { + const player = this; + const config = player.config.youtube; + // Ignore already setup (race condition) + const currentId = player.media && player.media.getAttribute('id'); + if (!is.empty(currentId) && currentId.startsWith('youtube-')) { + return; + } + + // Get the source URL or ID + let source = player.media.getAttribute('src'); + + // Get from
    if needed + if (is.empty(source)) { + source = player.media.getAttribute(this.config.attributes.embed.id); + } + + // Replace the '; + } + }; + const getFlashHtml = data => { + let html = ''; + if (data.poster) { + html += ''; + } + html += ''; + return html; + }; + const getAudioHtml = (data, audioTemplateCallback) => { + if (audioTemplateCallback) { + return audioTemplateCallback(data); + } else { + return ''; + } + }; + const getVideoHtml = (data, videoTemplateCallback) => { + if (videoTemplateCallback) { + return videoTemplateCallback(data); + } else { + return ''; + } + }; + const getScriptHtml = data => { + return ''; + }; + const dataToHtml = (editor, dataIn) => { + var _a; + const data = global$5.extend({}, dataIn); + if (!data.source) { + global$5.extend(data, htmlToData((_a = data.embed) !== null && _a !== void 0 ? _a : '', editor.schema)); + if (!data.source) { + return ''; + } + } + if (!data.altsource) { + data.altsource = ''; + } + if (!data.poster) { + data.poster = ''; + } + data.source = editor.convertURL(data.source, 'source'); + data.altsource = editor.convertURL(data.altsource, 'source'); + data.sourcemime = guess(data.source); + data.altsourcemime = guess(data.altsource); + data.poster = editor.convertURL(data.poster, 'poster'); + const pattern = matchPattern(data.source); + if (pattern) { + data.source = pattern.url; + data.type = pattern.type; + data.allowfullscreen = pattern.allowFullscreen; + data.width = data.width || String(pattern.w); + data.height = data.height || String(pattern.h); + } + if (data.embed) { + return updateHtml(data.embed, data, true, editor.schema); + } else { + const audioTemplateCallback = getAudioTemplateCallback(editor); + const videoTemplateCallback = getVideoTemplateCallback(editor); + const iframeTemplateCallback = getIframeTemplateCallback(editor); + data.width = data.width || '300'; + data.height = data.height || '150'; + global$5.each(data, (value, key) => { + data[key] = editor.dom.encode('' + value); + }); + if (data.type === 'iframe') { + return getIframeHtml(data, iframeTemplateCallback); + } else if (data.sourcemime === 'application/x-shockwave-flash') { + return getFlashHtml(data); + } else if (data.sourcemime.indexOf('audio') !== -1) { + return getAudioHtml(data, audioTemplateCallback); + } else if (data.type === 'script') { + return getScriptHtml(data); + } else { + return getVideoHtml(data, videoTemplateCallback); + } + } + }; + + const isMediaElement = element => element.hasAttribute('data-mce-object') || element.hasAttribute('data-ephox-embed-iri'); + const setup$2 = editor => { + editor.on('click keyup touchend', () => { + const selectedNode = editor.selection.getNode(); + if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) { + if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) { + selectedNode.setAttribute('data-mce-selected', '2'); + } + } + }); + editor.on('ObjectSelected', e => { + const objectType = e.target.getAttribute('data-mce-object'); + if (objectType === 'script') { + e.preventDefault(); + } + }); + editor.on('ObjectResized', e => { + const target = e.target; + if (target.getAttribute('data-mce-object')) { + let html = target.getAttribute('data-mce-html'); + if (html) { + html = unescape(html); + target.setAttribute('data-mce-html', escape(updateHtml(html, { + width: String(e.width), + height: String(e.height) + }, false, editor.schema))); + } + } + }); + }; + + const cache = {}; + const embedPromise = (data, dataToHtml, handler) => { + return new Promise((res, rej) => { + const wrappedResolve = response => { + if (response.html) { + cache[data.source] = response; + } + return res({ + url: data.source, + html: response.html ? response.html : dataToHtml(data) + }); + }; + if (cache[data.source]) { + wrappedResolve(cache[data.source]); + } else { + handler({ url: data.source }, wrappedResolve, rej); + } + }); + }; + const defaultPromise = (data, dataToHtml) => Promise.resolve({ + html: dataToHtml(data), + url: data.source + }); + const loadedData = editor => data => dataToHtml(editor, data); + const getEmbedHtml = (editor, data) => { + const embedHandler = getUrlResolver(editor); + return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor)); + }; + const isCached = url => has(cache, url); + + const extractMeta = (sourceInput, data) => get$1(data, sourceInput).bind(mainData => get$1(mainData, 'meta')); + const getValue = (data, metaData, sourceInput) => prop => { + const getFromData = () => get$1(data, prop); + const getFromMetaData = () => get$1(metaData, prop); + const getNonEmptyValue = c => get$1(c, 'value').bind(v => v.length > 0 ? Optional.some(v) : Optional.none()); + const getFromValueFirst = () => getFromData().bind(child => isObject(child) ? getNonEmptyValue(child).orThunk(getFromMetaData) : getFromMetaData().orThunk(() => Optional.from(child))); + const getFromMetaFirst = () => getFromMetaData().orThunk(() => getFromData().bind(child => isObject(child) ? getNonEmptyValue(child) : Optional.from(child))); + return { [prop]: (prop === sourceInput ? getFromValueFirst() : getFromMetaFirst()).getOr('') }; + }; + const getDimensions = (data, metaData) => { + const dimensions = {}; + get$1(data, 'dimensions').each(dims => { + each$1([ + 'width', + 'height' + ], prop => { + get$1(metaData, prop).orThunk(() => get$1(dims, prop)).each(value => dimensions[prop] = value); + }); + }); + return dimensions; + }; + const unwrap = (data, sourceInput) => { + const metaData = sourceInput && sourceInput !== 'dimensions' ? extractMeta(sourceInput, data).getOr({}) : {}; + const get = getValue(data, metaData, sourceInput); + return { + ...get('source'), + ...get('altsource'), + ...get('poster'), + ...get('embed'), + ...getDimensions(data, metaData) + }; + }; + const wrap = data => { + const wrapped = { + ...data, + source: { value: get$1(data, 'source').getOr('') }, + altsource: { value: get$1(data, 'altsource').getOr('') }, + poster: { value: get$1(data, 'poster').getOr('') } + }; + each$1([ + 'width', + 'height' + ], prop => { + get$1(data, prop).each(value => { + const dimensions = wrapped.dimensions || {}; + dimensions[prop] = value; + wrapped.dimensions = dimensions; + }); + }); + return wrapped; + }; + const handleError = editor => error => { + const errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.'; + editor.notificationManager.open({ + type: 'error', + text: errorMessage + }); + }; + const getEditorData = editor => { + const element = editor.selection.getNode(); + const snippet = isMediaElement(element) ? editor.serializer.serialize(element, { selection: true }) : ''; + return { + embed: snippet, + ...htmlToData(snippet, editor.schema) + }; + }; + const addEmbedHtml = (api, editor) => response => { + if (isString(response.url) && response.url.trim().length > 0) { + const html = response.html; + const snippetData = htmlToData(html, editor.schema); + const nuData = { + ...snippetData, + source: response.url, + embed: html + }; + api.setData(wrap(nuData)); + } + }; + const selectPlaceholder = (editor, beforeObjects) => { + const afterObjects = editor.dom.select('*[data-mce-object]'); + for (let i = 0; i < beforeObjects.length; i++) { + for (let y = afterObjects.length - 1; y >= 0; y--) { + if (beforeObjects[i] === afterObjects[y]) { + afterObjects.splice(y, 1); + } + } + } + editor.selection.select(afterObjects[0]); + }; + const handleInsert = (editor, html) => { + const beforeObjects = editor.dom.select('*[data-mce-object]'); + editor.insertContent(html); + selectPlaceholder(editor, beforeObjects); + editor.nodeChanged(); + }; + const submitForm = (prevData, newData, editor) => { + var _a; + newData.embed = updateHtml((_a = newData.embed) !== null && _a !== void 0 ? _a : '', newData, false, editor.schema); + if (newData.embed && (prevData.source === newData.source || isCached(newData.source))) { + handleInsert(editor, newData.embed); + } else { + getEmbedHtml(editor, newData).then(response => { + handleInsert(editor, response.html); + }).catch(handleError(editor)); + } + }; + const showDialog = editor => { + const editorData = getEditorData(editor); + const currentData = Cell(editorData); + const initialData = wrap(editorData); + const handleSource = (prevData, api) => { + const serviceData = unwrap(api.getData(), 'source'); + if (prevData.source !== serviceData.source) { + addEmbedHtml(win, editor)({ + url: serviceData.source, + html: '' + }); + getEmbedHtml(editor, serviceData).then(addEmbedHtml(win, editor)).catch(handleError(editor)); + } + }; + const handleEmbed = api => { + var _a; + const data = unwrap(api.getData()); + const dataFromEmbed = htmlToData((_a = data.embed) !== null && _a !== void 0 ? _a : '', editor.schema); + api.setData(wrap(dataFromEmbed)); + }; + const handleUpdate = (api, sourceInput) => { + const data = unwrap(api.getData(), sourceInput); + const embed = dataToHtml(editor, data); + api.setData(wrap({ + ...data, + embed + })); + }; + const mediaInput = [{ + name: 'source', + type: 'urlinput', + filetype: 'media', + label: 'Source' + }]; + const sizeInput = !hasDimensions(editor) ? [] : [{ + type: 'sizeinput', + name: 'dimensions', + label: 'Constrain proportions', + constrain: true + }]; + const generalTab = { + title: 'General', + name: 'general', + items: flatten([ + mediaInput, + sizeInput + ]) + }; + const embedTextarea = { + type: 'textarea', + name: 'embed', + label: 'Paste your embed code below:' + }; + const embedTab = { + title: 'Embed', + items: [embedTextarea] + }; + const advancedFormItems = []; + if (hasAltSource(editor)) { + advancedFormItems.push({ + name: 'altsource', + type: 'urlinput', + filetype: 'media', + label: 'Alternative source URL' + }); + } + if (hasPoster(editor)) { + advancedFormItems.push({ + name: 'poster', + type: 'urlinput', + filetype: 'image', + label: 'Media poster (Image URL)' + }); + } + const advancedTab = { + title: 'Advanced', + name: 'advanced', + items: advancedFormItems + }; + const tabs = [ + generalTab, + embedTab + ]; + if (advancedFormItems.length > 0) { + tabs.push(advancedTab); + } + const body = { + type: 'tabpanel', + tabs + }; + const win = editor.windowManager.open({ + title: 'Insert/Edit Media', + size: 'normal', + body, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + onSubmit: api => { + const serviceData = unwrap(api.getData()); + submitForm(currentData.get(), serviceData, editor); + api.close(); + }, + onChange: (api, detail) => { + switch (detail.name) { + case 'source': + handleSource(currentData.get(), api); + break; + case 'embed': + handleEmbed(api); + break; + case 'dimensions': + case 'altsource': + case 'poster': + handleUpdate(api, detail.name); + break; + } + currentData.set(unwrap(api.getData())); + }, + initialData + }); + }; + + const get = editor => { + const showDialog$1 = () => { + showDialog(editor); + }; + return { showDialog: showDialog$1 }; + }; + + const register$1 = editor => { + const showDialog$1 = () => { + showDialog(editor); + }; + editor.addCommand('mceMedia', showDialog$1); + }; + + const checkRange = (str, substr, start) => substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr; + const startsWith = (str, prefix) => { + return checkRange(str, prefix, 0); + }; + + var global = tinymce.util.Tools.resolve('tinymce.Env'); + + const isLiveEmbedNode = node => { + const name = node.name; + return name === 'iframe' || name === 'video' || name === 'audio'; + }; + const getDimension = (node, styles, dimension, defaultValue = null) => { + const value = node.attr(dimension); + if (isNonNullable(value)) { + return value; + } else if (!has(styles, dimension)) { + return defaultValue; + } else { + return null; + } + }; + const setDimensions = (node, previewNode, styles) => { + const useDefaults = previewNode.name === 'img' || node.name === 'video'; + const defaultWidth = useDefaults ? '300' : null; + const fallbackHeight = node.name === 'audio' ? '30' : '150'; + const defaultHeight = useDefaults ? fallbackHeight : null; + previewNode.attr({ + width: getDimension(node, styles, 'width', defaultWidth), + height: getDimension(node, styles, 'height', defaultHeight) + }); + }; + const appendNodeContent = (editor, nodeName, previewNode, html) => { + const newNode = Parser(editor.schema).parse(html, { context: nodeName }); + while (newNode.firstChild) { + previewNode.append(newNode.firstChild); + } + }; + const createPlaceholderNode = (editor, node) => { + const name = node.name; + const placeHolder = new global$2('img', 1); + retainAttributesAndInnerHtml(editor, node, placeHolder); + setDimensions(node, placeHolder, {}); + placeHolder.attr({ + 'style': node.attr('style'), + 'src': global.transparentSrc, + 'data-mce-object': name, + 'class': 'mce-object mce-object-' + name + }); + return placeHolder; + }; + const createPreviewNode = (editor, node) => { + var _a; + const name = node.name; + const previewWrapper = new global$2('span', 1); + previewWrapper.attr({ + 'contentEditable': 'false', + 'style': node.attr('style'), + 'data-mce-object': name, + 'class': 'mce-preview-object mce-object-' + name + }); + retainAttributesAndInnerHtml(editor, node, previewWrapper); + const styles = editor.dom.parseStyle((_a = node.attr('style')) !== null && _a !== void 0 ? _a : ''); + const previewNode = new global$2(name, 1); + setDimensions(node, previewNode, styles); + previewNode.attr({ + src: node.attr('src'), + style: node.attr('style'), + class: node.attr('class') + }); + if (name === 'iframe') { + previewNode.attr({ + allowfullscreen: node.attr('allowfullscreen'), + frameborder: '0' + }); + } else { + const attrs = [ + 'controls', + 'crossorigin', + 'currentTime', + 'loop', + 'muted', + 'poster', + 'preload' + ]; + each$1(attrs, attrName => { + previewNode.attr(attrName, node.attr(attrName)); + }); + const sanitizedHtml = previewWrapper.attr('data-mce-html'); + if (isNonNullable(sanitizedHtml)) { + appendNodeContent(editor, name, previewNode, unescape(sanitizedHtml)); + } + } + const shimNode = new global$2('span', 1); + shimNode.attr('class', 'mce-shim'); + previewWrapper.append(previewNode); + previewWrapper.append(shimNode); + return previewWrapper; + }; + const retainAttributesAndInnerHtml = (editor, sourceNode, targetNode) => { + var _a; + const attribs = (_a = sourceNode.attributes) !== null && _a !== void 0 ? _a : []; + let ai = attribs.length; + while (ai--) { + const attrName = attribs[ai].name; + let attrValue = attribs[ai].value; + if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style' && !startsWith(attrName, 'data-mce-')) { + if (attrName === 'data' || attrName === 'src') { + attrValue = editor.convertURL(attrValue, attrName); + } + targetNode.attr('data-mce-p-' + attrName, attrValue); + } + } + const serializer = global$1({ inner: true }, editor.schema); + const tempNode = new global$2('div', 1); + each$1(sourceNode.children(), child => tempNode.append(child)); + const innerHtml = serializer.serialize(tempNode); + if (innerHtml) { + targetNode.attr('data-mce-html', escape(innerHtml)); + targetNode.empty(); + } + }; + const isPageEmbedWrapper = node => { + const nodeClass = node.attr('class'); + return isString(nodeClass) && /\btiny-pageembed\b/.test(nodeClass); + }; + const isWithinEmbedWrapper = node => { + let tempNode = node; + while (tempNode = tempNode.parent) { + if (tempNode.attr('data-ephox-embed-iri') || isPageEmbedWrapper(tempNode)) { + return true; + } + } + return false; + }; + const placeHolderConverter = editor => nodes => { + let i = nodes.length; + let node; + while (i--) { + node = nodes[i]; + if (!node.parent) { + continue; + } + if (node.parent.attr('data-mce-object')) { + continue; + } + if (isLiveEmbedNode(node) && hasLiveEmbeds(editor)) { + if (!isWithinEmbedWrapper(node)) { + node.replace(createPreviewNode(editor, node)); + } + } else { + if (!isWithinEmbedWrapper(node)) { + node.replace(createPlaceholderNode(editor, node)); + } + } + } + }; + + const parseAndSanitize = (editor, context, html) => { + const getEditorOption = editor.options.get; + const sanitize = getEditorOption('xss_sanitization'); + const validate = shouldFilterHtml(editor); + return Parser(editor.schema, { + sanitize, + validate + }).parse(html, { context }); + }; + + const setup$1 = editor => { + editor.on('PreInit', () => { + const {schema, serializer, parser} = editor; + const boolAttrs = schema.getBoolAttrs(); + each$1('webkitallowfullscreen mozallowfullscreen'.split(' '), name => { + boolAttrs[name] = {}; + }); + each({ embed: ['wmode'] }, (attrs, name) => { + const rule = schema.getElementRule(name); + if (rule) { + each$1(attrs, attr => { + rule.attributes[attr] = {}; + rule.attributesOrder.push(attr); + }); + } + }); + parser.addNodeFilter('iframe,video,audio,object,embed,script', placeHolderConverter(editor)); + serializer.addAttributeFilter('data-mce-object', (nodes, name) => { + var _a; + let i = nodes.length; + while (i--) { + const node = nodes[i]; + if (!node.parent) { + continue; + } + const realElmName = node.attr(name); + const realElm = new global$2(realElmName, 1); + if (realElmName !== 'audio' && realElmName !== 'script') { + const className = node.attr('class'); + if (className && className.indexOf('mce-preview-object') !== -1 && node.firstChild) { + realElm.attr({ + width: node.firstChild.attr('width'), + height: node.firstChild.attr('height') + }); + } else { + realElm.attr({ + width: node.attr('width'), + height: node.attr('height') + }); + } + } + realElm.attr({ style: node.attr('style') }); + const attribs = (_a = node.attributes) !== null && _a !== void 0 ? _a : []; + let ai = attribs.length; + while (ai--) { + const attrName = attribs[ai].name; + if (attrName.indexOf('data-mce-p-') === 0) { + realElm.attr(attrName.substr(11), attribs[ai].value); + } + } + if (realElmName === 'script') { + realElm.attr('type', 'text/javascript'); + } + const innerHtml = node.attr('data-mce-html'); + if (innerHtml) { + const fragment = parseAndSanitize(editor, realElmName, unescape(innerHtml)); + each$1(fragment.children(), child => realElm.append(child)); + } + node.replace(realElm); + } + }); + }); + editor.on('SetContent', () => { + const dom = editor.dom; + each$1(dom.select('span.mce-preview-object'), elm => { + if (dom.select('span.mce-shim', elm).length === 0) { + dom.add(elm, 'span', { class: 'mce-shim' }); + } + }); + }); + }; + + const setup = editor => { + editor.on('ResolveName', e => { + let name; + if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) { + e.name = name; + } + }); + }; + + const register = editor => { + const onAction = () => editor.execCommand('mceMedia'); + editor.ui.registry.addToggleButton('media', { + tooltip: 'Insert/edit media', + icon: 'embed', + onAction, + onSetup: buttonApi => { + const selection = editor.selection; + buttonApi.setActive(isMediaElement(selection.getNode())); + return selection.selectorChangedWithUnbind('img[data-mce-object],span[data-mce-object],div[data-ephox-embed-iri]', buttonApi.setActive).unbind; + } + }); + editor.ui.registry.addMenuItem('media', { + icon: 'embed', + text: 'Media...', + onAction + }); + }; + + var Plugin = () => { + global$6.add('media', editor => { + register$2(editor); + register$1(editor); + register(editor); + setup(editor); + setup$1(editor); + setup$2(editor); + return get(editor); + }); + }; + + Plugin(); + +})(); diff --git a/gin_ops/static/dist/libs/tinymce/plugins/media/plugin.min.js b/gin_ops/static/dist/libs/tinymce/plugins/media/plugin.min.js new file mode 100644 index 0000000..340c0a3 --- /dev/null +++ b/gin_ops/static/dist/libs/tinymce/plugins/media/plugin.min.js @@ -0,0 +1,4 @@ +/** + * TinyMCE version 6.4.2 (2023-04-26) + */ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(r=a=e,(o=String).prototype.isPrototypeOf(r)||(null===(s=a.constructor)||void 0===s?void 0:s.name)===o.name)?"string":t;var r,a,o,s})(t)===e,r=t("string"),a=t("object"),o=t("array"),s=e=>!(e=>null==e)(e);class i{constructor(e,t){this.tag=e,this.value=t}static some(e){return new i(!0,e)}static none(){return i.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?i.some(e(this.value)):i.none()}bind(e){return this.tag?e(this.value):i.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:i.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return s(e)?i.some(e):i.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}i.singletonNone=new i(!1);const n=Array.prototype.push,c=(e,t)=>{for(let r=0,a=e.length;r{const t=[];for(let r=0,a=e.length;rh(e,t)?i.from(e[t]):i.none(),h=(e,t)=>u.call(e,t),p=e=>t=>t.options.get(e),g=p("audio_template_callback"),b=p("video_template_callback"),w=p("iframe_template_callback"),v=p("media_live_embeds"),f=p("media_filter_html"),y=p("media_url_resolver"),x=p("media_alt_source"),_=p("media_poster"),j=p("media_dimensions");var k=tinymce.util.Tools.resolve("tinymce.util.Tools"),O=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),A=tinymce.util.Tools.resolve("tinymce.html.DomParser");const S=O.DOM,C=e=>e.replace(/px$/,""),D=e=>{const t=e.attr("style"),r=t?S.parseStyle(t):{};return{type:"ephox-embed-iri",source:e.attr("data-ephox-embed-iri"),altsource:"",poster:"",width:d(r,"max-width").map(C).getOr(""),height:d(r,"max-height").map(C).getOr("")}},T=(e,t)=>{let r={};for(let a=A({validate:!1,forced_root_block:!1},t).parse(e);a;a=a.walk())if(1===a.type){const e=a.name;if(a.attr("data-ephox-embed-iri")){r=D(a);break}r.source||"param"!==e||(r.source=a.attr("movie")),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(r.type||(r.type=e),r=k.extend(a.attributes.map,r)),"script"===e&&(r={type:"script",source:a.attr("src")}),"source"===e&&(r.source?r.altsource||(r.altsource=a.attr("src")):r.source=a.attr("src")),"img"!==e||r.poster||(r.poster=a.attr("src"))}return r.source=r.source||r.src||"",r.altsource=r.altsource||"",r.poster=r.poster||"",r},z=e=>{var t;const r=null!==(t=e.toLowerCase().split(".").pop())&&void 0!==t?t:"";return d({mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"},r).getOr("")};var $=tinymce.util.Tools.resolve("tinymce.html.Node"),M=tinymce.util.Tools.resolve("tinymce.html.Serializer");const F=(e,t={})=>A({forced_root_block:!1,validate:!1,allow_conditional_comments:!0,...t},e),N=O.DOM,R=e=>/^[0-9.]+$/.test(e)?e+"px":e,U=(e,t)=>{const r=t.attr("style"),a=r?N.parseStyle(r):{};s(e.width)&&(a["max-width"]=R(e.width)),s(e.height)&&(a["max-height"]=R(e.height)),t.attr("style",N.serializeStyle(a))},P=["source","altsource"],E=(e,t,r,a)=>{let o=0,s=0;const i=F(a);i.addNodeFilter("source",(e=>o=e.length));const n=i.parse(e);for(let e=n;e;e=e.walk())if(1===e.type){const a=e.name;if(e.attr("data-ephox-embed-iri")){U(t,e);break}switch(a){case"video":case"object":case"embed":case"img":case"iframe":void 0!==t.height&&void 0!==t.width&&(e.attr("width",t.width),e.attr("height",t.height))}if(r)switch(a){case"video":e.attr("poster",t.poster),e.attr("src",null);for(let r=o;r<2;r++)if(t[P[r]]){const a=new $("source",1);a.attr("src",t[P[r]]),a.attr("type",t[P[r]+"mime"]||null),e.append(a)}break;case"iframe":e.attr("src",t.source);break;case"object":const r=e.getAll("img").length>0;if(t.poster&&!r){e.attr("src",t.poster);const r=new $("img",1);r.attr("src",t.poster),r.attr("width",t.width),r.attr("height",t.height),e.append(r)}break;case"source":if(s<2&&(e.attr("src",t[P[s]]),e.attr("type",t[P[s]+"mime"]||null),!t[P[s]])){e.remove();continue}s++;break;case"img":t.poster||e.remove()}}return M({},a).serialize(n)},L=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$2?title=0&byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],I=(e,t)=>{const r=(e=>{const t=e.match(/^(https?:\/\/|www\.)(.+)$/i);return t&&t.length>1?"www."===t[1]?"https://":t[1]:"https://"})(t),a=e.regex.exec(t);let o=r+e.url;if(s(a))for(let e=0;ea[e]?a[e]:""));return o.replace(/\?$/,"")},B=(e,t)=>{var r;const a=k.extend({},t);if(!a.source&&(k.extend(a,T(null!==(r=a.embed)&&void 0!==r?r:"",e.schema)),!a.source))return"";a.altsource||(a.altsource=""),a.poster||(a.poster=""),a.source=e.convertURL(a.source,"source"),a.altsource=e.convertURL(a.altsource,"source"),a.sourcemime=z(a.source),a.altsourcemime=z(a.altsource),a.poster=e.convertURL(a.poster,"poster");const o=(e=>{const t=L.filter((t=>t.regex.test(e)));return t.length>0?k.extend({},t[0],{url:I(t[0],e)}):null})(a.source);if(o&&(a.source=o.url,a.type=o.type,a.allowfullscreen=o.allowFullscreen,a.width=a.width||String(o.w),a.height=a.height||String(o.h)),a.embed)return E(a.embed,a,!0,e.schema);{const t=g(e),r=b(e),o=w(e);return a.width=a.width||"300",a.height=a.height||"150",k.each(a,((t,r)=>{a[r]=e.dom.encode(""+t)})),"iframe"===a.type?((e,t)=>{if(t)return t(e);{const t=e.allowfullscreen?' allowFullscreen="1"':"";return'"}})(a,o):"application/x-shockwave-flash"===a.sourcemime?(e=>{let t='';return e.poster&&(t+=''),t+="",t})(a):-1!==a.sourcemime.indexOf("audio")?((e,t)=>t?t(e):'")(a,t):"script"===a.type?(e=>' '; + const directionality = editor.getBody().dir; + const dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : ''; + const previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + ''; + return previewHtml; + }; + + const open = editor => { + const content = getPreviewHtml(editor); + const dataApi = editor.windowManager.open({ + title: 'Preview', + size: 'large', + body: { + type: 'panel', + items: [{ + name: 'preview', + type: 'iframe', + sandboxed: true, + transparent: false + }] + }, + buttons: [{ + type: 'cancel', + name: 'close', + text: 'Close', + primary: true + }], + initialData: { preview: content } + }); + dataApi.focus('close'); + }; + + const register$1 = editor => { + editor.addCommand('mcePreview', () => { + open(editor); + }); + }; + + const register = editor => { + const onAction = () => editor.execCommand('mcePreview'); + editor.ui.registry.addButton('preview', { + icon: 'preview', + tooltip: 'Preview', + onAction + }); + editor.ui.registry.addMenuItem('preview', { + icon: 'preview', + text: 'Preview', + onAction + }); + }; + + var Plugin = () => { + global$2.add('preview', editor => { + register$1(editor); + register(editor); + }); + }; + + Plugin(); + +})(); diff --git a/gin_ops/static/dist/libs/tinymce/plugins/preview/plugin.min.js b/gin_ops/static/dist/libs/tinymce/plugins/preview/plugin.min.js new file mode 100644 index 0000000..0a99cf3 --- /dev/null +++ b/gin_ops/static/dist/libs/tinymce/plugins/preview/plugin.min.js @@ -0,0 +1,4 @@ +/** + * TinyMCE version 6.4.2 (2023-04-26) + */ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=e=>t=>t.options.get(e),i=n("content_style"),s=n("content_css_cors"),c=n("body_class"),r=n("body_id");e.add("preview",(e=>{(e=>{e.addCommand("mcePreview",(()=>{(e=>{const n=(e=>{var n;let l="";const a=e.dom.encode,d=null!==(n=i(e))&&void 0!==n?n:"";l+='';const m=s(e)?' crossorigin="anonymous"':"";o.each(e.contentCSS,(t=>{l+='"})),d&&(l+='");const y=r(e),u=c(e),v=' '; + const directionality = editor.getBody().dir; + const dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : ''; + html = '' + '' + '' + '' + contentCssEntries + preventClicksOnLinksScript + '' + '' + parseAndSerialize(editor, html) + '' + ''; + } + return replaceTemplateValues(html, getPreviewReplaceValues(editor)); + }; + const open = (editor, templateList) => { + const createTemplates = () => { + if (!templateList || templateList.length === 0) { + const message = editor.translate('No templates defined.'); + editor.notificationManager.open({ + text: message, + type: 'info' + }); + return Optional.none(); + } + return Optional.from(global$2.map(templateList, (template, index) => { + const isUrlTemplate = t => t.url !== undefined; + return { + selected: index === 0, + text: template.title, + value: { + url: isUrlTemplate(template) ? Optional.from(template.url) : Optional.none(), + content: !isUrlTemplate(template) ? Optional.from(template.content) : Optional.none(), + description: template.description + } + }; + })); + }; + const createSelectBoxItems = templates => map(templates, t => ({ + text: t.text, + value: t.text + })); + const findTemplate = (templates, templateTitle) => find(templates, t => t.text === templateTitle); + const loadFailedAlert = api => { + editor.windowManager.alert('Could not load the specified template.', () => api.focus('template')); + }; + const getTemplateContent = t => t.value.url.fold(() => Promise.resolve(t.value.content.getOr('')), url => fetch(url).then(res => res.ok ? res.text() : Promise.reject())); + const onChange = (templates, updateDialog) => (api, change) => { + if (change.name === 'template') { + const newTemplateTitle = api.getData().template; + findTemplate(templates, newTemplateTitle).each(t => { + api.block('Loading...'); + getTemplateContent(t).then(previewHtml => { + updateDialog(api, t, previewHtml); + }).catch(() => { + updateDialog(api, t, ''); + api.setEnabled('save', false); + loadFailedAlert(api); + }); + }); + } + }; + const onSubmit = templates => api => { + const data = api.getData(); + findTemplate(templates, data.template).each(t => { + getTemplateContent(t).then(previewHtml => { + editor.execCommand('mceInsertTemplate', false, previewHtml); + api.close(); + }).catch(() => { + api.setEnabled('save', false); + loadFailedAlert(api); + }); + }); + }; + const openDialog = templates => { + const selectBoxItems = createSelectBoxItems(templates); + const buildDialogSpec = (bodyItems, initialData) => ({ + title: 'Insert Template', + size: 'large', + body: { + type: 'panel', + items: bodyItems + }, + initialData, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + onSubmit: onSubmit(templates), + onChange: onChange(templates, updateDialog) + }); + const updateDialog = (dialogApi, template, previewHtml) => { + const content = getPreviewContent(editor, previewHtml); + const bodyItems = [ + { + type: 'selectbox', + name: 'template', + label: 'Templates', + items: selectBoxItems + }, + { + type: 'htmlpanel', + html: `

    ${ htmlEscape(template.value.description) }

    ` + }, + { + label: 'Preview', + type: 'iframe', + name: 'preview', + sandboxed: false, + transparent: false + } + ]; + const initialData = { + template: template.text, + preview: content + }; + dialogApi.unblock(); + dialogApi.redial(buildDialogSpec(bodyItems, initialData)); + dialogApi.focus('template'); + }; + const dialogApi = editor.windowManager.open(buildDialogSpec([], { + template: '', + preview: '' + })); + dialogApi.block('Loading...'); + getTemplateContent(templates[0]).then(previewHtml => { + updateDialog(dialogApi, templates[0], previewHtml); + }).catch(() => { + updateDialog(dialogApi, templates[0], ''); + dialogApi.setEnabled('save', false); + loadFailedAlert(dialogApi); + }); + }; + const optTemplates = createTemplates(); + optTemplates.each(openDialog); + }; + + const showDialog = editor => templates => { + open(editor, templates); + }; + const register$1 = editor => { + editor.addCommand('mceInsertTemplate', curry(insertTemplate, editor)); + editor.addCommand('mceTemplate', createTemplateList(editor, showDialog(editor))); + }; + + const setup = editor => { + editor.on('PreProcess', o => { + const dom = editor.dom, dateFormat = getMdateFormat(editor); + global$2.each(dom.select('div', o.node), e => { + if (dom.hasClass(e, 'mceTmpl')) { + global$2.each(dom.select('*', e), e => { + if (hasAnyClasses(dom, e, getModificationDateClasses(editor))) { + e.innerHTML = getDateTime(editor, dateFormat); + } + }); + replaceVals(editor, e); + } + }); + }); + }; + + const register = editor => { + const onAction = () => editor.execCommand('mceTemplate'); + editor.ui.registry.addButton('template', { + icon: 'template', + tooltip: 'Insert template', + onAction + }); + editor.ui.registry.addMenuItem('template', { + icon: 'template', + text: 'Insert template...', + onAction + }); + }; + + var Plugin = () => { + global$3.add('template', editor => { + register$2(editor); + register(editor); + register$1(editor); + setup(editor); + }); + }; + + Plugin(); + +})(); diff --git a/gin_ops/static/dist/libs/tinymce/plugins/template/plugin.min.js b/gin_ops/static/dist/libs/tinymce/plugins/template/plugin.min.js new file mode 100644 index 0000000..343aa7f --- /dev/null +++ b/gin_ops/static/dist/libs/tinymce/plugins/template/plugin.min.js @@ -0,0 +1,4 @@ +/** + * TinyMCE version 6.4.2 (2023-04-26) + */ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(a=n=e,(r=String).prototype.isPrototypeOf(a)||(null===(s=n.constructor)||void 0===s?void 0:s.name)===r.name)?"string":t;var a,n,r,s})(t)===e,a=t("string"),n=t("object"),r=t("array"),s=("function",e=>"function"==typeof e);const l=(!1,()=>false);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");const c=e=>t=>t.options.get(e),i=c("template_cdate_classes"),u=c("template_mdate_classes"),m=c("template_selected_content_classes"),p=c("template_preview_replace_values"),d=c("template_replace_values"),h=c("templates"),g=c("template_cdate_format"),v=c("template_mdate_format"),y=c("content_style"),f=c("content_css_cors"),_=c("body_class"),b=(e,t)=>{if((e=""+e).length{const n="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),s="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),l="January February March April May June July August September October November December".split(" ");return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+a.getFullYear())).replace("%y",""+a.getYear())).replace("%m",b(a.getMonth()+1,2))).replace("%d",b(a.getDate(),2))).replace("%H",""+b(a.getHours(),2))).replace("%M",""+b(a.getMinutes(),2))).replace("%S",""+b(a.getSeconds(),2))).replace("%I",""+((a.getHours()+11)%12+1))).replace("%p",a.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(l[a.getMonth()]))).replace("%b",""+e.translate(s[a.getMonth()]))).replace("%A",""+e.translate(r[a.getDay()]))).replace("%a",""+e.translate(n[a.getDay()]))).replace("%%","%")};class T{constructor(e,t){this.tag=e,this.value=t}static some(e){return new T(!0,e)}static none(){return T.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?T.some(e(this.value)):T.none()}bind(e){return this.tag?e(this.value):T.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:T.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return null==e?T.none():T.some(e)}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}T.singletonNone=new T(!1);const x=Object.hasOwnProperty;var S=tinymce.util.Tools.resolve("tinymce.html.Serializer");const w={'"':""","<":"<",">":">","&":"&","'":"'"},C=e=>e.replace(/["'<>&]/g,(e=>{return(t=w,a=e,((e,t)=>x.call(e,t))(t,a)?T.from(t[a]):T.none()).getOr(e);var t,a})),O=(e,t,a)=>((a,n)=>{for(let n=0,s=a.length;nS({validate:!0},e.schema).serialize(e.parser.parse(t,{insert:!0})),D=(e,t)=>(o.each(t,((t,a)=>{s(t)&&(t=t(a)),e=e.replace(new RegExp("\\{\\$"+a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\}","g"),t)})),e),I=(e,t)=>{const a=e.dom,n=d(e);o.each(a.select("*",t),(e=>{o.each(n,((t,n)=>{a.hasClass(e,n)&&s(t)&&t(e)}))}))},N=(e,t,a)=>{const n=e.dom,r=e.selection.getContent();a=D(a,d(e));let s=n.create("div",{},A(e,a));const l=n.select(".mceTmpl",s);l&&l.length>0&&(s=n.create("div"),s.appendChild(l[0].cloneNode(!0))),o.each(n.select("*",s),(t=>{O(n,t,i(e))&&(t.innerHTML=M(e,g(e))),O(n,t,u(e))&&(t.innerHTML=M(e,v(e))),O(n,t,m(e))&&(t.innerHTML=r)})),I(e,s),e.execCommand("mceInsertContent",!1,s.innerHTML),e.addVisual()};var k=tinymce.util.Tools.resolve("tinymce.Env");const P=(e,t)=>{const a=(e,t)=>((e,t,a)=>{for(let n=0,r=e.length;ne.text===t),l),n=t=>{e.windowManager.alert("Could not load the specified template.",(()=>t.focus("template")))},r=e=>e.value.url.fold((()=>Promise.resolve(e.value.content.getOr(""))),(e=>fetch(e).then((e=>e.ok?e.text():Promise.reject())))),s=(e,t)=>(s,l)=>{if("template"===l.name){const l=s.getData().template;a(e,l).each((e=>{s.block("Loading..."),r(e).then((a=>{t(s,e,a)})).catch((()=>{t(s,e,""),s.setEnabled("save",!1),n(s)}))}))}},c=t=>s=>{const l=s.getData();a(t,l.template).each((t=>{r(t).then((t=>{e.execCommand("mceInsertTemplate",!1,t),s.close()})).catch((()=>{s.setEnabled("save",!1),n(s)}))}))};(()=>{if(!t||0===t.length){const t=e.translate("No templates defined.");return e.notificationManager.open({text:t,type:"info"}),T.none()}return T.from(o.map(t,((e,t)=>{const a=e=>void 0!==e.url;return{selected:0===t,text:e.title,value:{url:a(e)?T.from(e.url):T.none(),content:a(e)?T.none():T.from(e.content),description:e.description}}})))})().each((t=>{const a=(e=>((e,t)=>{const a=e.length,n=new Array(a);for(let t=0;t({title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:a,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:c(t),onChange:s(t,i)}),i=(t,n,r)=>{const s=((e,t)=>{var a;if(-1===t.indexOf("")){let n="";const r=null!==(a=y(e))&&void 0!==a?a:"",s=f(e)?' crossorigin="anonymous"':"";o.each(e.contentCSS,(t=>{n+='"})),r&&(n+='");const l=_(e),c=e.dom.encode,i=' + + + + + + + + + + + + + + diff --git a/gin_ops/templates/header-logined.html b/gin_ops/templates/header-logined.html new file mode 100644 index 0000000..fa295f5 --- /dev/null +++ b/gin_ops/templates/header-logined.html @@ -0,0 +1,130 @@ + + + + \ No newline at end of file diff --git a/gin_ops/templates/header-min.html b/gin_ops/templates/header-min.html new file mode 100644 index 0000000..0646988 --- /dev/null +++ b/gin_ops/templates/header-min.html @@ -0,0 +1,40 @@ + + \ No newline at end of file diff --git a/gin_ops/templates/header-navigation.html b/gin_ops/templates/header-navigation.html new file mode 100644 index 0000000..b15c4b7 --- /dev/null +++ b/gin_ops/templates/header-navigation.html @@ -0,0 +1,86 @@ + \ No newline at end of file diff --git a/gin_ops/templates/header-no-login.html b/gin_ops/templates/header-no-login.html new file mode 100644 index 0000000..2701f45 --- /dev/null +++ b/gin_ops/templates/header-no-login.html @@ -0,0 +1,62 @@ + + \ No newline at end of file diff --git a/gin_ops/templates/index.html b/gin_ops/templates/index.html new file mode 100644 index 0000000..dd52855 --- /dev/null +++ b/gin_ops/templates/index.html @@ -0,0 +1,37 @@ + + + + + + + + + 主页 + + + + +
    + + {{if .is_login}} + {{template "header-logined.html" .}} + {{else}} + {{template "header-no-login.html"}} + {{end}} + + {{template "header-navigation.html"}} + + {{template "footer.html"}} + + +
    + + + \ No newline at end of file diff --git a/gin_ops/templates/new_warehouses.html b/gin_ops/templates/new_warehouses.html new file mode 100644 index 0000000..d87e1d3 --- /dev/null +++ b/gin_ops/templates/new_warehouses.html @@ -0,0 +1,34 @@ + + + + + + + + + 添加新仓库 + + + + +
    + + {{template "header-logined.html" .}} + {{template "header-navigation.html"}} + + + + {{template "footer.html"}} + + +
    + + + \ No newline at end of file diff --git a/gin_ops/templates/setting-my.html b/gin_ops/templates/setting-my.html new file mode 100644 index 0000000..26baac4 --- /dev/null +++ b/gin_ops/templates/setting-my.html @@ -0,0 +1,630 @@ + + + + + + + + + 设置-个人设置 + + + + +
    + + {{if .is_login}} + {{template "header-logined.html" .}} + {{else}} + {{template "header-no-login.html"}} + {{end}} + + + +
    + + + +
    +
    +
    +
    + +
    +
    +

    账号设置

    + +

    外部设置

    +
    + +
    +
    +
    + +
    +
    +

    信息设置

    + + + +
    +
    +
    名字
    + +
    + +
    +
    备注
    + +
    +
    + +
    + +
    +
    + +
    +
    +
    + + +
    + + +
    +
    +
    +
    +
    + +
    + + {{template "footer.html"}} +
    + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/setting-security.html b/gin_ops/templates/setting-security.html new file mode 100644 index 0000000..0b5820c --- /dev/null +++ b/gin_ops/templates/setting-security.html @@ -0,0 +1,303 @@ + + + + + + + + + 设置-安全设置 + + + + +
    + + {{if .is_login}} + {{template "header-logined.html" .}} + {{else}} + {{template "header-no-login.html"}} + {{end}} + + + +
    + + + +
    +
    +
    +
    +
    +
    +

    账号设置

    + +

    外部设置

    +
    + +
    +
    +
    +
    +
    + +

    安全设置

    + + +

    安全邮箱

    +

    用于找回账号密码,该联系方式不会公开显示给其他人。

    +
    +
    +
    + +
    不能为空
    +
    修改成功
    +
    + +
    +
    +

    登录密码

    +

    修改密码后需要重新登录

    +
    + +
    不能为空
    +
    + +
    + +
    不能为空
    +
    + +
    + +
    不能为空
    +
    + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    + +
    + + {{template "footer.html"}} +
    + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/sign-in-01.html b/gin_ops/templates/sign-in-01.html new file mode 100644 index 0000000..1b602b7 --- /dev/null +++ b/gin_ops/templates/sign-in-01.html @@ -0,0 +1,197 @@ + + + + + + + + + 登录 + + + + +
    + {{template "header-min.html" .}} +
    +
    +
    +
    +
    + +
    +
    +
    +

    登录你的账号

    + +
    + + +
    不能为空
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + +
    不能为空
    +
    +
    +
    + +
    + + +
    + + +
    +
    + 还没账号? + 点击注册 + + 忘记密码? + +
    +
    +
    +
    + +
    +
    +
    + {{template "footer.html"}} +
    + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/sign-up.html b/gin_ops/templates/sign-up.html new file mode 100644 index 0000000..43f2d08 --- /dev/null +++ b/gin_ops/templates/sign-up.html @@ -0,0 +1,254 @@ + + + + + + + + + 新用户注册 + + + + + +
    + + {{template "header-min.html" .}} + +
    +
    + + Tabler + +
    +
    +
    +

    创建新用户

    +
    + + +
    不能为空
    +
    +
    + + +
    不能为空
    +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + +
    不能为空
    +
    +
    + + +
    +
    +
    + 已有账号? 点击登录 +
    +
    + {{template "footer.html"}} +
    + + + + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/test.html b/gin_ops/templates/test.html new file mode 100644 index 0000000..7752ac5 --- /dev/null +++ b/gin_ops/templates/test.html @@ -0,0 +1,372 @@ + + + + + + + 头像裁剪上传系统 - 完整版 + + + + + +
    +

    专业头像裁剪系统

    + +
    + +
    +
    + +
    + + +
    + + + + + + +
    + + +
    +
    +
    + + +
    +
    + + +
    +

    实时预览 (250x250px)

    +
    + +
    +
    +

    当前缩放: 100%

    +

    图片尺寸: 0 x 0

    +
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/warehouses.html b/gin_ops/templates/warehouses.html new file mode 100644 index 0000000..a31ae49 --- /dev/null +++ b/gin_ops/templates/warehouses.html @@ -0,0 +1,268 @@ + + + + + + + + + 仓库 + + + + +
    + + {{if .is_login}} + {{template "header-logined.html" .}} + {{else}} + {{template "header-no-login.html"}} + {{end}} + + {{template "header-navigation.html"}} + + +
    + + + +
    +
    +
    + + {{range .Warehouses}} + +
    +
    +
    + 仓库{{.ID}} +

    {{.Name}}

    +
    {{.Info}}
    + +
    +
    +
    + + + + + + + + {{.UsedCapacity}} +
    + + + + + + + + + + + + 查看 +
    +
    +
    + {{end}} + + + + + + + + + + + + +
    + +
    + +
    + +
    +
    + +
    + + + {{template "footer.html"}} + + +
    + + + + + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/warehouses_show_item.html b/gin_ops/templates/warehouses_show_item.html new file mode 100644 index 0000000..c233eb1 --- /dev/null +++ b/gin_ops/templates/warehouses_show_item.html @@ -0,0 +1,295 @@ + + + + + + + + + 仓库-{{.warehouse_id}} + + + + +
    + + {{if .is_login}} + {{template "header-logined.html" .}} + {{else}} + {{template "header-no-login.html"}} + {{end}} + + {{template "header-navigation.html"}} + +
    +
    +
    +

    物件清单

    +
    +
    +
    +
    + 显示 +
    + +
    + 个物件 +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + {{range .items}} + + + + + + + + + + + + + {{end}} + + + +
    ID. + + + + + 型号序列号归属工单最后状态更新时间
    {{.ID}}{{.Name}} + {{.SerialNumber}} + + {{.Destiny}} + 2 + {{.Status}} + + {{.UpdatedAt}} + + +
    +
    + +
    +
    + + {{template "footer.html"}} + + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/gin_ops/templates/workorders.html b/gin_ops/templates/workorders.html new file mode 100644 index 0000000..71da382 --- /dev/null +++ b/gin_ops/templates/workorders.html @@ -0,0 +1,152 @@ + + + + + + + + + 工单列表 + + + + +
    + + {{if .is_login}} + {{template "header-logined.html" .}} + {{else}} + {{template "header-no-login.html"}} + {{end}} + + {{template "header-navigation.html"}} + +
    +
    +
    +

    工单列表

    +
    +
    +
    +
    + 显示 +
    + +
    + 个工单 +
    +
    + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + {{range .items}} + + + + + + + + + + + + + {{end}} + + + +
    ID. + + + + + 标题简报归属评论最后状态更新时间
    {{.ID}}{{.Name}} + {{.SerialNumber}} + + {{.Destiny}} + 2 + {{.Status}} + + {{.UpdatedAt}} + + +
    +
    + +
    +
    + + {{template "footer.html"}} + + +
    + + + \ No newline at end of file diff --git a/gin_saas b/gin_saas deleted file mode 160000 index c7d1dda..0000000 --- a/gin_saas +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c7d1dda25f280ad32b97d592334317042a43a9d1 diff --git a/gin/.gitignore b/gin_test/.gitignore similarity index 100% rename from gin/.gitignore rename to gin_test/.gitignore diff --git a/gin/LICENSE b/gin_test/LICENSE similarity index 100% rename from gin/LICENSE rename to gin_test/LICENSE diff --git a/gin/go.mod b/gin_test/go.mod similarity index 100% rename from gin/go.mod rename to gin_test/go.mod diff --git a/gin/go.sum b/gin_test/go.sum similarity index 100% rename from gin/go.sum rename to gin_test/go.sum diff --git a/gin/main.go b/gin_test/main.go similarity index 100% rename from gin/main.go rename to gin_test/main.go diff --git a/gin/models/fs.go b/gin_test/models/fs.go similarity index 100% rename from gin/models/fs.go rename to gin_test/models/fs.go diff --git a/uniapp/.gitignore b/uniapp/.gitignore new file mode 100644 index 0000000..8c45c81 --- /dev/null +++ b/uniapp/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +.project +unpackage/ +.DS_Store \ No newline at end of file diff --git a/uniapp/App.vue b/uniapp/App.vue new file mode 100644 index 0000000..2e53208 --- /dev/null +++ b/uniapp/App.vue @@ -0,0 +1,28 @@ + + + diff --git a/uniapp/components/business-settings/business-settings.vue b/uniapp/components/business-settings/business-settings.vue new file mode 100644 index 0000000..0a07ba7 --- /dev/null +++ b/uniapp/components/business-settings/business-settings.vue @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file diff --git a/uniapp/components/datatime-picker-for-fullCalendar/datatime-picker-for-fullCalendar.vue b/uniapp/components/datatime-picker-for-fullCalendar/datatime-picker-for-fullCalendar.vue new file mode 100644 index 0000000..2337dde --- /dev/null +++ b/uniapp/components/datatime-picker-for-fullCalendar/datatime-picker-for-fullCalendar.vue @@ -0,0 +1,400 @@ + + + + + \ No newline at end of file diff --git a/uniapp/components/datetime-picker/calendar-item.vue b/uniapp/components/datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uniapp/components/datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uniapp/components/datetime-picker/calendar.vue b/uniapp/components/datetime-picker/calendar.vue new file mode 100644 index 0000000..1fae4c6 --- /dev/null +++ b/uniapp/components/datetime-picker/calendar.vue @@ -0,0 +1,954 @@ + + + + + diff --git a/uniapp/components/datetime-picker/datetime-picker.vue b/uniapp/components/datetime-picker/datetime-picker.vue new file mode 100644 index 0000000..8bcf641 --- /dev/null +++ b/uniapp/components/datetime-picker/datetime-picker.vue @@ -0,0 +1,1066 @@ + + + + diff --git a/uniapp/components/datetime-picker/i18n/en.json b/uniapp/components/datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uniapp/components/datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uniapp/components/datetime-picker/i18n/index.js b/uniapp/components/datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uniapp/components/datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uniapp/components/datetime-picker/i18n/zh-Hans.json b/uniapp/components/datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uniapp/components/datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uniapp/components/datetime-picker/i18n/zh-Hant.json b/uniapp/components/datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uniapp/components/datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uniapp/components/datetime-picker/time-picker.vue b/uniapp/components/datetime-picker/time-picker.vue new file mode 100644 index 0000000..1817692 --- /dev/null +++ b/uniapp/components/datetime-picker/time-picker.vue @@ -0,0 +1,940 @@ + + + + + diff --git a/uniapp/components/datetime-picker/util.js b/uniapp/components/datetime-picker/util.js new file mode 100644 index 0000000..6b2bcf1 --- /dev/null +++ b/uniapp/components/datetime-picker/util.js @@ -0,0 +1,430 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if (oldMonth !== 0 && newMonth - oldMonth === 0) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if (newMonth - oldMonth > 1) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + console.log(amount) + + //dateObj.setDate(dateObj.getDate()-1); + + console.log(dateObj) + + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + + date: new Date(dateObj.year, month, -i).getDate(), + month, + disable: true + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + console.log(amount) + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare( + currentDate, this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + console.log(amount) + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ + date: i, + month, + disable: true + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const res = this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + return res ? res : this.getDateObj(date) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.multipleStatus.after = undefined; + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + //抖音小程序点击会触发hover事件,需要避免一下 + // #ifndef MP-TOUTIAO + if (!this.range || this.lastHover) return + const { + before + } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + // #endif + + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if (!weeks[index]) { + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond) { + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond) { + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if (num < 10) { + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date) { + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} +//ios低版本15及以下,无法匹配 没有 ’秒‘ 时的情况,所以需要在末尾 秒 加上 问号 +const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/; + +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export { + Calendar, + getDateTime, + getDate, + getTime, + addZero, + getDefaultSecond, + dateCompare, + checkDate, + fixIosDateFormat +} diff --git a/uniapp/components/tabler-footer/tabler-footer.vue b/uniapp/components/tabler-footer/tabler-footer.vue new file mode 100644 index 0000000..b6a3a6a --- /dev/null +++ b/uniapp/components/tabler-footer/tabler-footer.vue @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/uniapp/components/tabler-header/tabler-header.vue b/uniapp/components/tabler-header/tabler-header.vue new file mode 100644 index 0000000..f403b4c --- /dev/null +++ b/uniapp/components/tabler-header/tabler-header.vue @@ -0,0 +1,232 @@ + + + + + \ No newline at end of file diff --git a/uniapp/components/test_components/test_components.vue b/uniapp/components/test_components/test_components.vue new file mode 100644 index 0000000..2356c41 --- /dev/null +++ b/uniapp/components/test_components/test_components.vue @@ -0,0 +1,23 @@ + + + diff --git a/uniapp/index.html b/uniapp/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/uniapp/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
    + + + diff --git a/uniapp/main.js b/uniapp/main.js new file mode 100644 index 0000000..c1caf36 --- /dev/null +++ b/uniapp/main.js @@ -0,0 +1,22 @@ +import App from './App' + +// #ifndef VUE3 +import Vue from 'vue' +import './uni.promisify.adaptor' +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/uniapp/manifest.json b/uniapp/manifest.json new file mode 100644 index 0000000..a7faf8f --- /dev/null +++ b/uniapp/manifest.json @@ -0,0 +1,72 @@ +{ + "name" : "ems_vue", + "appid" : "__UNI__EFA7B7F", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3" +} diff --git a/uniapp/package-lock.json b/uniapp/package-lock.json new file mode 100644 index 0000000..9673628 --- /dev/null +++ b/uniapp/package-lock.json @@ -0,0 +1,619 @@ +{ + "name": "ems_vue", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@dcloudio/uni-ui": "^1.5.7", + "@fullcalendar/core": "^6.1.15", + "@fullcalendar/daygrid": "^6.1.15", + "@fullcalendar/interaction": "^6.1.15", + "@fullcalendar/timegrid": "^6.1.15", + "@fullcalendar/vue3": "^6.1.15", + "@tabler/core": "^1.0.0-beta21", + "save": "^2.9.0", + "screenfull": "^6.0.2" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@dcloudio/uni-ui": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@dcloudio/uni-ui/-/uni-ui-1.5.7.tgz", + "integrity": "sha512-DugxSIrQrze1FLdUOj9a+JEQ0bHGjnJTcGUK1mN/MivKg7nuKJBRWk5Ipa9sUdoBznX6ndz5h2e7Uao6x1CdCw==", + "license": "Apache-2.0" + }, + "node_modules/@fullcalendar/core": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.15.tgz", + "integrity": "sha512-BuX7o6ALpLb84cMw1FCB9/cSgF4JbVO894cjJZ6kP74jzbUZNjtwffwRdA+Id8rrLjT30d/7TrkW90k4zbXB5Q==", + "license": "MIT", + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.15.tgz", + "integrity": "sha512-j8tL0HhfiVsdtOCLfzK2J0RtSkiad3BYYemwQKq512cx6btz6ZZ2RNc/hVnIxluuWFyvx5sXZwoeTJsFSFTEFA==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-6.1.15.tgz", + "integrity": "sha512-DOTSkofizM7QItjgu7W68TvKKvN9PSEEvDJceyMbQDvlXHa7pm/WAVtAc6xSDZ9xmB1QramYoWGLHkCYbTW1rQ==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-6.1.15.tgz", + "integrity": "sha512-61ORr3A148RtxQ2FNG7JKvacyA/TEVZ7z6I+3E9Oeu3dqTf6M928bFcpehRTIK6zIA6Yifs7BeWHgOE9dFnpbw==", + "license": "MIT", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.15" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.15" + } + }, + "node_modules/@fullcalendar/vue3": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/@fullcalendar/vue3/-/vue3-6.1.15.tgz", + "integrity": "sha512-ctfTICGrNEIj7gmLHQcUYe0WzDTSW5Vd9hyOnVChxPU75AZU9WqdDMkHwJYnfNxNhT6QQuiMHq/qsRRd5zQwOw==", + "license": "MIT", + "peerDependencies": { + "@fullcalendar/core": "~6.1.15", + "vue": "^3.0.11" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@tabler/core": { + "version": "1.0.0-beta21", + "resolved": "https://registry.npmjs.org/@tabler/core/-/core-1.0.0-beta21.tgz", + "integrity": "sha512-9ZKu38BScc0eHruhX/SlVDSiXenBFSgBp2WDq6orkuC8J/1yutKDt7CdXuJpBwkiADEk5yqYV31Ku+CnhwOc3Q==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.11.8", + "@tabler/icons": "^3.14.0", + "bootstrap": "5.3.3" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + }, + "peerDependencies": { + "@melloware/coloris": "^0.19.1", + "apexcharts": "^3.40.0", + "autosize": "^6.0.1", + "choices.js": "^10.2.0", + "countup.js": "^2.6.2", + "dropzone": "^6.0.0-beta.2", + "flatpickr": "^4.6.13", + "fslightbox": "^3.4.1", + "imask": "^6.6.1", + "jsvectormap": "^1.5.3", + "list.js": "^2.3.1", + "litepicker": "^2.0.12", + "nouislider": "^15.7.0", + "plyr": "^3.7.8", + "star-rating.js": "^4.3.0", + "tinymce": "^6.4.2 || ^7.0.0", + "tom-select": "^2.2.2" + }, + "peerDependenciesMeta": { + "@melloware/coloris": { + "optional": true + }, + "apexcharts": { + "optional": true + }, + "autosize": { + "optional": true + }, + "choices.js": { + "optional": true + }, + "countup.js": { + "optional": true + }, + "dropzone": { + "optional": true + }, + "flatpickr": { + "optional": true + }, + "fslightbox": { + "optional": true + }, + "imask": { + "optional": true + }, + "jsvectormap": { + "optional": true + }, + "list.js": { + "optional": true + }, + "litepicker": { + "optional": true + }, + "nouislider": { + "optional": true + }, + "plyr": { + "optional": true + }, + "star-rating.js": { + "optional": true + }, + "tinymce": { + "optional": true + }, + "tom-select": { + "optional": true + } + } + }, + "node_modules/@tabler/icons": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.22.0.tgz", + "integrity": "sha512-IfgGzhFph5OBr2wTieWL/hyAs0FThnq9O155a6kfGYxqx7h5LQw91wnRswhEaGhXCcfmR7ZVDUr9H+x4b9Pb8g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT", + "peer": true + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT", + "peer": true + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT", + "peer": true + }, + "node_modules/event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "license": "MIT" + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.13", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.13.tgz", + "integrity": "sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "license": "MIT" + }, + "node_modules/mingo": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/mingo/-/mingo-6.5.3.tgz", + "integrity": "sha512-jp8AhCM871cDUZLTXt9jTsA5rwW74Zp+mYnbMO97PZCpVKI2UOhAamszpZp1wuXJOBnKiEQfkpGsEHj4AmadOg==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC", + "peer": true + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/save": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/save/-/save-2.9.0.tgz", + "integrity": "sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg==", + "license": "ISC", + "dependencies": { + "async": "^3.2.2", + "event-stream": "^4.0.1", + "lodash.assign": "^4.2.0", + "mingo": "^6.1.0" + } + }, + "node_modules/screenfull": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-6.0.2.tgz", + "integrity": "sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==", + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + } + } +} diff --git a/uniapp/package.json b/uniapp/package.json new file mode 100644 index 0000000..096d95c --- /dev/null +++ b/uniapp/package.json @@ -0,0 +1,13 @@ +{ + "dependencies": { + "@dcloudio/uni-ui": "^1.5.7", + "@fullcalendar/core": "^6.1.15", + "@fullcalendar/daygrid": "^6.1.15", + "@fullcalendar/interaction": "^6.1.15", + "@fullcalendar/timegrid": "^6.1.15", + "@fullcalendar/vue3": "^6.1.15", + "@tabler/core": "^1.0.0-beta21", + "save": "^2.9.0", + "screenfull": "^6.0.2" + } +} diff --git a/uniapp/pages.json b/uniapp/pages.json new file mode 100644 index 0000000..c9a214b --- /dev/null +++ b/uniapp/pages.json @@ -0,0 +1,73 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "uni-app" + } + }, + { + "path" : "pages/MA/MA", + "style" : + { + "navigationBarTitleText" : "Monthly Activities" + } + }, + { + "path" : "pages/test/test", + "style" : + { + "navigationBarTitleText" : "" + } + }, + { + "path" : "pages/test2/test2", + "style" : + { + "navigationBarTitleText" : "" + } + }, + { + "path" : "pages/login/login", + "style" : + { + "navigationBarTitleText" : "" + } + }, + { + "path" : "pages/settings/profile", + "style" : + { + "navigationBarTitleText" : "" + } + }, + { + "path" : "pages/qa/qa", + "style" : + { + "navigationBarTitleText" : "" + } + }, + { + "path" : "pages/qa/edit_a", + "style" : + { + "navigationBarTitleText" : "" + } + }, + { + "path" : "pages/qa/add_q", + "style" : + { + "navigationBarTitleText" : "" + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "uniIdRouter": {} +} diff --git a/uniapp/pages/MA/MA.vue b/uniapp/pages/MA/MA.vue new file mode 100644 index 0000000..c1db42f --- /dev/null +++ b/uniapp/pages/MA/MA.vue @@ -0,0 +1,750 @@ + + + + + diff --git a/uniapp/pages/index/index.vue b/uniapp/pages/index/index.vue new file mode 100644 index 0000000..dfea0d6 --- /dev/null +++ b/uniapp/pages/index/index.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/uniapp/pages/login/login.vue b/uniapp/pages/login/login.vue new file mode 100644 index 0000000..76eba0b --- /dev/null +++ b/uniapp/pages/login/login.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/uniapp/pages/qa/add_q.vue b/uniapp/pages/qa/add_q.vue new file mode 100644 index 0000000..0e95977 --- /dev/null +++ b/uniapp/pages/qa/add_q.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/uniapp/pages/qa/edit_a.vue b/uniapp/pages/qa/edit_a.vue new file mode 100644 index 0000000..1d51893 --- /dev/null +++ b/uniapp/pages/qa/edit_a.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/uniapp/pages/qa/qa.vue b/uniapp/pages/qa/qa.vue new file mode 100644 index 0000000..d5d76fc --- /dev/null +++ b/uniapp/pages/qa/qa.vue @@ -0,0 +1,247 @@ + + + + + \ No newline at end of file diff --git a/uniapp/pages/settings/profile.vue b/uniapp/pages/settings/profile.vue new file mode 100644 index 0000000..6daaedf --- /dev/null +++ b/uniapp/pages/settings/profile.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/uniapp/pages/test/test.vue b/uniapp/pages/test/test.vue new file mode 100644 index 0000000..33a8b80 --- /dev/null +++ b/uniapp/pages/test/test.vue @@ -0,0 +1,1426 @@ + + + diff --git a/uniapp/pages/test2/test2.vue b/uniapp/pages/test2/test2.vue new file mode 100644 index 0000000..27f2933 --- /dev/null +++ b/uniapp/pages/test2/test2.vue @@ -0,0 +1,377 @@ + + + + + \ No newline at end of file diff --git a/uniapp/public_js.js b/uniapp/public_js.js new file mode 100644 index 0000000..a1a9bc1 --- /dev/null +++ b/uniapp/public_js.js @@ -0,0 +1,22 @@ + +export const public_func={ + baseUrl:"http://test.ems.local/", + + formatDate(date) { + var year = date.getFullYear(); + var month = (date.getMonth() + 1).toString().padStart(2, '0'); + var day = date.getDate().toString().padStart(2, '0'); + return `${year}-${month}-${day}`; + }, + test(tttt) + { + console.log(tttt) + }, + isValidEmail(email) + { + // 定义邮箱的正则表达式 + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + // 使用正则表达式测试邮箱 + return emailRegex.test(email); + } +} \ No newline at end of file diff --git a/uniapp/static/R.png b/uniapp/static/R.png new file mode 100644 index 0000000..1b5f768 Binary files /dev/null and b/uniapp/static/R.png differ diff --git a/uniapp/static/illustrations/undraw_bug_fixing_oc7a.svg b/uniapp/static/illustrations/undraw_bug_fixing_oc7a.svg new file mode 100644 index 0000000..49eb330 --- /dev/null +++ b/uniapp/static/illustrations/undraw_bug_fixing_oc7a.svg @@ -0,0 +1 @@ +bug fixing \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_joyride_hnno.svg b/uniapp/static/illustrations/undraw_joyride_hnno.svg new file mode 100644 index 0000000..66fec2d --- /dev/null +++ b/uniapp/static/illustrations/undraw_joyride_hnno.svg @@ -0,0 +1 @@ +joyride \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_medicine_b1ol.svg b/uniapp/static/illustrations/undraw_medicine_b1ol.svg new file mode 100644 index 0000000..9cf293e --- /dev/null +++ b/uniapp/static/illustrations/undraw_medicine_b1ol.svg @@ -0,0 +1 @@ +medicine \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_mobile_application_mr4r.svg b/uniapp/static/illustrations/undraw_mobile_application_mr4r.svg new file mode 100644 index 0000000..43e2df2 --- /dev/null +++ b/uniapp/static/illustrations/undraw_mobile_application_mr4r.svg @@ -0,0 +1 @@ +Mobile_application \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_posting_photo_v65l.svg b/uniapp/static/illustrations/undraw_posting_photo_v65l.svg new file mode 100644 index 0000000..47cb4fc --- /dev/null +++ b/uniapp/static/illustrations/undraw_posting_photo_v65l.svg @@ -0,0 +1 @@ +posting photo \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_printing_invoices_5r4r.svg b/uniapp/static/illustrations/undraw_printing_invoices_5r4r.svg new file mode 100644 index 0000000..3c7a0b6 --- /dev/null +++ b/uniapp/static/illustrations/undraw_printing_invoices_5r4r.svg @@ -0,0 +1 @@ +printing invoices \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_quitting_time_dm8t.svg b/uniapp/static/illustrations/undraw_quitting_time_dm8t.svg new file mode 100644 index 0000000..6209538 --- /dev/null +++ b/uniapp/static/illustrations/undraw_quitting_time_dm8t.svg @@ -0,0 +1 @@ +quitting time \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_secure_login_pdn4.svg b/uniapp/static/illustrations/undraw_secure_login_pdn4.svg new file mode 100644 index 0000000..7c919b2 --- /dev/null +++ b/uniapp/static/illustrations/undraw_secure_login_pdn4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_sign_in_e6hj.svg b/uniapp/static/illustrations/undraw_sign_in_e6hj.svg new file mode 100644 index 0000000..e867d51 --- /dev/null +++ b/uniapp/static/illustrations/undraw_sign_in_e6hj.svg @@ -0,0 +1 @@ +sign_in \ No newline at end of file diff --git a/uniapp/static/illustrations/undraw_work_together_h63l.svg b/uniapp/static/illustrations/undraw_work_together_h63l.svg new file mode 100644 index 0000000..9f4768a --- /dev/null +++ b/uniapp/static/illustrations/undraw_work_together_h63l.svg @@ -0,0 +1 @@ +work_together \ No newline at end of file diff --git a/uniapp/static/logo.png b/uniapp/static/logo.png new file mode 100644 index 0000000..b5771e2 Binary files /dev/null and b/uniapp/static/logo.png differ diff --git a/uniapp/uni.promisify.adaptor.js b/uniapp/uni.promisify.adaptor.js new file mode 100644 index 0000000..5fec4f3 --- /dev/null +++ b/uniapp/uni.promisify.adaptor.js @@ -0,0 +1,13 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res) => { + if (!res) return resolve(res) + return res[0] ? reject(res[0]) : resolve(res[1]) + }); + }); + }, +}); \ No newline at end of file diff --git a/uniapp/uni.scss b/uniapp/uni.scss new file mode 100644 index 0000000..b9249e9 --- /dev/null +++ b/uniapp/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16px; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; diff --git a/uniapp/uni_modules/hl-calendar/changelog.md b/uniapp/uni_modules/hl-calendar/changelog.md new file mode 100644 index 0000000..0cf8771 --- /dev/null +++ b/uniapp/uni_modules/hl-calendar/changelog.md @@ -0,0 +1,2 @@ +## 1.0.0(2024-05-10) +项目初始化,根据日历选择日期,第一版较为简介 diff --git a/uniapp/uni_modules/hl-calendar/components/hl-calendar/config/index.js b/uniapp/uni_modules/hl-calendar/components/hl-calendar/config/index.js new file mode 100644 index 0000000..e69de29 diff --git a/uniapp/uni_modules/hl-calendar/components/hl-calendar/hl-calendar.vue b/uniapp/uni_modules/hl-calendar/components/hl-calendar/hl-calendar.vue new file mode 100644 index 0000000..babba31 --- /dev/null +++ b/uniapp/uni_modules/hl-calendar/components/hl-calendar/hl-calendar.vue @@ -0,0 +1,251 @@ + + + \ No newline at end of file diff --git a/uniapp/uni_modules/hl-calendar/package.json b/uniapp/uni_modules/hl-calendar/package.json new file mode 100644 index 0000000..b4d856f --- /dev/null +++ b/uniapp/uni_modules/hl-calendar/package.json @@ -0,0 +1,86 @@ +{ + "id": "hl-calendar", + "displayName": "日历 日期选择 选择年月日 全面支持各类小程序", + "version": "1.0.0", + "description": "日历组件 日期选择", + "keywords": [ + "日历", + "日期选择", + "calendar", + "时间" +], + "repository": "", + "engines": { + "HBuilderX": "^3.8.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "u", + "Edge": "u", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uniapp/uni_modules/hl-calendar/readme.md b/uniapp/uni_modules/hl-calendar/readme.md new file mode 100644 index 0000000..3b26336 --- /dev/null +++ b/uniapp/uni_modules/hl-calendar/readme.md @@ -0,0 +1 @@ +# hl-calendar \ No newline at end of file diff --git a/uniapp/uni_modules/l-calendar/changelog.md b/uniapp/uni_modules/l-calendar/changelog.md new file mode 100644 index 0000000..1e20611 --- /dev/null +++ b/uniapp/uni_modules/l-calendar/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2023-05-31) +1.0.3 +## 1.0.2(2023-05-20) +1.0.2 +## 1.0.1(2023-05-19) +1.0.1 +## 1.0.0(2023-05-19) +1.0.0 diff --git a/uniapp/uni_modules/l-calendar/components/l-calendar/calendar.js b/uniapp/uni_modules/l-calendar/components/l-calendar/calendar.js new file mode 100644 index 0000000..72b0e2b --- /dev/null +++ b/uniapp/uni_modules/l-calendar/components/l-calendar/calendar.js @@ -0,0 +1,562 @@ +/** + * @1900-2100区间内的公历、农历互转 + * @公历转农历:solar2lunar + * @农历转公历:lunar2solar + */ +let calendar = { + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, //1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, //1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, //1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, //1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, //1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, //1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, //1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, //1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, //1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, //1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, //2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, //2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, //2040-2049 + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, //2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, //2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, //2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, //2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, //2090-2099 + 0x0d520 + ], //2100 + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"], + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c", + "\u4ea5" + ], + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21", + "\u72d7", "\u732a" + ], + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206", + "\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691", + "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d", + "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3" + ], + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722' + ], + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"], + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"], + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac", + "\u814a" + ], + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:let count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function(y) { + let i, sum = 348; + for (i = 0x8000; i > 0x8; i >>= 1) { + sum += (calendar.lunarInfo[y - 1900] & i) ? 1 : 0; + } + return (sum + calendar.leapDays(y)); + }, + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:let leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function(y) { //闰字编码 \u95f0 + return (calendar.lunarInfo[y - 1900] & 0xf); + }, + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:let leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function(y) { + if (calendar.leapMonth(y)) { + return ((calendar.lunarInfo[y - 1900] & 0x10000) ? 30 : 29); + } + return (0); + }, + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:let MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function(y, m) { + if (m > 12 || m < 1) { + return -1 + } //月份参数从1至12,参数错误返回-1 + return ((calendar.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29); + }, + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:let solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function(y, m) { + if (m > 12 || m < 1) { + return -1 + } //若参数错误 返回-1 + let ms = m - 1; + if (ms == 1) { //2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28); + } else { + return (calendar.solarMonth[ms]); + } + }, + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function(lYear) { + let ganKey = (lYear - 3) % 10; + let zhiKey = (lYear - 3) % 12; + if (ganKey == 0) ganKey = 10; //如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12; //如果余数为0则为最后一个地支 + return calendar.Gan[ganKey - 1] + calendar.Zhi[zhiKey - 1]; + }, + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function(cMonth, cDay) { + let s = + "\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf"; + let arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]; + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7"; //座 + }, + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function(offset) { + return calendar.Gan[offset % 10] + calendar.Zhi[offset % 12]; + }, + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:let _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function(y, n) { + if (y < 1900 || y > 2100) { + return -1; + } + if (n < 1 || n > 24) { + return -1; + } + let _table = calendar.sTermInfo[y - 1900]; + let _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ]; + let _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2), + ]; + return parseInt(_calday[n - 1]); + }, + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:let cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function(m) { // 月 => \u6708 + if (m > 12 || m < 1) { + return -1 + } //若参数错误 返回-1 + let s = calendar.nStr3[m - 1]; + s += "\u6708"; //加上月字 + return s; + }, + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:let cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function(d) { //日 => \u65e5 + let s; + switch (d) { + case 10: + s = '\u521d\u5341'; + break; + case 20: + s = '\u4e8c\u5341'; + break; + break; + case 30: + s = '\u4e09\u5341'; + break; + break; + default: + s = calendar.nStr2[Math.floor(d / 10)]; + s += calendar.nStr1[d % 10]; + } + return (s); + }, + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:let animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function(y) { + return calendar.Animals[(y - 4) % 12] + }, + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function(y, m, d) { //参数区间1900.1.31~2100.12.31 + if (y < 1900 || y > 2100) { + return -1; + } //年份限定、上限 + if (y == 1900 && m == 1 && d < 31) { + return -1; + } //下限 + let objDate; + if (!y) { //未传参 获得当天 + objDate = new Date(); + } else { + objDate = new Date(y, parseInt(m) - 1, d) + } + let i, leap = 0, + temp = 0; + //修正ymd参数 + y = objDate.getFullYear(); + m = objDate.getMonth() + 1; + d = objDate.getDate(); + let offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / + 86400000; + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = calendar.lYearDays(i); + offset -= temp; + } + if (offset < 0) { + offset += temp; + i--; + } + //是否今天 + let isTodayObj = new Date(), + isToday = false; + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true; + } + //星期几 + let nWeek = objDate.getDay(), + cWeek = calendar.nStr1[nWeek]; + if (nWeek == 0) { + nWeek = 7; + } //数字表示周几顺应天朝周一开始的惯例 + //农历年 + let year = i; + leap = calendar.leapMonth(i); //闰哪个月 + let isLeap = false; + //效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + //闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i; + isLeap = true; + temp = calendar.leapDays(year); //计算农历闰月天数 + } else { + temp = calendar.monthDays(year, i); //计算农历普通月天数 + } + //解除闰月 + if (isLeap == true && i == (leap + 1)) { + isLeap = false; + } + offset -= temp; + } + if (offset == 0 && leap > 0 && i == leap + 1) + if (isLeap) { + isLeap = false; + } else { + isLeap = true; + --i; + } + if (offset < 0) { + offset += temp; + --i; + } + //农历月 + let month = i; + //农历日 + let day = offset + 1; + //天干地支处理 + let sm = m - 1; + let gzY = calendar.toGanZhiYear(year); + //月柱 1900年1月小寒以前为 丙子月(60进制12) + let firstNode = calendar.getTerm(year, (m * 2 - 1)); //返回当月「节」为几日开始 + let secondNode = calendar.getTerm(year, (m * 2)); //返回当月「节」为几日开始 + //依据12节气修正干支月 + let gzM = calendar.toGanZhi((y - 1900) * 12 + m + 11); + if (d >= firstNode) { + gzM = calendar.toGanZhi((y - 1900) * 12 + m + 12); + } + //传入的日期的节气与否 + let isTerm = false; + let Term = null; + if (firstNode == d) { + isTerm = true; + Term = calendar.solarTerm[m * 2 - 2]; + } + if (secondNode == d) { + isTerm = true; + Term = calendar.solarTerm[m * 2 - 1]; + } + //日柱 当月一日与 1900/1/1 相差天数 + let dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10; + let gzD = calendar.toGanZhi(dayCyclical + d - 1); + //该日期所属的星座 + let astro = calendar.toAstro(m, d); + return { + 'lYear': year, + 'lMonth': month, + 'lDay': day, + 'Animal': calendar.getAnimal(year), + 'IMonthCn': (isLeap ? "\u95f0" : '') + calendar.toChinaMonth(month), + 'IDayCn': calendar.toChinaDay(day), + 'cYear': y, + 'cMonth': m, + 'cDay': d, + 'gzYear': gzY, + 'gzMonth': gzM, + 'gzDay': gzD, + 'isToday': isToday, + 'isLeap': isLeap, + 'nWeek': nWeek, + 'ncWeek': "\u661f\u671f" + cWeek, + 'isTerm': isTerm, + 'Term': Term, + 'astro': astro + }; + }, + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function(y, m, d, isLeapMonth) { //参数区间1900.1.31~2100.12.1 + isLeapMonth = !!isLeapMonth; + let leapOffset = 0; + let leapMonth = calendar.leapMonth(y); + let leapDay = calendar.leapDays(y); + if (isLeapMonth && (leapMonth != m)) { + return -1; + } //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { + return -1; + } //超出了最大极限值 + let day = calendar.monthDays(y, m); + let _day = day; + //bugFix 2016-9-25 + //if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = calendar.leapDays(y, m); + } + if (y < 1900 || y > 2100 || d > _day) { + return -1; + } //参数合法性效验 + //计算农历的时间差 + let offset = 0; + for (let i = 1900; i < y; i++) { + offset += calendar.lYearDays(i); + } + let leap = 0, + isAdd = false; + for (let i = 1; i < m; i++) { + leap = calendar.leapMonth(y); + if (!isAdd) { //处理闰月 + if (leap <= i && leap > 0) { + offset += calendar.leapDays(y); + isAdd = true; + } + } + offset += calendar.monthDays(y, i); + } + //转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { + offset += day; + } + //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + let stmap = Date.UTC(1900, 1, 30, 0, 0, 0); + let calObj = new Date((offset + d - 31) * 86400000 + stmap); + let cY = calObj.getUTCFullYear(); + let cM = calObj.getUTCMonth() + 1; + let cD = calObj.getUTCDate(); + return calendar.solar2lunar(cY, cM, cD); + } +}; + +export default { + solar2lunar: calendar.solar2lunar, + lunar2solar: calendar.lunar2solar +}; \ No newline at end of file diff --git a/uniapp/uni_modules/l-calendar/components/l-calendar/l-calendar.vue b/uniapp/uni_modules/l-calendar/components/l-calendar/l-calendar.vue new file mode 100644 index 0000000..341860a --- /dev/null +++ b/uniapp/uni_modules/l-calendar/components/l-calendar/l-calendar.vue @@ -0,0 +1,832 @@ + + + + diff --git a/uniapp/uni_modules/l-calendar/package.json b/uniapp/uni_modules/l-calendar/package.json new file mode 100644 index 0000000..7a0b99d --- /dev/null +++ b/uniapp/uni_modules/l-calendar/package.json @@ -0,0 +1,84 @@ +{ + "id": "l-calendar", + "displayName": "日历 日期选择 选择年月日", + "version": "1.0.3", + "description": "日历 日期选择 选择年月日 仅测过小程序其他自测", + "keywords": [ + "日历", + "日期选择", + "选择年月日", + "年月日", + "l-calendar" +], + "repository": "", +"engines": { + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uniapp/uni_modules/l-calendar/readme.md b/uniapp/uni_modules/l-calendar/readme.md new file mode 100644 index 0000000..6b5f408 --- /dev/null +++ b/uniapp/uni_modules/l-calendar/readme.md @@ -0,0 +1,40 @@ +# l-calendar + +# ## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` +## 组件属性 + +| 属性 | 类型 | 默认值 | 说明 | +|:---:|:---:|:---:|---| +| value | Boolean | false | v-module 双向绑定的值 | +| isRange | Boolean | false | 是否选择范围 true是 false选择单个日期 | +| maxYear | Number | 2100 | 可切换最大年份 | +| minYear | Number | 1920 | 可切换最小年份 | +| minDate | String | '1920-01-01' | 最小可选日期 不在范围内日期禁选 | +| maxDate | String | '2100-1-1' | 最大可选日期 不在范围内日期禁选 | +| title | String | '日期选择' | 组件标题 | +| monthChangeColor | String | #999 | 月份切换箭头颜色 | +| yearChangeColor | String | '#bfbfbf' | 年份切换箭头颜色 | +| color | String | #333 | 默认日期字体颜色 | +| activeColor | String | '#fff' | 选中日期字体颜色 | +| activeBgColor | String | '#55BBF9' | 选中日期背景色 | +| rangeBgColor | String | rgba(85, 187, 249, 0.1) | 范围内日期背景色 | +| startText | String | 开始 | 范围选择时生效 开始日期自定义文字 | +| endText | String | 结束 | 范围选择时生效 结束日期自定义文字 | +| lunar | Boolean | true | 是否显示农历 | +| initStartDate | String | '' | 初始化开始选中日期 格式: 2020-06-06 或 2020/06/06 | +| initEndDate | String | '' | 初始化开始选中日期 格式: 2020-06-06 或 2020/06/06 | + + +## 组件事件 + +| 名称 | 触发时机 | +|:---:|---| +| change | 点击确定按钮选择日期 | + diff --git a/uniapp/uni_modules/uni-breadcrumb/changelog.md b/uniapp/uni_modules/uni-breadcrumb/changelog.md new file mode 100644 index 0000000..016e6ce --- /dev/null +++ b/uniapp/uni_modules/uni-breadcrumb/changelog.md @@ -0,0 +1,6 @@ +## 0.1.2(2022-06-08) +- 修复 微信小程序 separator 不显示问题 +## 0.1.1(2022-06-02) +- 新增 支持 uni.scss 修改颜色 +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uniapp/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/uniapp/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue new file mode 100644 index 0000000..b9edbd6 --- /dev/null +++ b/uniapp/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue @@ -0,0 +1,121 @@ + + + diff --git a/uniapp/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/uniapp/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue new file mode 100644 index 0000000..94493a2 --- /dev/null +++ b/uniapp/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue @@ -0,0 +1,41 @@ + + + diff --git a/uniapp/uni_modules/uni-breadcrumb/package.json b/uniapp/uni_modules/uni-breadcrumb/package.json new file mode 100644 index 0000000..e5f33e8 --- /dev/null +++ b/uniapp/uni_modules/uni-breadcrumb/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-breadcrumb", + "displayName": "uni-breadcrumb 面包屑", + "version": "0.1.2", + "description": "Breadcrumb 面包屑", + "keywords": [ + "uni-breadcrumb", + "breadcrumb", + "uni-ui", + "面包屑导航", + "面包屑" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uniapp/uni_modules/uni-breadcrumb/readme.md b/uniapp/uni_modules/uni-breadcrumb/readme.md new file mode 100644 index 0000000..6976b8d --- /dev/null +++ b/uniapp/uni_modules/uni-breadcrumb/readme.md @@ -0,0 +1,66 @@ + +## breadcrumb 面包屑导航 +> **组件名:uni-breadcrumb** +> 代码块: `ubreadcrumb` + +显示当前页面的路径,快速返回之前的任意页面。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + {{route.name}} + +``` + +```js +export default { + name: "uni-stat-breadcrumb", + data() { + return { + routes: [{ + to: '/A', + name: 'A页面' + }, { + to: '/B', + name: 'B页面' + }, { + to: '/C', + name: 'C页面' + }] + }; + } + } +``` + + +## API + +### Breadcrumb Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|separator |String |斜杠'/' |分隔符 | +|separatorClass |String | |图标分隔符 class | + +### Breadcrumb Item Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|to |String | |路由跳转页面路径 | +|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb) \ No newline at end of file diff --git a/uniapp/uni_modules/uni-datetime-picker/changelog.md b/uniapp/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..102ddb1 --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,168 @@ +## 2.2.38(2024-10-15) +- 修复 微信小程序中的getSystemInfo警告 +## 2.2.37(2024-10-12) +- 修复 微信小程序中的getSystemInfo警告 +## 2.2.36(2024-10-12) +- 修复 微信小程序中的getSystemInfo警告 +## 2.2.35(2024-09-21) +- 修复 没有选中日期时点击确定直接报错的Bug [详情](https://ask.dcloud.net.cn/question/198168) +## 2.2.34(2024-04-24) +- 新增 日期点击事件,在点击日期时会触发该事件。 +## 2.2.33(2024-04-15) +- 修复 抖音小程序事件传递失效bug +## 2.2.32(2024-02-20) +- 修复 日历的close事件触发异常的bug [详情](https://github.com/dcloudio/uni-ui/issues/844) +## 2.2.31(2024-02-20) +- 修复 h5平台 右边日历的月份默认+1的bug [详情](https://github.com/dcloudio/uni-ui/issues/841) +## 2.2.30(2024-01-31) +- 修复 隐藏“秒”时,在IOS15及以下版本时出现 结束时间在开始时间之前 的bug [详情](https://github.com/dcloudio/uni-ui/issues/788) +## 2.2.29(2024-01-20) +- 新增 show事件,弹窗弹出时触发该事件 [详情](https://github.com/dcloudio/uni-app/issues/4694) +## 2.2.28(2024-01-18) +- 去除 noChange事件,当进行日期范围选择时,若只选了一天,则开始结束日期都为同一天 [详情](https://github.com/dcloudio/uni-ui/issues/815) +## 2.2.27(2024-01-10) +- 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815) +## 2.2.26(2024-01-08) +- 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834) +## 2.2.25(2023-10-18) +- 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737) +## 2.2.24(2023-06-02) +- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146) +- 优化 当前月可以选择上月、下月的日期的Bug +## 2.2.23(2023-05-02) +- 修复 部分情况修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737) +- 修复 部分平台及设备第一次点击无法显示弹框的Bug +- 修复 ios 日期格式未补零显示及使用异常的Bug [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.22(2023-03-30) +- 修复 日历 picker 修改年月后,自动选中当月1日的Bug [详情](https://ask.dcloud.net.cn/question/165937) +- 修复 小程序端 低版本 ios NaN的Bug [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.21(2023-02-20) +- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +## 2.2.20(2023-02-17) +- 优化 值为空依然选中当天问题 +- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- 优化 字节小程序日期时间范围选择,底部日期换行的Bug +## 2.2.19(2023-02-09) +- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +## 2.2.18(2023-02-08) +- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- 优化 PC端输入日期格式错误时返回当前日期时间 +- 优化 PC端输入日期时间超出 start、end 限制的Bug +- 优化 移动端日期时间范围用法时间展示不完整问题 +## 2.2.17(2023-02-04) +- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- 修复 vue3 time-picker 无法显示绑定时分秒的Bug +## 2.2.16(2023-02-02) +- 修复 字节小程序报错的Bug +## 2.2.15(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 2.2.14(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033) +## 2.2.13(2023-01-10) +- 修复 多次加载组件造成内存占用的Bug +## 2.2.12(2022-12-01) +- 修复 vue3 下 i18n 国际化初始值不正确的Bug +## 2.2.11(2022-09-19) +- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的Bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化的Bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的Bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的Bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的Bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的Bug +- 修复 单选赋默认值时,赋值日期未高亮的Bug +- 修复 赋默认值时,移动端未正确显示时间的Bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的Bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的Bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的Bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的Bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的Bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的Bug +- 修复 start 和 end 不能动态赋值的Bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的Bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的Bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的Bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的Bug +- 修复 chang事件触发2次的Bug +- 修复 分、秒 end 范围错误的Bug +- 优化 更好的 nvue 适配 diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..0f9e121 --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,947 @@ + + + + + diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..1817692 --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,940 @@ + + + + + diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..6843e80 --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1064 @@ + + + + diff --git a/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..6e9f47d --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,421 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if (oldMonth !== 0 && newMonth - oldMonth === 0) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if (newMonth - oldMonth > 1) { + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + date: new Date(dateObj.year, month, -i).getDate(), + month, + disable: true + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare( + currentDate, this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ + date: i, + month, + disable: true + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const res = this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + return res ? res : this.getDateObj(date) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.multipleStatus.after = undefined; + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + //抖音小程序点击会触发hover事件,需要避免一下 + // #ifndef MP-TOUTIAO + if (!this.range || this.lastHover) return + const { + before + } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + // #endif + + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if (!weeks[index]) { + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond) { + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond) { + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if (num < 10) { + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date) { + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} +//ios低版本15及以下,无法匹配 没有 ’秒‘ 时的情况,所以需要在末尾 秒 加上 问号 +const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/; + +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export { + Calendar, + getDateTime, + getDate, + getTime, + addZero, + getDefaultSecond, + dateCompare, + checkDate, + fixIosDateFormat +} diff --git a/uniapp/uni_modules/uni-datetime-picker/package.json b/uniapp/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..a886f1b --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.38", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uniapp/uni_modules/uni-datetime-picker/readme.md b/uniapp/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uniapp/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uniapp/uni_modules/uni-easyinput/changelog.md b/uniapp/uni_modules/uni-easyinput/changelog.md new file mode 100644 index 0000000..84c72eb --- /dev/null +++ b/uniapp/uni_modules/uni-easyinput/changelog.md @@ -0,0 +1,115 @@ +## 1.1.19(2024-07-18) +- 修复 初始值传入 null 导致input报错的bug +## 1.1.18(2024-04-11) +- 修复 easyinput组件双向绑定问题 +## 1.1.17(2024-03-28) +- 修复 在头条小程序下丢失事件绑定的问题 +## 1.1.16(2024-03-20) +- 修复 在密码输入情况下 清除和小眼睛覆盖bug 在edge浏览器下显示双眼睛bug +## 1.1.15(2024-02-21) +- 新增 左侧插槽:left +## 1.1.14(2024-02-19) +- 修复 onBlur的emit传值错误 +## 1.1.12(2024-01-29) +- 补充 adjust-position文档属性补充 +## 1.1.11(2024-01-29) +- 补充 adjust-position属性传递值:(Boolean)当键盘弹起时,是否自动上推页面 +## 1.1.10(2024-01-22) +- 去除 移除无用的log输出 +## 1.1.9(2023-04-11) +- 修复 vue3 下 keyboardheightchange 事件报错的bug +## 1.1.8(2023-03-29) +- 优化 trim 属性默认值 +## 1.1.7(2023-03-29) +- 新增 cursor-spacing 属性 +## 1.1.6(2023-01-28) +- 新增 keyboardheightchange 事件,可监听键盘高度变化 +## 1.1.5(2022-11-29) +- 优化 主题样式 +## 1.1.4(2022-10-27) +- 修复 props 中背景颜色无默认值的bug +## 1.1.0(2022-06-30) + +- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- 新增 clear 事件,点击右侧叉号图标触发 +- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 + +## 1.0.5(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.4(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.3(2022-05-20) + +- 修复 关闭图标某些情况下无法取消的 bug + +## 1.0.2(2022-04-12) + +- 修复 默认值不生效的 bug + +## 1.0.1(2022-04-02) + +- 修复 value 不能为 0 的 bug + +## 1.0.0(2021-11-19) + +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput) + +## 0.1.4(2021-08-20) + +- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug + +## 0.1.3(2021-08-11) + +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 + +## 0.1.2(2021-07-30) + +- 优化 vue3 下事件警告的问题 + +## 0.1.1 + +- 优化 errorMessage 属性支持 Boolean 类型 + +## 0.1.0(2021-07-13) + +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) + +## 0.0.16(2021-06-29) + +- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug + +## 0.0.15(2021-06-21) + +- 修复 passwordIcon 属性拼写错误的 bug + +## 0.0.14(2021-06-18) + +- 新增 passwordIcon 属性,当 type=password 时是否显示小眼睛图标 +- 修复 confirmType 属性不生效的问题 + +## 0.0.13(2021-06-04) + +- 修复 disabled 状态可清出内容的 bug + +## 0.0.12(2021-05-12) + +- 新增 组件示例地址 + +## 0.0.11(2021-05-07) + +- 修复 input-border 属性不生效的问题 + +## 0.0.10(2021-04-30) + +- 修复 ios 遮挡文字、显示一半的问题 + +## 0.0.9(2021-02-05) + +- 调整为 uni_modules 目录规范 +- 优化 兼容 nvue 页面 diff --git a/uniapp/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/uniapp/uni_modules/uni-easyinput/components/uni-easyinput/common.js new file mode 100644 index 0000000..fde8d3c --- /dev/null +++ b/uniapp/uni_modules/uni-easyinput/components/uni-easyinput/common.js @@ -0,0 +1,54 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + return function() { + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/uniapp/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/uniapp/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..93506d6 --- /dev/null +++ b/uniapp/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,676 @@ + + + + + \ No newline at end of file diff --git a/uniapp/uni_modules/uni-easyinput/package.json b/uniapp/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..2939256 --- /dev/null +++ b/uniapp/uni_modules/uni-easyinput/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.19", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uniapp/uni_modules/uni-easyinput/readme.md b/uniapp/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/uniapp/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uniapp/uni_modules/uni-fav/changelog.md b/uniapp/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/uniapp/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uniapp/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uniapp/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/uniapp/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/uniapp/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/uniapp/uni_modules/uni-fav/package.json b/uniapp/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/uniapp/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uniapp/uni_modules/uni-fav/readme.md b/uniapp/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/uniapp/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uniapp/uni_modules/uni-icons/changelog.md b/uniapp/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..0261131 --- /dev/null +++ b/uniapp/uni_modules/uni-icons/changelog.md @@ -0,0 +1,42 @@ +## 2.0.10(2024-06-07) +- 优化 uni-app x 中,size 属性的类型 +## 2.0.9(2024-01-12) +fix: 修复图标大小默认值错误的问题 +## 2.0.8(2023-12-14) +- 修复 项目未使用 ts 情况下,打包报错的bug +## 2.0.7(2023-12-14) +- 修复 size 属性为 string 时,不加单位导致尺寸异常的bug +## 2.0.6(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.5(2023-12-11) +- 优化 兼容老版本icon类型,如 top ,bottom 等 +## 2.0.4(2023-12-06) +- 优化 uni-app x 下示例项目图标排序 +## 2.0.3(2023-12-06) +- 修复 nvue下引入组件报错的bug +## 2.0.2(2023-12-05) +-优化 size 属性支持单位 +## 2.0.1(2023-12-05) +- 新增 uni-app x 支持定义图标 +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue b/uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue new file mode 100644 index 0000000..8740559 --- /dev/null +++ b/uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue @@ -0,0 +1,91 @@ + + + + + diff --git a/uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..7da5356 --- /dev/null +++ b/uniapp/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..0a6b6fe --- /dev/null +++ b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,664 @@ + +.uniui-cart-filled:before { + content: "\e6d0"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-arrowthinleft:before { + content: "\e6d2"; +} + +.uniui-arrowthinup:before { + content: "\e6d3"; +} + +.uniui-arrowthindown:before { + content: "\e6d4"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthinright:before { + content: "\e6d1"; +} + +.uniui-down:before { + content: "\e6b8"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowright:before { + content: "\e6d5"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-up:before { + content: "\e6b6"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowup:before { + content: "\e6d6"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..14696d0 Binary files /dev/null and b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts new file mode 100644 index 0000000..98e93aa --- /dev/null +++ b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts @@ -0,0 +1,664 @@ + +export type IconsData = { + id : string + name : string + font_family : string + css_prefix_text : string + description : string + glyphs : Array +} + +export type IconsDataItem = { + font_class : string + unicode : string +} + + +export const fontData = [ + { + "font_class": "arrow-down", + "unicode": "\ue6be" + }, + { + "font_class": "arrow-left", + "unicode": "\ue6bc" + }, + { + "font_class": "arrow-right", + "unicode": "\ue6bb" + }, + { + "font_class": "arrow-up", + "unicode": "\ue6bd" + }, + { + "font_class": "auth", + "unicode": "\ue6ab" + }, + { + "font_class": "auth-filled", + "unicode": "\ue6cc" + }, + { + "font_class": "back", + "unicode": "\ue6b9" + }, + { + "font_class": "bars", + "unicode": "\ue627" + }, + { + "font_class": "calendar", + "unicode": "\ue6a0" + }, + { + "font_class": "calendar-filled", + "unicode": "\ue6c0" + }, + { + "font_class": "camera", + "unicode": "\ue65a" + }, + { + "font_class": "camera-filled", + "unicode": "\ue658" + }, + { + "font_class": "cart", + "unicode": "\ue631" + }, + { + "font_class": "cart-filled", + "unicode": "\ue6d0" + }, + { + "font_class": "chat", + "unicode": "\ue65d" + }, + { + "font_class": "chat-filled", + "unicode": "\ue659" + }, + { + "font_class": "chatboxes", + "unicode": "\ue696" + }, + { + "font_class": "chatboxes-filled", + "unicode": "\ue692" + }, + { + "font_class": "chatbubble", + "unicode": "\ue697" + }, + { + "font_class": "chatbubble-filled", + "unicode": "\ue694" + }, + { + "font_class": "checkbox", + "unicode": "\ue62b" + }, + { + "font_class": "checkbox-filled", + "unicode": "\ue62c" + }, + { + "font_class": "checkmarkempty", + "unicode": "\ue65c" + }, + { + "font_class": "circle", + "unicode": "\ue65b" + }, + { + "font_class": "circle-filled", + "unicode": "\ue65e" + }, + { + "font_class": "clear", + "unicode": "\ue66d" + }, + { + "font_class": "close", + "unicode": "\ue673" + }, + { + "font_class": "closeempty", + "unicode": "\ue66c" + }, + { + "font_class": "cloud-download", + "unicode": "\ue647" + }, + { + "font_class": "cloud-download-filled", + "unicode": "\ue646" + }, + { + "font_class": "cloud-upload", + "unicode": "\ue645" + }, + { + "font_class": "cloud-upload-filled", + "unicode": "\ue648" + }, + { + "font_class": "color", + "unicode": "\ue6cf" + }, + { + "font_class": "color-filled", + "unicode": "\ue6c9" + }, + { + "font_class": "compose", + "unicode": "\ue67f" + }, + { + "font_class": "contact", + "unicode": "\ue693" + }, + { + "font_class": "contact-filled", + "unicode": "\ue695" + }, + { + "font_class": "down", + "unicode": "\ue6b8" + }, + { + "font_class": "bottom", + "unicode": "\ue6b8" + }, + { + "font_class": "download", + "unicode": "\ue68d" + }, + { + "font_class": "download-filled", + "unicode": "\ue681" + }, + { + "font_class": "email", + "unicode": "\ue69e" + }, + { + "font_class": "email-filled", + "unicode": "\ue69a" + }, + { + "font_class": "eye", + "unicode": "\ue651" + }, + { + "font_class": "eye-filled", + "unicode": "\ue66a" + }, + { + "font_class": "eye-slash", + "unicode": "\ue6b3" + }, + { + "font_class": "eye-slash-filled", + "unicode": "\ue6b4" + }, + { + "font_class": "fire", + "unicode": "\ue6a1" + }, + { + "font_class": "fire-filled", + "unicode": "\ue6c5" + }, + { + "font_class": "flag", + "unicode": "\ue65f" + }, + { + "font_class": "flag-filled", + "unicode": "\ue660" + }, + { + "font_class": "folder-add", + "unicode": "\ue6a9" + }, + { + "font_class": "folder-add-filled", + "unicode": "\ue6c8" + }, + { + "font_class": "font", + "unicode": "\ue6a3" + }, + { + "font_class": "forward", + "unicode": "\ue6ba" + }, + { + "font_class": "gear", + "unicode": "\ue664" + }, + { + "font_class": "gear-filled", + "unicode": "\ue661" + }, + { + "font_class": "gift", + "unicode": "\ue6a4" + }, + { + "font_class": "gift-filled", + "unicode": "\ue6c4" + }, + { + "font_class": "hand-down", + "unicode": "\ue63d" + }, + { + "font_class": "hand-down-filled", + "unicode": "\ue63c" + }, + { + "font_class": "hand-up", + "unicode": "\ue63f" + }, + { + "font_class": "hand-up-filled", + "unicode": "\ue63e" + }, + { + "font_class": "headphones", + "unicode": "\ue630" + }, + { + "font_class": "heart", + "unicode": "\ue639" + }, + { + "font_class": "heart-filled", + "unicode": "\ue641" + }, + { + "font_class": "help", + "unicode": "\ue679" + }, + { + "font_class": "help-filled", + "unicode": "\ue674" + }, + { + "font_class": "home", + "unicode": "\ue662" + }, + { + "font_class": "home-filled", + "unicode": "\ue663" + }, + { + "font_class": "image", + "unicode": "\ue670" + }, + { + "font_class": "image-filled", + "unicode": "\ue678" + }, + { + "font_class": "images", + "unicode": "\ue650" + }, + { + "font_class": "images-filled", + "unicode": "\ue64b" + }, + { + "font_class": "info", + "unicode": "\ue669" + }, + { + "font_class": "info-filled", + "unicode": "\ue649" + }, + { + "font_class": "left", + "unicode": "\ue6b7" + }, + { + "font_class": "link", + "unicode": "\ue6a5" + }, + { + "font_class": "list", + "unicode": "\ue644" + }, + { + "font_class": "location", + "unicode": "\ue6ae" + }, + { + "font_class": "location-filled", + "unicode": "\ue6af" + }, + { + "font_class": "locked", + "unicode": "\ue66b" + }, + { + "font_class": "locked-filled", + "unicode": "\ue668" + }, + { + "font_class": "loop", + "unicode": "\ue633" + }, + { + "font_class": "mail-open", + "unicode": "\ue643" + }, + { + "font_class": "mail-open-filled", + "unicode": "\ue63a" + }, + { + "font_class": "map", + "unicode": "\ue667" + }, + { + "font_class": "map-filled", + "unicode": "\ue666" + }, + { + "font_class": "map-pin", + "unicode": "\ue6ad" + }, + { + "font_class": "map-pin-ellipse", + "unicode": "\ue6ac" + }, + { + "font_class": "medal", + "unicode": "\ue6a2" + }, + { + "font_class": "medal-filled", + "unicode": "\ue6c3" + }, + { + "font_class": "mic", + "unicode": "\ue671" + }, + { + "font_class": "mic-filled", + "unicode": "\ue677" + }, + { + "font_class": "micoff", + "unicode": "\ue67e" + }, + { + "font_class": "micoff-filled", + "unicode": "\ue6b0" + }, + { + "font_class": "minus", + "unicode": "\ue66f" + }, + { + "font_class": "minus-filled", + "unicode": "\ue67d" + }, + { + "font_class": "more", + "unicode": "\ue64d" + }, + { + "font_class": "more-filled", + "unicode": "\ue64e" + }, + { + "font_class": "navigate", + "unicode": "\ue66e" + }, + { + "font_class": "navigate-filled", + "unicode": "\ue67a" + }, + { + "font_class": "notification", + "unicode": "\ue6a6" + }, + { + "font_class": "notification-filled", + "unicode": "\ue6c1" + }, + { + "font_class": "paperclip", + "unicode": "\ue652" + }, + { + "font_class": "paperplane", + "unicode": "\ue672" + }, + { + "font_class": "paperplane-filled", + "unicode": "\ue675" + }, + { + "font_class": "person", + "unicode": "\ue699" + }, + { + "font_class": "person-filled", + "unicode": "\ue69d" + }, + { + "font_class": "personadd", + "unicode": "\ue69f" + }, + { + "font_class": "personadd-filled", + "unicode": "\ue698" + }, + { + "font_class": "personadd-filled-copy", + "unicode": "\ue6d1" + }, + { + "font_class": "phone", + "unicode": "\ue69c" + }, + { + "font_class": "phone-filled", + "unicode": "\ue69b" + }, + { + "font_class": "plus", + "unicode": "\ue676" + }, + { + "font_class": "plus-filled", + "unicode": "\ue6c7" + }, + { + "font_class": "plusempty", + "unicode": "\ue67b" + }, + { + "font_class": "pulldown", + "unicode": "\ue632" + }, + { + "font_class": "pyq", + "unicode": "\ue682" + }, + { + "font_class": "qq", + "unicode": "\ue680" + }, + { + "font_class": "redo", + "unicode": "\ue64a" + }, + { + "font_class": "redo-filled", + "unicode": "\ue655" + }, + { + "font_class": "refresh", + "unicode": "\ue657" + }, + { + "font_class": "refresh-filled", + "unicode": "\ue656" + }, + { + "font_class": "refreshempty", + "unicode": "\ue6bf" + }, + { + "font_class": "reload", + "unicode": "\ue6b2" + }, + { + "font_class": "right", + "unicode": "\ue6b5" + }, + { + "font_class": "scan", + "unicode": "\ue62a" + }, + { + "font_class": "search", + "unicode": "\ue654" + }, + { + "font_class": "settings", + "unicode": "\ue653" + }, + { + "font_class": "settings-filled", + "unicode": "\ue6ce" + }, + { + "font_class": "shop", + "unicode": "\ue62f" + }, + { + "font_class": "shop-filled", + "unicode": "\ue6cd" + }, + { + "font_class": "smallcircle", + "unicode": "\ue67c" + }, + { + "font_class": "smallcircle-filled", + "unicode": "\ue665" + }, + { + "font_class": "sound", + "unicode": "\ue684" + }, + { + "font_class": "sound-filled", + "unicode": "\ue686" + }, + { + "font_class": "spinner-cycle", + "unicode": "\ue68a" + }, + { + "font_class": "staff", + "unicode": "\ue6a7" + }, + { + "font_class": "staff-filled", + "unicode": "\ue6cb" + }, + { + "font_class": "star", + "unicode": "\ue688" + }, + { + "font_class": "star-filled", + "unicode": "\ue68f" + }, + { + "font_class": "starhalf", + "unicode": "\ue683" + }, + { + "font_class": "trash", + "unicode": "\ue687" + }, + { + "font_class": "trash-filled", + "unicode": "\ue685" + }, + { + "font_class": "tune", + "unicode": "\ue6aa" + }, + { + "font_class": "tune-filled", + "unicode": "\ue6ca" + }, + { + "font_class": "undo", + "unicode": "\ue64f" + }, + { + "font_class": "undo-filled", + "unicode": "\ue64c" + }, + { + "font_class": "up", + "unicode": "\ue6b6" + }, + { + "font_class": "top", + "unicode": "\ue6b6" + }, + { + "font_class": "upload", + "unicode": "\ue690" + }, + { + "font_class": "upload-filled", + "unicode": "\ue68e" + }, + { + "font_class": "videocam", + "unicode": "\ue68c" + }, + { + "font_class": "videocam-filled", + "unicode": "\ue689" + }, + { + "font_class": "vip", + "unicode": "\ue6a8" + }, + { + "font_class": "vip-filled", + "unicode": "\ue6c6" + }, + { + "font_class": "wallet", + "unicode": "\ue6b1" + }, + { + "font_class": "wallet-filled", + "unicode": "\ue6c2" + }, + { + "font_class": "weibo", + "unicode": "\ue68b" + }, + { + "font_class": "weixin", + "unicode": "\ue691" + } +] as IconsDataItem[] + +// export const fontData = JSON.parse(fontDataJson) diff --git a/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js new file mode 100644 index 0000000..1cd11e1 --- /dev/null +++ b/uniapp/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js @@ -0,0 +1,649 @@ + +export const fontData = [ + { + "font_class": "arrow-down", + "unicode": "\ue6be" + }, + { + "font_class": "arrow-left", + "unicode": "\ue6bc" + }, + { + "font_class": "arrow-right", + "unicode": "\ue6bb" + }, + { + "font_class": "arrow-up", + "unicode": "\ue6bd" + }, + { + "font_class": "auth", + "unicode": "\ue6ab" + }, + { + "font_class": "auth-filled", + "unicode": "\ue6cc" + }, + { + "font_class": "back", + "unicode": "\ue6b9" + }, + { + "font_class": "bars", + "unicode": "\ue627" + }, + { + "font_class": "calendar", + "unicode": "\ue6a0" + }, + { + "font_class": "calendar-filled", + "unicode": "\ue6c0" + }, + { + "font_class": "camera", + "unicode": "\ue65a" + }, + { + "font_class": "camera-filled", + "unicode": "\ue658" + }, + { + "font_class": "cart", + "unicode": "\ue631" + }, + { + "font_class": "cart-filled", + "unicode": "\ue6d0" + }, + { + "font_class": "chat", + "unicode": "\ue65d" + }, + { + "font_class": "chat-filled", + "unicode": "\ue659" + }, + { + "font_class": "chatboxes", + "unicode": "\ue696" + }, + { + "font_class": "chatboxes-filled", + "unicode": "\ue692" + }, + { + "font_class": "chatbubble", + "unicode": "\ue697" + }, + { + "font_class": "chatbubble-filled", + "unicode": "\ue694" + }, + { + "font_class": "checkbox", + "unicode": "\ue62b" + }, + { + "font_class": "checkbox-filled", + "unicode": "\ue62c" + }, + { + "font_class": "checkmarkempty", + "unicode": "\ue65c" + }, + { + "font_class": "circle", + "unicode": "\ue65b" + }, + { + "font_class": "circle-filled", + "unicode": "\ue65e" + }, + { + "font_class": "clear", + "unicode": "\ue66d" + }, + { + "font_class": "close", + "unicode": "\ue673" + }, + { + "font_class": "closeempty", + "unicode": "\ue66c" + }, + { + "font_class": "cloud-download", + "unicode": "\ue647" + }, + { + "font_class": "cloud-download-filled", + "unicode": "\ue646" + }, + { + "font_class": "cloud-upload", + "unicode": "\ue645" + }, + { + "font_class": "cloud-upload-filled", + "unicode": "\ue648" + }, + { + "font_class": "color", + "unicode": "\ue6cf" + }, + { + "font_class": "color-filled", + "unicode": "\ue6c9" + }, + { + "font_class": "compose", + "unicode": "\ue67f" + }, + { + "font_class": "contact", + "unicode": "\ue693" + }, + { + "font_class": "contact-filled", + "unicode": "\ue695" + }, + { + "font_class": "down", + "unicode": "\ue6b8" + }, + { + "font_class": "bottom", + "unicode": "\ue6b8" + }, + { + "font_class": "download", + "unicode": "\ue68d" + }, + { + "font_class": "download-filled", + "unicode": "\ue681" + }, + { + "font_class": "email", + "unicode": "\ue69e" + }, + { + "font_class": "email-filled", + "unicode": "\ue69a" + }, + { + "font_class": "eye", + "unicode": "\ue651" + }, + { + "font_class": "eye-filled", + "unicode": "\ue66a" + }, + { + "font_class": "eye-slash", + "unicode": "\ue6b3" + }, + { + "font_class": "eye-slash-filled", + "unicode": "\ue6b4" + }, + { + "font_class": "fire", + "unicode": "\ue6a1" + }, + { + "font_class": "fire-filled", + "unicode": "\ue6c5" + }, + { + "font_class": "flag", + "unicode": "\ue65f" + }, + { + "font_class": "flag-filled", + "unicode": "\ue660" + }, + { + "font_class": "folder-add", + "unicode": "\ue6a9" + }, + { + "font_class": "folder-add-filled", + "unicode": "\ue6c8" + }, + { + "font_class": "font", + "unicode": "\ue6a3" + }, + { + "font_class": "forward", + "unicode": "\ue6ba" + }, + { + "font_class": "gear", + "unicode": "\ue664" + }, + { + "font_class": "gear-filled", + "unicode": "\ue661" + }, + { + "font_class": "gift", + "unicode": "\ue6a4" + }, + { + "font_class": "gift-filled", + "unicode": "\ue6c4" + }, + { + "font_class": "hand-down", + "unicode": "\ue63d" + }, + { + "font_class": "hand-down-filled", + "unicode": "\ue63c" + }, + { + "font_class": "hand-up", + "unicode": "\ue63f" + }, + { + "font_class": "hand-up-filled", + "unicode": "\ue63e" + }, + { + "font_class": "headphones", + "unicode": "\ue630" + }, + { + "font_class": "heart", + "unicode": "\ue639" + }, + { + "font_class": "heart-filled", + "unicode": "\ue641" + }, + { + "font_class": "help", + "unicode": "\ue679" + }, + { + "font_class": "help-filled", + "unicode": "\ue674" + }, + { + "font_class": "home", + "unicode": "\ue662" + }, + { + "font_class": "home-filled", + "unicode": "\ue663" + }, + { + "font_class": "image", + "unicode": "\ue670" + }, + { + "font_class": "image-filled", + "unicode": "\ue678" + }, + { + "font_class": "images", + "unicode": "\ue650" + }, + { + "font_class": "images-filled", + "unicode": "\ue64b" + }, + { + "font_class": "info", + "unicode": "\ue669" + }, + { + "font_class": "info-filled", + "unicode": "\ue649" + }, + { + "font_class": "left", + "unicode": "\ue6b7" + }, + { + "font_class": "link", + "unicode": "\ue6a5" + }, + { + "font_class": "list", + "unicode": "\ue644" + }, + { + "font_class": "location", + "unicode": "\ue6ae" + }, + { + "font_class": "location-filled", + "unicode": "\ue6af" + }, + { + "font_class": "locked", + "unicode": "\ue66b" + }, + { + "font_class": "locked-filled", + "unicode": "\ue668" + }, + { + "font_class": "loop", + "unicode": "\ue633" + }, + { + "font_class": "mail-open", + "unicode": "\ue643" + }, + { + "font_class": "mail-open-filled", + "unicode": "\ue63a" + }, + { + "font_class": "map", + "unicode": "\ue667" + }, + { + "font_class": "map-filled", + "unicode": "\ue666" + }, + { + "font_class": "map-pin", + "unicode": "\ue6ad" + }, + { + "font_class": "map-pin-ellipse", + "unicode": "\ue6ac" + }, + { + "font_class": "medal", + "unicode": "\ue6a2" + }, + { + "font_class": "medal-filled", + "unicode": "\ue6c3" + }, + { + "font_class": "mic", + "unicode": "\ue671" + }, + { + "font_class": "mic-filled", + "unicode": "\ue677" + }, + { + "font_class": "micoff", + "unicode": "\ue67e" + }, + { + "font_class": "micoff-filled", + "unicode": "\ue6b0" + }, + { + "font_class": "minus", + "unicode": "\ue66f" + }, + { + "font_class": "minus-filled", + "unicode": "\ue67d" + }, + { + "font_class": "more", + "unicode": "\ue64d" + }, + { + "font_class": "more-filled", + "unicode": "\ue64e" + }, + { + "font_class": "navigate", + "unicode": "\ue66e" + }, + { + "font_class": "navigate-filled", + "unicode": "\ue67a" + }, + { + "font_class": "notification", + "unicode": "\ue6a6" + }, + { + "font_class": "notification-filled", + "unicode": "\ue6c1" + }, + { + "font_class": "paperclip", + "unicode": "\ue652" + }, + { + "font_class": "paperplane", + "unicode": "\ue672" + }, + { + "font_class": "paperplane-filled", + "unicode": "\ue675" + }, + { + "font_class": "person", + "unicode": "\ue699" + }, + { + "font_class": "person-filled", + "unicode": "\ue69d" + }, + { + "font_class": "personadd", + "unicode": "\ue69f" + }, + { + "font_class": "personadd-filled", + "unicode": "\ue698" + }, + { + "font_class": "personadd-filled-copy", + "unicode": "\ue6d1" + }, + { + "font_class": "phone", + "unicode": "\ue69c" + }, + { + "font_class": "phone-filled", + "unicode": "\ue69b" + }, + { + "font_class": "plus", + "unicode": "\ue676" + }, + { + "font_class": "plus-filled", + "unicode": "\ue6c7" + }, + { + "font_class": "plusempty", + "unicode": "\ue67b" + }, + { + "font_class": "pulldown", + "unicode": "\ue632" + }, + { + "font_class": "pyq", + "unicode": "\ue682" + }, + { + "font_class": "qq", + "unicode": "\ue680" + }, + { + "font_class": "redo", + "unicode": "\ue64a" + }, + { + "font_class": "redo-filled", + "unicode": "\ue655" + }, + { + "font_class": "refresh", + "unicode": "\ue657" + }, + { + "font_class": "refresh-filled", + "unicode": "\ue656" + }, + { + "font_class": "refreshempty", + "unicode": "\ue6bf" + }, + { + "font_class": "reload", + "unicode": "\ue6b2" + }, + { + "font_class": "right", + "unicode": "\ue6b5" + }, + { + "font_class": "scan", + "unicode": "\ue62a" + }, + { + "font_class": "search", + "unicode": "\ue654" + }, + { + "font_class": "settings", + "unicode": "\ue653" + }, + { + "font_class": "settings-filled", + "unicode": "\ue6ce" + }, + { + "font_class": "shop", + "unicode": "\ue62f" + }, + { + "font_class": "shop-filled", + "unicode": "\ue6cd" + }, + { + "font_class": "smallcircle", + "unicode": "\ue67c" + }, + { + "font_class": "smallcircle-filled", + "unicode": "\ue665" + }, + { + "font_class": "sound", + "unicode": "\ue684" + }, + { + "font_class": "sound-filled", + "unicode": "\ue686" + }, + { + "font_class": "spinner-cycle", + "unicode": "\ue68a" + }, + { + "font_class": "staff", + "unicode": "\ue6a7" + }, + { + "font_class": "staff-filled", + "unicode": "\ue6cb" + }, + { + "font_class": "star", + "unicode": "\ue688" + }, + { + "font_class": "star-filled", + "unicode": "\ue68f" + }, + { + "font_class": "starhalf", + "unicode": "\ue683" + }, + { + "font_class": "trash", + "unicode": "\ue687" + }, + { + "font_class": "trash-filled", + "unicode": "\ue685" + }, + { + "font_class": "tune", + "unicode": "\ue6aa" + }, + { + "font_class": "tune-filled", + "unicode": "\ue6ca" + }, + { + "font_class": "undo", + "unicode": "\ue64f" + }, + { + "font_class": "undo-filled", + "unicode": "\ue64c" + }, + { + "font_class": "up", + "unicode": "\ue6b6" + }, + { + "font_class": "top", + "unicode": "\ue6b6" + }, + { + "font_class": "upload", + "unicode": "\ue690" + }, + { + "font_class": "upload-filled", + "unicode": "\ue68e" + }, + { + "font_class": "videocam", + "unicode": "\ue68c" + }, + { + "font_class": "videocam-filled", + "unicode": "\ue689" + }, + { + "font_class": "vip", + "unicode": "\ue6a8" + }, + { + "font_class": "vip-filled", + "unicode": "\ue6c6" + }, + { + "font_class": "wallet", + "unicode": "\ue6b1" + }, + { + "font_class": "wallet-filled", + "unicode": "\ue6c2" + }, + { + "font_class": "weibo", + "unicode": "\ue68b" + }, + { + "font_class": "weixin", + "unicode": "\ue691" + } +] + +// export const fontData = JSON.parse(fontDataJson) diff --git a/uniapp/uni_modules/uni-icons/package.json b/uniapp/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..6b681b4 --- /dev/null +++ b/uniapp/uni_modules/uni-icons/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "2.0.10", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-uvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uniapp/uni_modules/uni-icons/readme.md b/uniapp/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uniapp/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uniapp/uni_modules/uni-popup/changelog.md b/uniapp/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..f559715 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/changelog.md @@ -0,0 +1,92 @@ +## 1.9.5(2024-10-15) +- 修复 微信小程序中的getSystemInfo警告 +## 1.9.4(2024-10-12) +- 修复 微信小程序中的getSystemInfo警告 +## 1.9.3(2024-10-12) +- 修复 微信小程序中的getSystemInfo警告 +## 1.9.2(2024-09-21) +- 修复 uni-popup在android上的重复点击弹出位置不正确的bug +## 1.9.1(2024-04-02) +- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法) +## 1.9.0(2024-03-28) +- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正 +## 1.8.9(2024-03-20) +- 修复 uni-popup-dialog 数据输入时修正为双向绑定 +## 1.8.8(2024-02-20) +- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug +## 1.8.7(2024-02-02) +- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦 +## 1.8.6(2024-01-30) +- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数 +## 1.8.5(2024-01-26) +- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示 +## 1.8.4(2023-11-15) +- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uniapp/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uniapp/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..08707d4 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uniapp/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uniapp/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..f7e667c --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/keypress.js b/uniapp/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/popup.js b/uniapp/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue new file mode 100644 index 0000000..5eb8d5b --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..5af55e0 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,518 @@ + + + + diff --git a/uniapp/uni_modules/uni-popup/package.json b/uniapp/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..2750803 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.9.5", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uniapp/uni_modules/uni-popup/readme.md b/uniapp/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uniapp/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uniapp/uni_modules/uni-scss/changelog.md b/uniapp/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uniapp/uni_modules/uni-scss/index.scss b/uniapp/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uniapp/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uniapp/uni_modules/uni-scss/package.json b/uniapp/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uniapp/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uniapp/uni_modules/uni-scss/readme.md b/uniapp/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uniapp/uni_modules/uni-scss/styles/index.scss b/uniapp/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_border.scss b/uniapp/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_color.scss b/uniapp/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_radius.scss b/uniapp/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_space.scss b/uniapp/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_styles.scss b/uniapp/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_text.scss b/uniapp/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uniapp/uni_modules/uni-scss/styles/setting/_variables.scss b/uniapp/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uniapp/uni_modules/uni-scss/styles/tools/functions.scss b/uniapp/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uniapp/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uniapp/uni_modules/uni-scss/theme.scss b/uniapp/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uniapp/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uniapp/uni_modules/uni-scss/variables.scss b/uniapp/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uniapp/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uniapp/uni_modules/uni-transition/changelog.md b/uniapp/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..faaf336 --- /dev/null +++ b/uniapp/uni_modules/uni-transition/changelog.md @@ -0,0 +1,24 @@ +## 1.3.3(2024-04-23) +- 修复 当元素会受变量影响自动隐藏的bug +## 1.3.2(2023-05-04) +- 修复 NVUE 平台报错的问题 +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uniapp/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uniapp/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uniapp/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uniapp/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uniapp/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..f3ddd1f --- /dev/null +++ b/uniapp/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/uniapp/uni_modules/uni-transition/package.json b/uniapp/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d5c20e1 --- /dev/null +++ b/uniapp/uni_modules/uni-transition/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.3", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uniapp/uni_modules/uni-transition/readme.md b/uniapp/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uniapp/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uniapp/user_func.js b/uniapp/user_func.js new file mode 100644 index 0000000..afdd005 --- /dev/null +++ b/uniapp/user_func.js @@ -0,0 +1,4 @@ +export const user_func={ + + +} \ No newline at end of file