Browse Source

Almost a complete rewrite, part 4.

lllllllillllllillll 9 months ago
parent
commit
5fb7878f59
100 changed files with 1524 additions and 45603 deletions
  1. 3 3
      .dockerignore
  2. 1 0
      .gitignore
  3. 1 0
      appdata/compose/.gitignore
  4. 23 66
      appdata/templates/default.json
  5. 1 0
      appdata/tmp/.gitignore
  6. 11 1
      controllers/account.js
  7. 375 35
      controllers/apps.js
  8. 38 0
      controllers/credits.js
  9. 232 176
      controllers/dashboard.js
  10. 13 23
      controllers/images.js
  11. 26 13
      controllers/login.js
  12. 63 15
      controllers/networks.js
  13. 18 2
      controllers/preferences.js
  14. 22 15
      controllers/register.js
  15. 121 42
      controllers/settings.js
  16. 53 0
      controllers/sponsors.js
  17. 53 3
      controllers/syslogs.js
  18. 25 26
      controllers/users.js
  19. 58 3
      controllers/volumes.js
  20. 130 6
      database/config.js
  21. 15 10
      languages/chinese.json
  22. 207 16
      package-lock.json
  23. 6 2
      package.json
  24. 0 276
      public/css/demo.rtl.css
  25. 0 8
      public/css/demo.rtl.min.css
  26. 29 0
      public/css/dweebui.css
  27. 0 10
      public/css/tabler-social.css
  28. 0 8
      public/css/tabler-social.min.css
  29. 0 10
      public/css/tabler-social.rtl.css
  30. 0 8
      public/css/tabler-social.rtl.min.css
  31. 0 25777
      public/css/tabler.rtl.css
  32. 0 8
      public/css/tabler.rtl.min.css
  33. 0 35
      public/js/demo-theme.js
  34. 0 9
      public/js/demo-theme.min.js
  35. 0 8
      public/js/tabler.esm.js
  36. 0 8
      public/js/tabler.esm.min.js
  37. 0 6314
      public/libs/bootstrap/dist/js/bootstrap.bundle.js
  38. 0 0
      public/libs/bootstrap/dist/js/bootstrap.bundle.js.map
  39. 0 5
      public/libs/bootstrap/dist/js/bootstrap.bundle.min.js
  40. 0 0
      public/libs/bootstrap/dist/js/bootstrap.bundle.min.js.map
  41. 0 4447
      public/libs/bootstrap/dist/js/bootstrap.esm.js
  42. 0 0
      public/libs/bootstrap/dist/js/bootstrap.esm.js.map
  43. 0 5
      public/libs/bootstrap/dist/js/bootstrap.esm.min.js
  44. 0 0
      public/libs/bootstrap/dist/js/bootstrap.esm.min.js.map
  45. 0 4494
      public/libs/bootstrap/dist/js/bootstrap.js
  46. 0 0
      public/libs/bootstrap/dist/js/bootstrap.js.map
  47. 0 5
      public/libs/bootstrap/dist/js/bootstrap.min.js
  48. 0 0
      public/libs/bootstrap/dist/js/bootstrap.min.js.map
  49. 0 66
      public/libs/countup.js/dist/countUp.d.ts
  50. 0 300
      public/libs/countup.js/dist/countUp.js
  51. 0 0
      public/libs/countup.js/dist/countUp.min.js
  52. 0 0
      public/libs/countup.js/dist/countUp.umd.js
  53. 0 26
      public/libs/countup.js/dist/requestAnimationFrame.polyfill.js
  54. 0 1
      public/libs/dropzone/dist/basic.css
  55. 0 1
      public/libs/dropzone/dist/basic.css.map
  56. 0 0
      public/libs/dropzone/dist/dropzone-min.js
  57. 0 0
      public/libs/dropzone/dist/dropzone-min.js.map
  58. 0 0
      public/libs/dropzone/dist/dropzone.css
  59. 0 1
      public/libs/dropzone/dist/dropzone.css.map
  60. 0 129
      public/libs/dropzone/dist/dropzone.js
  61. 0 0
      public/libs/dropzone/dist/dropzone.js.map
  62. 0 74
      public/libs/dropzone/dist/dropzone.mjs
  63. 0 0
      public/libs/dropzone/dist/dropzone.mjs.map
  64. 0 21
      public/libs/fslightbox/LICENSE
  65. 0 68
      public/libs/fslightbox/README.md
  66. 0 0
      public/libs/fslightbox/index.js
  67. 0 38
      public/libs/fslightbox/package.json
  68. 0 2318
      public/libs/jsvectormap/dist/js/jsvectormap.js
  69. 0 0
      public/libs/jsvectormap/dist/js/jsvectormap.min.js
  70. 0 0
      public/libs/jsvectormap/dist/maps/world-merc.js
  71. 0 0
      public/libs/jsvectormap/dist/maps/world.js
  72. 0 11
      public/libs/litepicker/dist/bundle.js
  73. 0 11
      public/libs/litepicker/dist/css/litepicker.css
  74. 0 12
      public/libs/litepicker/dist/css/plugins/keyboardnav.js.css
  75. 0 133
      public/libs/litepicker/dist/css/plugins/mobilefriendly.js.css
  76. 0 54
      public/libs/litepicker/dist/css/plugins/multiselect.js.css
  77. 0 81
      public/libs/litepicker/dist/css/plugins/ranges.js.css
  78. 0 11
      public/libs/litepicker/dist/js/main.js
  79. 0 11
      public/libs/litepicker/dist/litepicker.amd.js
  80. 0 11
      public/libs/litepicker/dist/litepicker.commonjs2.js
  81. 0 11
      public/libs/litepicker/dist/litepicker.js
  82. 0 11
      public/libs/litepicker/dist/litepicker.umd.js
  83. 0 11
      public/libs/litepicker/dist/nocss/litepicker.amd.js
  84. 0 11
      public/libs/litepicker/dist/nocss/litepicker.commonjs2.js
  85. 0 11
      public/libs/litepicker/dist/nocss/litepicker.js
  86. 0 11
      public/libs/litepicker/dist/nocss/litepicker.umd.js
  87. 0 10
      public/libs/litepicker/dist/nocss/plugins/keyboardnav.js
  88. 0 10
      public/libs/litepicker/dist/nocss/plugins/mobilefriendly.js
  89. 0 10
      public/libs/litepicker/dist/nocss/plugins/multiselect.js
  90. 0 10
      public/libs/litepicker/dist/nocss/plugins/ranges.js
  91. 0 10
      public/libs/litepicker/dist/plugins/keyboardnav.js
  92. 0 10
      public/libs/litepicker/dist/plugins/mobilefriendly.js
  93. 0 10
      public/libs/litepicker/dist/plugins/multiselect.js
  94. 0 10
      public/libs/litepicker/dist/plugins/ranges.js
  95. 0 14
      public/libs/litepicker/dist/types/calendar.d.ts
  96. 0 23
      public/libs/litepicker/dist/types/core.d.ts
  97. 0 41
      public/libs/litepicker/dist/types/datetime.d.ts
  98. 0 4
      public/libs/litepicker/dist/types/index.d.ts
  99. 0 80
      public/libs/litepicker/dist/types/interfaces.d.ts
  100. 0 25
      public/libs/litepicker/dist/types/litepicker.d.ts

+ 3 - 3
.dockerignore

@@ -1,9 +1,9 @@
-sessions.sqlite
-settings.sqlite
+**/*.sqlite
 **/node_modules
 **/screenshots
 .gitignore
 .github
 .git
 Dockerfile
-docker-compose.yaml
+docker-compose.yaml
+**/*.yaml

+ 1 - 0
.gitignore

@@ -1,5 +1,6 @@
 sessions.sqlite
 settings.sqlite
 **/node_modules
+**/*.yaml
 .github
 .git

+ 1 - 0
appdata/compose/.gitignore

@@ -0,0 +1 @@
+!.gitignore

+ 23 - 66
appdata/templates/default.json

@@ -40,6 +40,24 @@
           "label": "TZ",
           "default": "America/Los_Angeles"
         }
+      ],
+      "labels": [
+        {
+          "name": "traefik.enable",
+          "value": "true"
+        },
+        {
+          "name": "traefik.http.services.heimdall.loadbalancer.server.port",
+          "value": "80"
+        },
+        {
+          "name": "traefik.http.routers.heimdall.entrypoints",
+          "value": "websecure"
+        },
+        {
+          "name": "traefik.http.routers.heimdall.tls.certresolver",
+          "value": "mydnschallenge"
+        }
       ]
     },
     {
@@ -1934,7 +1952,7 @@
       "title": "Fail2ban",
       "name": "fail2ban",
       "note": "",
-      "description": "Fail2ban is a daemon to ban hosts that cause multiple authentication errors.",
+      "description": "Fail2Ban is an intrusion prevention software framework, designed to prevent brute-force attacks. It is able to run on POSIX systems that have an interface to a packet-control system or firewall installed locally, such as iptables or TCP Wrapper.",
       "platform": "linux",
       "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/fail2ban.png",
       "image": "linuxserver/fail2ban:latest",
@@ -3123,7 +3141,7 @@
         "Networking",
         "Tools"
       ],
-      "description": "A clientless remote desktop gateway.",
+      "description": "Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC and RDP. It is called clientless because no plugins or client software are required.",
       "image": "oznu/guacamole:latest",
       "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/guacamole.png",
       "name": "guacamole",
@@ -5021,67 +5039,6 @@
       ],
       "privileged": true
     },
-    {
-      "name": "nocodb",
-      "title": "NocoDB",
-      "note": "",
-      "description": "NocoDB is a free, open-source, self-hosted, no-code platform to make database driven application. <a href='https://www.nocodb.com/' target='_blank'>Website</a>. <a href='https://hub.docker.com/r/nocodb/nocodb' target='_blank'>Docker Hub</a>",
-      "logo": "https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/nocodb.png",
-      "image": "nocodb/nocodb",
-      "categories": [
-        "Database"
-      ],
-      "volumes": [
-        {
-          "bind": "/home/docker/nocodb",
-          "container": "/var/lib/nocodb",
-          "mode": "rw"
-        }
-      ],
-      "ports" : [
-        {
-          "host": "8080",
-          "container": "8080"
-        }
-      ],
-      "env": [
-        {
-          "name": "NOCODB_DB_HOST",
-          "label": "Database Host",
-          "description": "Database host",
-          "type": "text",
-          "default": "mysql"
-        },
-        {
-          "name": "NOCODB_DB_PORT",
-          "label": "Database Port",
-          "description": "Database port",
-          "type": "text",
-          "default": "3306"
-        },
-        {
-          "name": "NOCODB_DB_USER",
-          "label": "Database User",
-          "description": "Database user",
-          "type": "text",
-          "default": "root"
-        },
-        {
-          "name": "NOCODB_DB_PASSWORD",
-          "label": "Database Password",
-          "description": "Database password",
-          "type": "password",
-          "default": "password"
-        },
-        {
-          "name": "NOCODB_DB_NAME",
-          "label": "Database Name",
-          "description": "Database name",
-          "type": "text",
-          "default": "nocodb"
-        }
-      ]
-    },
     {
       "categories": [
         "Tools"
@@ -5106,7 +5063,7 @@
       ],
       "note": "DNS-over-HTTPS: [80:80/TCP] [443:443/TCP] [443:443/UDP] [3000:3000/TCP] [DEFAULT]. DNS: [53:53/TCP] [53:53/UDP]. Admin Panel: [3000:3000/TCP]. DHCP: [67:67/UDP] [68:68/TCP] [68:68/UDP]. DNS-over-TLS: [853:853/TCP]. DNS-over-QUIC: [784:784/UDP] [853:853/UDP] [8853:8853/UDP]. DNSCrypt: [5443:5443/TCP] [5443:5443/UDP]",
       "image": "adguard/adguardhome:latest",
-      "logo": "https://raw.githubusercontent.com/Qballjos/portainer_templates/master/Images/adguard.png",
+      "logo": "https://raw.githubusercontent.com/lllllllillllllillll/Dashboard-Icons/main/png/adguard.png",
       "name": "adguard",
       "platform": "linux",
       "ports": [
@@ -5357,7 +5314,7 @@
         "CMS"
       ],
       "platform": "linux",
-      "logo": "https://portainer-io-assets.sfo2.digitaloceanspaces.com/logos/drupal.png",
+      "logo": "https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/drupal.png",
       "image": "drupal:latest",
       "ports": [
         "80/tcp"
@@ -5519,7 +5476,7 @@
     {
       "type": 1,
       "name": "nvidia-hwa-test",
-      "title": "NVIDIA HWA Test",
+      "title": "NVIDIA-HWA-Test",
       "note": "",
       "description": "Nvidia HWA Test is a test container for NVIDIA hardware acceleration. Start the container then check the logs to confirm your output matches the example from this page: <a href='https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/sample-workload.html'>Running a Sample Workload</a>. <a href='https://www.nvidia.com/' target='_blank'>Website</a>. <a href='https://hub.docker.com/r/nvidia/cuda' target='_blank'>Docker Hub</a>",
       "platform": "linux",

+ 1 - 0
appdata/tmp/.gitignore

@@ -0,0 +1 @@
+!.gitignore

+ 11 - 1
controllers/account.js

@@ -1,5 +1,5 @@
 import { User, ServerSettings } from '../database/config.js';
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { Alert, getLanguage, Navbar, Sidebar, Footer } from '../utils/system.js';
 
 export const Account = async function(req,res){
 
@@ -17,10 +17,18 @@ export const Account = async function(req,res){
         avatar: user.avatar,
         role: req.session.role,
         navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
     });
 }
 
 
+export const searchAccount = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
+}
+
 
 export const submitAccount = async function(req,res){
 
@@ -31,6 +39,8 @@ export const submitAccount = async function(req,res){
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
     });
 
 }

+ 375 - 35
controllers/apps.js

@@ -1,36 +1,138 @@
+import { Alert, getLanguage, Navbar, Footer } from '../utils/system.js';
 import { readFileSync, readdirSync, renameSync, mkdirSync, unlinkSync, existsSync } from 'fs';
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { parse } from 'yaml';
+import multer from 'multer';
+import AdmZip from 'adm-zip';
+
+let templates_global = '';
+let json_templates = '';
+let remove_button = '';
+
+
+
+const upload = multer({storage: multer.diskStorage({
+    destination: function (req, file, cb) { cb(null, 'appdata/tmp/') },
+    filename: function (req, file, cb) { cb(null, file.originalname) },
+})});
+
+
+
+export const searchApps = async function (req, res) {
+  console.log(`[Search] ${req.body.search}`);
+  res.send('ok');
+  return;
+}
+
 
 export const Apps = async function(req,res){
 
-    let { page, template } = req.params;
+  let [apps_list, app_count] = ['', ''];
+  let page = Number(req.params.page) || 1;
+  let template = req.params.template || 'default';
+
 
-    let file = '';
-    let templates = [];
+    // Pagination
+    let list_start = (page - 1) * 40 + 1;
+    let list_end = (page * 40);
+    let last_page = '';
 
-    if (!page) { page = 1; }
-    if (!template) { template = 'default'; }
+    let pages =`<li class="page-item"><a class="page-link" href="/apps/1/${template}">1</a></li>
+                <li class="page-item"><a class="page-link" href="/apps/2/${template}">2</a></li>
+                <li class="page-item"><a class="page-link" href="/apps/3/${template}">3</a></li>
+                <li class="page-item"><a class="page-link" href="/apps/4/${template}">4</a></li>
+                <li class="page-item"><a class="page-link" href="/apps/5/${template}">5</a></li>`
+
+    let prev = '/apps/' + (page - 1) + '/' + template;
+    let next = '/apps/' + (page + 1) + '/' + template;
+    if (page == 1) { prev = '/apps/' + (page) + '/' + template; }
+    if (page == last_page) { next = '/apps/' + (page) + '/' + template;}
+              
+    // Add a remove button if it's not the default template or a compose template
+    if ((template != 'default') && (template != 'compose')) {
+        remove_button = `<a href="/remove_template/${template}" class="btn" hx-confirm="Are you sure you want to remove this template?">Remove</a>`;
+    } else {
+        remove_button = '';
+    }
     
-    try {   // Try to read the template file
-        file = readFileSync(`./appdata/templates/${template}.json`);
-        templates = JSON.parse(file).templates;
-            // Sort the templates by name
-        templates = templates.sort((a, b) => { if (a.name < b.name) { return -1; } });
-    } 
-    catch {
-        console.log(`Template ${template} not found`);
+    // Check for other templates and add them to the dropdown list
+    json_templates = '';
+    let json_files = readdirSync('appdata/templates/').filter(file => file.endsWith('.json'));
+    for (let i = 0; i < json_files.length; i++) {
+      if (json_files[i] != 'default.json') {
+        let filename = json_files[i].split('.')[0];
+        let link = `<li><a class="dropdown-item" href="/apps/1/${filename}">${filename}</a></li>`
+        json_templates += link;
+      }
     }
 
-    let apps_list = '';
+    // Display compose files if the template is set to 'compose'
+    if (template == 'compose') {
+      let compose_files = readdirSync('appdata/compose/');
+      
+      app_count = compose_files.length;
+      last_page = Math.ceil(compose_files.length/40);
+  
+      compose_files.forEach(file => {
+        if (file == '.gitignore') { return; }
+  
+        let compose = readFileSync(`appdata/compose/${file}/compose.yaml`, 'utf8');
+        let compose_data = parse(compose);
+        let service_name = Object.keys(compose_data.services)
+        let container = compose_data.services[service_name].container_name;
+        let image = compose_data.services[service_name].image;
+  
+        // let appCard = readFileSync('./views/partials/appCard.html', 'utf8');
+        let appCard = readFileSync('views/partials/app_card.html', 'utf8');
+        appCard = appCard.replace(/AppName/g, service_name);
+        appCard = appCard.replace(/AppDescription/g, 'Compose File');
+        appCard = appCard.replace(/AppIcon/g, `https://raw.githubusercontent.com/lllllllillllllillll/DweebUI-Icons/main/${service_name}.png`);
+        // appCard = appCard.replace(/AppCategories/g, '<span class="badge bg-orange-lt">Compose</span> ');
+        appCard = appCard.replace(/AppType/g, 'compose');
+        apps_list += appCard;
+      });
+    } else {
+
+      let template_file = readFileSync(`appdata/templates/${template}.json`);
+      let templates = JSON.parse(template_file).templates;
+      templates = templates.sort((a, b) => { if (a.name < b.name) { return -1; } });
+      app_count = templates.length; 
+
+      templates_global = templates;
+
+      apps_list = '';
+      for (let i = list_start; i < list_end && i < templates_global.length; i++) {
+          let appCard = readFileSync('views/partials/app_card.html', 'utf8');
+          let name = templates[i].name || templates[i].title.toLowerCase();
+          let title = templates[i].title || templates[i].name;
+          // let desc = templates[i].description.slice(0, 75) + "...";
+          let desc = templates[i].description || "no description available";
 
-    for (let i = 0; i < templates.length; i++) {
-        let app_card = readFileSync('./views/partials/app_card.html', 'utf8');
-        app_card = app_card.replace(/AppShortName/g, templates[i].name);
-        app_card = app_card.replace(/AppIcon/g, templates[i].logo);
-        apps_list += app_card;
+          let description = templates[i].description.replaceAll(". ", ".\n") || "no description available";
+          let note = templates[i].note ? templates[i].note.replaceAll(". ", ".\n") : "no notes available";
+          let image = templates[i].image;
+          let logo = templates[i].logo;
+          let categories = '';
+          // set data.catagories to 'other' if data.catagories is empty or undefined
+          if (templates[i].categories == null || templates[i].categories == undefined || templates[i].categories == '') {
+              templates[i].categories = ['Other'];
+          }
+          // loop through the categories and add the badge to the card
+          for (let j = 0; j < templates[i].categories.length; j++) {
+            categories += CatagoryColor(templates[i].categories[j]);
+          }
+          appCard = appCard.replace(/AppName/g, name);
+          appCard = appCard.replace(/AppTitle/g, title);
+          appCard = appCard.replace(/AppShortName/g, name);
+          appCard = appCard.replace(/AppDescription/g, desc);
+          appCard = appCard.replace(/AppIcon/g, logo);
+          appCard = appCard.replace(/AppCategories/g, categories);
+          appCard = appCard.replace(/AppType/g, 'json');
+          apps_list += appCard;
+      }
     }
 
-    let app_count = `1 - 28 of ${templates.length} Apps`;
+
+    app_count = `${list_start} - ${list_end} of ${templates_global.length} Apps`;
 
     res.render("apps",{ 
         alert: '',
@@ -40,30 +142,268 @@ export const Apps = async function(req,res){
         remove_button: '',
         json_templates: '',
         apps_list: apps_list,
-        prev: '',
-        next: '',
-        pages: '',
+        prev: prev,
+        next: next,
+        pages: pages,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 }
 
 
 
-export const submitApps = async function(req,res){
+export const submitApps = async function (req, res) {
 
-    // console.log(req.body);
+    let app_name = req.header('hx-trigger-name');
+    let app_type = req.header('hx-trigger');
+    let action = req.params.action;
 
-    let trigger_name = req.header('hx-trigger-name');
-    let trigger_id = req.header('hx-trigger');
+    // console.log(`[submitApps] app_name: ${app_name} app_type: ${app_type} action: ${action}`);
+
+    // Modal for compose files
+    if (action == 'view_install' && app_type == 'compose') {
+      let compose = readFileSync(`appdata/compose/${app_name}/compose.yaml`, 'utf8');
+      let modal = readFileSync('views/partials/compose.html', 'utf8');
+      modal = modal.replace(/AppName/g, app_name);
+      modal = modal.replace(/COMPOSE_CONTENT/g, compose);
+      res.send(modal);
+      return;
+    } 
+
+    // Modal for json templates
+    if (action == 'view_install' && app_type == 'json') {
+      let result = templates_global.find(t => t.name == app_name);
+      let name = result.name || result.title.toLowerCase();
+      let short_name = name.slice(0, 25) + "...";
+      let desc = result.description.replaceAll(". ", ".\n") || "no description available";
+      let short_desc = desc.slice(0, 60) + "...";
+      let modal_name = name.replaceAll(" ", "-");
+      let form_id = name.replaceAll("-", "_");
+      let note = result.note ? result.note.replaceAll(". ", ".\n") : "no notes available";
+      let command = result.command ? result.command : "";
+      let command_check = command ? "checked" : "";
+      let privileged = result.privileged || "";
+      let privileged_check = privileged ? "checked" : "";
+      let repository = result.repository || "";
+      let image = result.image || "";
+      let net_host, net_bridge, net_docker = '';
+      let net_name = 'AppBridge';
+      let restart_policy = result.restart_policy || 'unless-stopped';
+      
+      switch (result.network) {
+        case 'host':
+          net_host = 'checked';
+          break;
+        case 'bridge':
+          net_bridge = 'checked';
+          net_name = result.network;
+          break;
+        default:
+          net_docker = 'checked';
+      }
+  
+      if (repository != "") {
+        image = (`${repository.url}/raw/master/${repository.stackfile}`);
+      }
+  
+      let [ports_data, volumes_data, env_data, label_data] = [[], [], [], []];
+  
+
+
+
+      for (let i = 0; i < 20; i++) {
+        
+        // Get port details
+        try {
+          let ports = result.ports[i];
+          let port_check = ports ? "checked" : "";
+          let port_external = ports.split(":")[0] ? ports.split(":")[0] : ports.split("/")[0];
+          let port_internal = ports.split(":")[1] ? ports.split(":")[1].split("/")[0] : ports.split("/")[0];
+          let port_protocol = ports.split("/")[1] ? ports.split("/")[1] : "";
+  
+          // remove /tcp or /udp from port_external if it exists
+          if (port_external.includes("/")) {
+            port_external = port_external.split("/")[0];
+          }
+          
+          ports_data.push({
+            check: port_check,
+            external: port_external,
+            internal: port_internal,
+            protocol: port_protocol
+          });
+        } catch {
+            ports_data.push({
+              check: "",
+              external: "",
+              internal: "",
+              protocol: ""
+            });
+        }
+  
+        // Get volume details
+        try {
+          let volumes = result.volumes[i];
+          let volume_check = volumes ? "checked" : "";
+          let volume_bind = volumes.bind ? volumes.bind : "";
+          let volume_container = volumes.container ? volumes.container.split(":")[0] : "";
+          let volume_readwrite = "rw";
+  
+          if (volumes.readonly == true) {
+            volume_readwrite = "ro";
+          }
+  
+          volumes_data.push({
+            check: volume_check,
+            bind: volume_bind,
+            container: volume_container,
+            readwrite: volume_readwrite
+          });
+        } catch {
+          volumes_data.push({
+            check: "",
+            bind: "",
+            container: "",
+            readwrite: ""
+          });
+        }
+  
+        // Get environment details
+        try {
+          let env = result.env[i];
+          let env_check = "";
+          let env_default = env.default ? env.default : "";
+          if (env.set) { env_default = env.set;}
+          let env_description = env.description ? env.description : "";
+          let env_label = env.label ? env.label : "";
+          let env_name = env.name ? env.name : "";
+  
+          env_data.push({
+            check: env_check,
+            default: env_default,
+            description: env_description,
+            label: env_label,
+            name: env_name
+          });
+        } catch {
+          env_data.push({
+            check: "",
+            default: "",
+            description: "",
+            label: "",
+            name: ""
+          });
+        }
+  
+        // Get label details
+        try {
+          let label = result.labels[i];
+          let label_check = "";
+          let label_name = label.name ? label.name : "";
+          let label_value = label.value ? label.value : "";
+  
+          label_data.push({
+            check: label_check,
+            name: label_name,
+            value: label_value
+          });
+        } catch {
+          label_data.push({
+            check: "",
+            name: "",
+            value: ""
+          });
+        }
+  
+      }
+      
+      let modal = readFileSync('views/partials/details.html', 'utf8');
+      modal = modal.replace(/AppName/g, name);
+      modal = modal.replace(/AppNote/g, note);
+      modal = modal.replace(/AppImage/g, image);
+      modal = modal.replace(/RestartPolicy/g, restart_policy);
+      modal = modal.replace(/NetHost/g, net_host);
+      modal = modal.replace(/NetBridge/g, net_bridge);
+      modal = modal.replace(/NetDocker/g, net_docker);
+      modal = modal.replace(/NetName/g, net_name);
+      modal = modal.replace(/ModalName/g, modal_name);
+      modal = modal.replace(/FormId/g, form_id);
+      modal = modal.replace(/CommandCheck/g, command_check);
+      modal = modal.replace(/CommandValue/g, command);
+      modal = modal.replace(/PrivilegedCheck/g, privileged_check);
+  
+  
+      for (let i = 0; i < 20; i++) {
+        modal = modal.replaceAll(`Port${i}Check`, ports_data[i].check);
+        modal = modal.replaceAll(`Port${i}External`, ports_data[i].external);
+        modal = modal.replaceAll(`Port${i}Internal`, ports_data[i].internal);
+        modal = modal.replaceAll(`Port${i}Protocol`, ports_data[i].protocol);
+  
+        modal = modal.replaceAll(`Vol${i}Check`, volumes_data[i].check);
+        modal = modal.replaceAll(`Vol${i}Source`, volumes_data[i].bind);
+        modal = modal.replaceAll(`Vol${i}Destination`, volumes_data[i].container);
+        modal = modal.replaceAll(`Vol${i}RW`, volumes_data[i].readwrite);
+        
+        modal = modal.replaceAll(`Env${i}Check`, env_data[i].check);
+        modal = modal.replaceAll(`Env${i}Key`, env_data[i].name);
+        modal = modal.replaceAll(`Env${i}Value`, env_data[i].default);
+
+        modal = modal.replaceAll(`Env${i}Description`, env_data[i].description);
+        modal = modal.replaceAll(`Env${i}Label`, env_data[i].label);
+  
+        modal = modal.replaceAll(`Label${i}Check`, label_data[i].check);
+        modal = modal.replaceAll(`Label${i}Key`, label_data[i].name);
+        modal = modal.replaceAll(`Label${i}Value`, label_data[i].value);
+      }
+
+    res.send(modal);
+  }
+}
 
-    console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`);
 
 
-    res.render("apps",{
-        alert: '',
-        username: req.session.username,
-        role: req.session.role,
-        navbar: await Navbar(req),
-    });
 
+function CatagoryColor(category) {
+  switch (category) {
+    case 'Other':
+      return '<span class="badge bg-blue-lt">Other</span> ';
+    case 'Productivity':
+      return '<span class="badge bg-blue-lt">Productivity</span> ';
+    case 'Tools':
+      return '<span class="badge bg-blue-lt">Tools</span> ';
+    case 'Dashboard':
+      return '<span class="badge bg-blue-lt">Dashboard</span> ';
+    case 'Communication':
+      return '<span class="badge bg-azure-lt">Communication</span> ';
+    case 'Media':
+      return '<span class="badge bg-azure-lt">Media</span> ';
+    case 'CMS':
+      return '<span class="badge bg-azure-lt">CMS</span> ';
+    case 'Monitoring':
+      return '<span class="badge bg-indigo-lt">Monitoring</span> ';
+    case 'LDAP':
+      return '<span class="badge bg-purple-lt">LDAP</span> ';
+    case 'Arr':
+      return '<span class="badge bg-purple-lt">Arr</span> ';
+    case 'Database':
+      return '<span class="badge bg-red-lt">Database</span> ';
+    case 'Paid':
+      return '<span class="badge bg-red-lt" title="This is a paid product or contains paid features.">Paid</span> ';
+    case 'Gaming':
+      return '<span class="badge bg-pink-lt">Gaming</span> ';
+    case 'Finance':
+      return '<span class="badge bg-orange-lt">Finance</span> ';
+    case 'Networking':
+      return '<span class="badge bg-yellow-lt">Networking</span> ';
+    case 'Authentication':
+      return '<span class="badge bg-lime-lt">Authentication</span> ';
+    case 'Development':
+      return '<span class="badge bg-green-lt">Development</span> ';
+    case 'Media Server':
+      return '<span class="badge bg-teal-lt">Media Server</span> ';
+    case 'Downloaders':
+      return '<span class="badge bg-cyan-lt">Downloaders</span> ';
+    default:
+      return ''; // default to other if the category is not recognized
+  }
 }

+ 38 - 0
controllers/credits.js

@@ -0,0 +1,38 @@
+import { ServerSettings, User } from '../database/config.js';
+import { Alert, getLanguage, Navbar, Sidebar, Footer, Capitalize } from '../utils/system.js';
+import { readdirSync, readFileSync } from 'fs';
+
+export const Credits = async function (req, res) {
+
+    let language = await getLanguage(req);
+    let Language = Capitalize(language);
+    let selected = `<option value="${language}" selected hidden>${Language}</option>`;
+
+    let user = await User.findOne({ where: { userID: req.session.userID }});
+    let preferences = JSON.parse(user.preferences);
+    let hide_profile = preferences.hide_profile;
+
+    let checked = '';
+    if (hide_profile == true) { checked = 'checked'; }
+
+
+
+    res.render("credits",{ 
+        alert: '',
+        username: req.session.username,
+        role: req.session.role,
+        navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
+        selected: selected,
+        hide_profile: checked,
+
+    });
+}
+
+
+export const searchCredits = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
+}

+ 232 - 176
controllers/dashboard.js

@@ -1,165 +1,176 @@
 import { currentLoad, mem, networkStats, fsSize } from 'systeminformation';
-import { docker, getContainer, containerInspect } from '../utils/docker.js';
+import { docker, containerInfo, containerLogs, containerStats, GetContainerLists } from '../utils/docker.js';
 import { readFileSync } from 'fs';
-import { User, Permission } from '../database/config.js';
-import { Alert, Navbar, Capitalize } from '../utils/system.js';
+import { User, Permission, ServerSettings, ContainerLists, Container } from '../database/config.js';
+import { Alert, Navbar, Footer, Capitalize } from '../utils/system.js';
 import { Op } from 'sequelize';
 
-let [ hidden, alert, newCards, stats ] = [ '', '', '', {} ];
-let logString = '';
+let [ hidden, alert, stats ] = [ '', '', '', {} ];
+let container_link = 'http://localhost';
+
+
 
 // Dashboard
 export const Dashboard = async function (req, res) {
 
+    let host = req.params.host;
+    req.session.host = host;
+
+
+    // if (host != 1) {
+    //     let test = await GetContainerLists(host);
+    //     console.log(test);
+    // }
+
+    // Create the lists needed for the dashboard
+    const [list, created] = await ContainerLists.findOrCreate({
+        where: { userID: req.session.userID },
+        defaults: {
+            userID: req.session.userID,
+            username: req.session.username,
+            containers: '[]',
+            new: '[]',
+            updates: '[]',
+            sent: '[]',
+        },
+    });
+    if (created) { console.log(`New entry created in ContainerLists for ${req.session.username}`); }
+
+
     res.render("dashboard",{ 
         alert: '',
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     }); 
 }
 
-// Dashboard search
-export const submitDashboard = async function (req, res) {
-    console.log('[SubmitDashboard]');
-    console.log(req.body);
-    res.send('ok');
-    return;
-}
 
 
-export const CardList = async function (req, res) {
 
-    res.send(newCards);
-    newCards = '';
+// Dashboard search
+export const searchDashboard = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
     return;
 }
 
 
-async function containerInfo (containerID) {
 
-    // get the container info
-    let info = docker.getContainer(containerID);
-    let container = await info.inspect();
 
-    let container_name = container.Name.slice(1);
-    let container_image = container.Config.Image;
-    let container_service = container.Config.Labels['com.docker.compose.service'];
-
-    let ports_list = [];
-    let external = 0;
-    let internal = 0;
-    
-    try {
-        for (const [key, value] of Object.entries(container.HostConfig.PortBindings)) {
-            let ports = {
-                check: 'checked',
-                external: value[0].HostPort,
-                internal: key.split('/')[0],
-                protocol: key.split('/')[1]
-            }
-            ports_list.push(ports);
-        }
-    } catch {}
-
-    try { external = ports_list[0].external; internal = ports_list[0].internal; } catch { }
-
-    let container_info = {
-        containerName: container_name,
-        containerID: containerID,
-        containerImage: container_image,
-        containerService: container_service,
-        containerState: container.State.Status,
-        external_port: external,
-        internal_port: internal,
-        ports: ports_list,
-        volumes: container.Mounts,
-        env: container.Config.Env,
-        labels: container.Config.Labels,
-        link: 'localhost',
+// Server metrics (CPU, RAM, TX, RX, DISK)
+export const ServerMetrics = async (req, res) => {
+    let name = req.header('hx-trigger-name');
+    let color = req.header('hx-trigger');
+    let value = 0;
+    switch (name) {
+        case 'CPU': 
+            await currentLoad().then(data => { value = Math.round(data.currentLoad); });
+            break;
+        case 'RAM': 
+            await mem().then(data => { value = Math.round((data.active / data.total) * 100); });
+            break;
+        case 'NET':
+            let [down, up, percent] = [0, 0, 0];
+            await networkStats().then(data => { down = Math.round(data[0].rx_bytes / (1024 * 1024)); up = Math.round(data[0].tx_bytes / (1024 * 1024)); percent = Math.round((down / 1000) * 100); });
+            let net = `<div class="font-weight-medium"><label class="cpu-text mb-1">Down:${down}MB  Up:${up}MB</label></div>
+                        <div class="cpu-bar meter animate ${color}"><span style="width:20%"><span></span></span></div>`;           
+            res.send(net);
+            return;
+        case 'DISK':
+            await fsSize().then(data => { value = data[0].use; });
+            break;
     }
-
-    return container_info;
+    let info = `<div class="font-weight-medium"> <label class="cpu-text mb-1">${name} ${value}%</label></div>
+                <div class="cpu-bar meter animate ${color}"><span style="width:${value}%"><span></span></span></div>`;
+    res.send(info);
 }
 
 
-async function userCards (session) {
-    session.container_list = [];
-    // check what containers the user wants hidden
-    let hidden = await Permission.findAll({ where: {userID: session.userID, hide: true}}, { attributes: ['containerID'] });
+async function userCards (req) {
+    
+    let container_list = [];
+    // Check what containers the user has hidden.
+    let hidden = await Permission.findAll({ where: {userID: req.session.userID, hide: true}}, { attributes: ['containerID'] });
     hidden = hidden.map((container) => container.containerID);
-    // check what containers the user has permission to view
-    let visable = await Permission.findAll({ where: { userID: session.userID, [Op.or]: [{ uninstall: true }, { edit: true }, { upgrade: true }, { start: true }, { stop: true }, { pause: true }, { restart: true }, { logs: true }, { view: true }] }, attributes: ['containerID'] });
+
+    // Check what containers the user has permission for.
+    let visable = await Permission.findAll({ where: { userID: req.session.userID, [Op.or]: [{ uninstall: true }, { edit: true }, { upgrade: true }, { start: true }, { stop: true }, { pause: true }, { restart: true }, { logs: true }, { view: true }] }, attributes: ['containerID'] });
     visable = visable.map((container) => container.containerID);
-    // get all containers
-    let containers = await docker.listContainers({ all: true });
-    // loop through containers
+
+    let containers = await GetContainerLists(req.session.host);
+
     for (let i = 0; i < containers.length; i++) {
         let container_name = containers[i].Names[0].split('/').pop();
-        // skip hidden containers
+        // Skip if the ID is found in the hidden list.
         if (hidden.includes(containers[i].Id)) { continue; }
-        // admin can see all containers that they don't have hidden
-        if (session.role == 'admin') { session.container_list.push({ containerName: container_name, containerID: containers[i].Id, containerState: containers[i].State }); }
-        // user can see any containers that they have any permissions for
-        else if (visable.includes(containers[i].Id)){ session.container_list.push({ containerName: container_name, containerID: containers[i].Id, containerState: containers[i].State }); }
+        // Skip if the state is 'created'. 
+        if (containers[i].State == 'created') { continue; }
+        // Admin can see all containers that they don't have hidden.
+        if (req.session.role == 'admin') { container_list.push({ containerName: container_name, containerID: containers[i].Id, containerState: containers[i].State }); }
+        // User can see any containers that they have any permissions for.
+        else if (visable.includes(containers[i].Id)){ container_list.push({ containerName: container_name, containerID: containers[i].Id, containerState: containers[i].State }); }
     }
-    // Create the lists if they don't exist
-    if (!session.sent_list) { session.sent_list = []; }
-    if (!session.update_list) { session.update_list = []; }
-    if (!session.new_cards) { session.new_cards = []; }
-}
-
-
-async function updateDashboard (session) {
-    let container_list = session.container_list;
-    let sent_list = session.sent_list;
-    session.new_cards = [];
-    session.update_list = [];
-    // loop through the containers list
-    container_list.forEach(container => {
-        let { containerName, containerID, containerState } = container;
-        let sent = sent_list.find(c => c.containerID === containerID);
-        if (!sent) { session.new_cards.push(containerID);}
-        else if (sent.containerState !== containerState) { session.update_list.push(containerID); }
-    });
-    // loop through the sent list to see if any containers have been removed
-    sent_list.forEach(container => {
-        let { containerName, containerID, containerState } = container;
-        let exists = container_list.find(c => c.containerID === containerID);
-        if (!exists) { session.update_list.push(containerID); }
-    });
+    return container_list;
 }
 
-
 // Container actions (start, stop, pause, restart, hide)
 export const ContainerAction = async (req, res) => {
 
-    // let trigger_id = req.header('hx-trigger');
     let container_name = req.header('hx-trigger-name');
     let containerID = req.params.containerid;
     let action = req.params.action;
     
-    console.log(`Container: ${container_name} ID: ${containerID} Action: ${action}`);
+    console.log(`[Action] ${action} ${container_name} ${containerID}`);
 
-    // Reset the view
     if (action == 'reset') { 
         console.log('Resetting view'); 
         await Permission.update({ hide: false }, { where: { userID: req.session.userID } });
         res.redirect('/dashboard');
         return;
     }
-
-    if (action == 'update') {
-        await userCards(req.session);
-        if (!req.session.container_list.find(c => c.containerID === containerID)) {
-            res.send('');
-            return;
-        } else {
-            let details = await containerInfo(containerID);
-            let card = await createCard(details);
-            res.send(card);
-            return;
-        }
+    else if (action == 'logs') {
+        let logs = await containerLogs(containerID);
+        let modal = readFileSync('./views/partials/logs.html', 'utf8');
+        modal = modal.replace(/AppName/g, container_name);
+        modal = modal.replace(/ContainerID/g, containerID);
+        modal = modal.replace(/ContainerLogs/g, logs);
+
+        res.send(modal);
+        return;
+    }
+    else if (action == 'details') {
+        let container = await containerInfo(containerID);
+        let modal = readFileSync('./views/partials/details.html', 'utf8');
+        modal = modal.replace(/AppName/g, container.containerName);
+        modal = modal.replace(/AppImage/g, container.containerImage);
+        res.send(modal);
+        return;
+    }
+    else if (action == 'uninstall') {
+        let modal = readFileSync('./views/partials/uninstall.html', 'utf8');
+        modal = modal.replace(/AppName/g, container_name);
+        modal = modal.replace(/ContainerID/g, containerID);
+        res.send(modal);
+        return;
+    }
+    else if (action == 'link_modal') {
+        const [container, created] = await Container.findOrCreate({ where: { containerID: containerID }, defaults: { containerName: container_name, containerID: containerID, link: '' } });
+        let modal = readFileSync('./views/partials/link.html', 'utf8');
+        modal = modal.replace(/AppName/g, container_name);
+        modal = modal.replace(/ContainerID/g, containerID);
+        modal = modal.replace(/AppLink/g, container.link);
+        res.send(modal);
+        return;
+    } else if (action == 'update_link') {
+        let url = req.body.url;
+        console.log(url);
+        // find the container entry with the containerID and userID
+        let container = await Container.findOne({ where: { containerID: containerID } });
+        container.update({ link: url });
+        res.send('ok');
+        return;
     }
 
     // Inspect the container
@@ -188,7 +199,7 @@ export const ContainerAction = async (req, res) => {
     } else if ((action == 'pause') && (containerState == 'paused')) {
         info.unpause();
         res.send(status('starting'));
-    }   else if ((action == 'pause') && (containerState == 'running')) {
+    } else if ((action == 'pause') && (containerState == 'running')) {
         info.pause();
         res.send(status('pausing'));
     } else if (action == 'restart') {
@@ -203,13 +214,21 @@ export const ContainerAction = async (req, res) => {
 }
 
 
+
+
 async function createCard (details) {
-    // let shortname = details.name.slice(0, 10) + '...';
+
     // let trigger = 'data-hx-trigger="load, every 3s"';
 
-    // Capitalize the container name and shorten it if it's too long
-    let containerName = Capitalize(details.containerName);
-    if (containerName.length > 17) { containerName = containerName.substring(0, 17) + '...'; }
+    let containerName = details.containerName;
+    if (containerName.length > 13) { containerName = containerName.substring(0, 13) + '...'; }
+    let containerTitle = Capitalize(containerName);
+
+    let container_link = '';
+    let container = await Container.findOne({ where: { containerID: details.containerID } });
+    container_link = container.link || '#';
+
+    let titleLink = `<a href="${container_link}" class="nav-link" target="_blank">${containerTitle}</a>`;
 
     let containerID = details.containerID;
     let containerState = details.containerState;
@@ -223,101 +242,138 @@ async function createCard (details) {
 
     let container_card = readFileSync('./views/partials/container_card.html', 'utf8');
 
-    // let links = await ServerSettings.findOne({ where: {key: 'links'}});
-    // if (!links) { links = { value: 'localhost' }; }
-
     container_card = container_card.replace(/ContainerID/g, containerID);
     container_card = container_card.replace(/AltID/g, 'a' + containerID);
+    container_card = container_card.replace(/TitleLink/g, titleLink);
     container_card = container_card.replace(/AppName/g, containerName);
+    container_card = container_card.replace(/AppTitle/g, containerTitle);
     container_card = container_card.replace(/AppService/g, containerService);
     container_card = container_card.replace(/AppState/g, containerState);
     container_card = container_card.replace(/StateColor/g, containerStateColor);
 
+
+    let update_status = `<div class="text-yellow">
+                            <svg xmlns="http://www.w3.org/2000/svg" class="icon-tabler icon-tabler-point-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" stroke-width="0" fill="currentColor"></path></svg>
+                        </div>`;
+    
+
     if (details.external_port == 0 && details.internal_port == 0) {
         container_card = container_card.replace(/AppPorts/g, ``);
     } else {
-        container_card = container_card.replace(/AppPorts/g, `${details.external_port}:${details.internal_port}`);
+        container_card = container_card.replace(/AppPorts/g, `<a href="${container_link}:${details.external_port}" target="_blank" style="color: inherit; text-decoration: none;"> ${details.external_port}:${details.internal_port}</a>`);
     }
-    // card = card.replace(/data-trigger=""/, trigger);
     return container_card;
 }
 
 
 
+export const UpdateCard = async function (req, res) {
 
-// Server metrics (CPU, RAM, TX, RX, DISK)
-export const ServerMetrics = async (req, res) => {
-    let name = req.header('hx-trigger-name');
-    let color = req.header('hx-trigger');
-    let value = 0;
-    switch (name) {
-        case 'CPU': 
-            await currentLoad().then(data => { value = Math.round(data.currentLoad); });
-            break;
-        case 'RAM': 
-            await mem().then(data => { value = Math.round((data.active / data.total) * 100); });
-            break;
-        case 'NET':
-            let [down, up, percent] = [0, 0, 0];
-            await networkStats().then(data => { down = Math.round(data[0].rx_bytes / (1024 * 1024)); up = Math.round(data[0].tx_bytes / (1024 * 1024)); percent = Math.round((down / 1000) * 100); });
-            let net = `<div class="font-weight-medium"><label class="cpu-text mb-1">Down:${down}MB  Up:${up}MB</label></div>
-                        <div class="cpu-bar meter animate ${color}"><span style="width:20%"><span></span></span></div>`;           
-            res.send(net);
-            return;
-        case 'DISK':
-            await fsSize().then(data => { value = data[0].use; });
-            break;
+        let containerID = req.params.containerid;
+
+        let lists = await ContainerLists.findOne({ where: { userID: req.session.userID }, attributes: ['containers'] });
+        let container_list = JSON.parse(lists.containers);
+
+        let found = container_list.find(c => c.containerID === containerID);
+        if (!found) { res.send(''); return; }
+        let details = await containerInfo(containerID);
+        let card = await createCard(details);
+        res.send(card);
+}
+
+
+
+export const CardList = async function (req, res) {
+    let cards_list = '';
+    // Check if there are any new cards in queue.
+    let new_cards = await ContainerLists.findOne({ where: { userID: req.session.userID }, attributes: ['new'] });
+    let new_list = JSON.parse(new_cards.new);
+    // Check what containers the user should see.
+    let containers = await userCards(req);
+    // Create the cards.
+    if (new_list.length > 0) {
+        for (let i = 0; i < new_list.length; i++) {
+            let details = await containerInfo(new_list[i]);
+            let card = await createCard(details);
+            cards_list += card;
+        }
+    } else {
+        for (let i = 0; i < containers.length; i++) {
+            let details = await containerInfo(containers[i].containerID);
+            let card = await createCard(details);
+            cards_list += card;
+        }
     }
-    let info = `<div class="font-weight-medium"> <label class="cpu-text mb-1">${name} ${value}%</label></div>
-                <div class="cpu-bar meter animate ${color}"><span style="width:${value}%"><span></span></span></div>`;
-    res.send(info);
+    // Update lists, clear the queue, and send the cards.
+    await ContainerLists.update({ containers: JSON.stringify(containers), sent: JSON.stringify(containers), new: '[]' }, { where: { userID: req.session.userID } });
+    res.send(cards_list);
 }
 
 
+// HTMX - Server-side events
 export const SSE = async (req, res) => {
+    
+    res.writeHead(200, {
+        'Content-Type': 'text/event-stream',
+        'Cache-Control': 'no-cache',
+        'Connection': 'keep-alive' 
+    });
+    
+    async function eventCheck () {
 
-    // Set the response headers
-    res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' });
 
-    async function eventCheck () {
-        await userCards(req.session);
-        await updateDashboard(req.session);
+        let list = await ContainerLists.findOne({ where: { userID: req.session.userID }, attributes: ['sent'] });
+        let container_list = await userCards(req);
 
-        if (JSON.stringify(req.session.sent_list) === JSON.stringify(req.session.container_list)) { console.log('Event - No Change'); return; }
+        let new_cards = [];
+        let update_list = [];
+        let sent_cards = [];
+        sent_cards = JSON.parse(list.sent);
 
-        console.log('Event - Change Detected');
+        if (JSON.stringify(container_list) == list.sent) { return; }
+        console.log(`Update for ${req.session.username}`);
 
-        for (let i = 0; i < req.session.new_cards.length; i++) {
-            let details = await containerInfo(req.session.new_cards[i]);
-            let card = await createCard(details);
-            newCards += card;
+        // loop through the containers list to see if any new containers have been added or changed
+        container_list.forEach(container => {
+            let { containerName, containerID, containerState } = container;
+            if (list.sent) { sent_cards = JSON.parse(list.sent); }
+            
+            let found = sent_cards.find(c => c.containerID === containerID);
+            if (!found) { new_cards.push(containerID); }
+            else if (found.containerState !== containerState) { update_list.push(containerID); }
+        });
+
+        // loop through the sent list to see if any containers have been removed
+        sent_cards.forEach(container => {
+            let { containerName, containerID, containerState } = container;
+            let found = container_list.find(c => c.containerID === containerID);
+            if (!found) { update_list.push(containerID); }
+        });
+
+        await ContainerLists.update({ new: JSON.stringify(new_cards), sent: JSON.stringify(container_list), containers: JSON.stringify(container_list) }, { where: { userID: req.session.userID } });
+        
+        if (update_list.length > 0 ) {
+            for (let i = 0; i < update_list.length; i++) {
+                res.write(`event: ${update_list[i]}\n`);
+                res.write(`data: 'update cards'\n\n`);
+            }    
         }
 
-        for (let i = 0; i < req.session.update_list.length; i++) {
-            res.write(`event: ${req.session.update_list[i]}\n`);
-            res.write(`data: 'update cards'\n\n`);
+        if (new_cards.length > 0) {
+            res.write(`event: update\n`);
+            res.write(`data: 'card updates'\n\n`);
         }
-        res.write(`event: update\n`);
-        res.write(`data: 'update cards'\n\n`);
 
-        req.session.sent_list = req.session.container_list.slice();
     }
-
-    await eventCheck();
-
-    // Listens for docker events. Only triggers every other event.
-    docker.getEvents({}, function (err, data) {
-        let count = 0;
+    
+    docker.getEvents({}, async function (err, data) {
         data.on('data', async function () {
-            count++;
-            if (count % 2 === 0) {
-                await eventCheck();
-            }
+            console.log(`[Docker Event]`);
+            await eventCheck();
         });
     });
 
-
-    req.on('close', () => {
+    req.on('close', async () => {
+        // Nothing
     });
-
 }

+ 13 - 23
controllers/images.js

@@ -1,36 +1,21 @@
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
-import { imageList } from '../utils/docker.js';
+import { Alert, getLanguage, Navbar, Footer } from '../utils/system.js';
+import { imageList, GetContainerLists } from '../utils/docker.js';
 
 export const Images = async function(req,res){
 
     let container_images = [];
-
-    let containers = await containerList(req);
+    let image_list = '';
+    
+    let containers = await GetContainerLists();
     for (let i = 0; i < containers.length; i++) {
         container_images.push(containers[i].Image);
     }
 
     let images = await imageList();
 
-    // Top of the table
-    let image_list = `
-        <thead>
-            <tr>
-                <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
-                <th><label class="table-sort" data-sort="sort-name">Name</label></th>
-                <th><label class="table-sort" data-sort="sort-type">Tag</label></th>
-                <th><label class="table-sort" data-sort="sort-city">ID</label></th>
-                <th><label class="table-sort" data-sort="sort-score">Status</label></th>
-                <th><label class="table-sort" data-sort="sort-date">Created</label></th>
-                <th><label class="table-sort" data-sort="sort-quantity">Size</label></th>
-                <th><label class="table-sort" data-sort="sort-progress">Action</label></th>
-            </tr>
-        </thead>
-        <tbody class="table-tbody">`
-
-
     for (let i = 0; i < images.length; i++) {
 
+
         let name = '';
         let tag = ''; 
         try { name = images[i].RepoTags[0].split(':')[0]; } catch {}
@@ -62,8 +47,6 @@ export const Images = async function(req,res){
             </tr>`
         image_list += details;
     }
-    
-    image_list += `</tbody>`
 
     res.render("images",{ 
         alert: '',
@@ -72,9 +55,15 @@ export const Images = async function(req,res){
         image_count: '',
         image_list: image_list,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 }
 
+export const searchImages = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
+}
 
 
 export const submitImages = async function(req,res){
@@ -92,6 +81,7 @@ export const submitImages = async function(req,res){
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 
 }

+ 26 - 13
controllers/login.js

@@ -2,60 +2,73 @@ import bcrypt from 'bcrypt';
 import { User, Syslog, ServerSettings } from '../database/config.js';
 
 
-
-// Login page
-export const Login = async function(req,res){
+export const Login = async function (req, res) {
 
     if (req.session.userID) { res.redirect("/dashboard"); return; }
 
+    // Check authentication settings
     let authentication = await ServerSettings.findOne({ where: { key: 'authentication' }});
     if (!authentication) { await ServerSettings.create({ key: 'authentication', value: 'default' }); }
     authentication = await ServerSettings.findOne({ where: { key: 'authentication' }});
 
+    // Create an empty session and redirect if authentication is disabled
     if (authentication.value == 'localhost' && req.hostname == 'localhost') {
         req.session.username = 'Localhost';
         req.session.userID = '00000000-0000-0000-0000-000000000000';
         req.session.role = 'admin';
+        await Syslog.create({ username: 'Localhost', uniqueID: 'localhost', event: "Login", message: "User logged in", ip: req.socket.remoteAddress });
         res.redirect("/dashboard");
         return;
     } else if (authentication.value == 'no_auth') {
         req.session.username = 'No Auth';
         req.session.userID = '00000000-0000-0000-0000-000000000000';
         req.session.role = 'admin';
+        await Syslog.create({ username: 'No Auth', uniqueID: 'no_auth', event: "Login", message: "User logged in", ip: req.socket.remoteAddress });
         res.redirect("/dashboard");
         return;
     }
-
     res.render("login",{ 
         "error":"", 
     });
 }
 
 
+export const submitLogin = async function (req, res) {
 
-// Submit login
-export const submitLogin = async function(req,res){
     const { password } = req.body;
     let email = req.body.email.toLowerCase();
 
-    let error = '';
-    if (!email || !password) { error = "Invalid credentials."; }
+    // If one of the fields is empty.
+    if (!email || !password) { res.render("login",{ "error": "Invalid credentials." }); return; }
 
     let user = await User.findOne({ where: { email: email }});
 
-    if (!user || !await bcrypt.compare(password, user.password)) { error = "Invalid credentials."; }
-
-    if (error) { res.render("login",{ "error":error }); return; }
+    // If there is no users with that email or the password is incorrect.
+    if (!user || !await bcrypt.compare(password, user.password)) { 
+        await Syslog.create({ username: '', uniqueID: email, event: "Login Attempt", message: "User login failed", ip: req.socket.remoteAddress });
+        res.render("login",{ "error": "Invalid credentials." });
+        return;
+    }
+    // Log the user in.
     else {
         req.session.username = user.username;
         req.session.userID = user.userID;
         req.session.role = user.role;
+        let newLogin = new Date().toLocaleString();
+        await User.update({ lastLogin: newLogin }, { where: { email: email } });
+
+        console.log(`${req.session.username} logged in`);
+
+        await Syslog.create({ username: user.username, uniqueID: email, event: "Login", message: "User logged in", ip: req.socket.remoteAddress });
         res.redirect("/dashboard");
+        return;
     }
 }
 
-// Logout
-export const Logout = function(req,res){
+
+export const Logout = async function(req,res){
+    console.log(`User ${req.session.username} logged out \n`);
+    await Syslog.create({ username: req.session.username, uniqueID: req.session.userID, event: "Logout", message: "User logged out", ip: req.socket.remoteAddress });
     req.session.destroy(() => {
         res.redirect("/login");
     });

+ 63 - 15
controllers/networks.js

@@ -1,38 +1,86 @@
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { Alert, getLanguage, Navbar, Footer } from '../utils/system.js';
+import { networkList, GetContainerLists, removeNetwork } from '../utils/docker.js';
 
-export const Networks = async function(req,res){
+export const Networks = async function(req, res) {
 
+    let container_networks = [];
+    let network_name = '';
+
+    let containers = await GetContainerLists();
+
+    for (let i = 0; i < containers.length; i++) {
+
+        try { network_name += containers[i].HostConfig.NetworkMode; } catch {}
+        try { container_networks.push(containers[i].NetworkSettings.Networks[network_name].NetworkID); } catch {}
+    }
+
+    let networks = await networkList();
+
+    let network_list = '';
+
+    for (let i = 0; i < networks.length; i++) {
+        let status = '';
+        // Check if the network is in use
+        try { if (container_networks.includes(networks[i].Id)) { status = `In use`; } } catch {}
+        // Create the row for the network entry
+        let details = `
+            <tr>
+                <td><input class="form-check-input m-0 align-middle" name="select" value="${networks[i].Id}" type="checkbox" aria-label="Select"></td>
+                <td class="sort-name">${networks[i].Name}</td>
+                <td class="sort-city">${networks[i].Id}</td>
+                <td class="sort-score text-green">${status}</td>
+                <td class="sort-date" data-date="1628122643">${networks[i].Created}</td>
+                <td class="text-end"><a class="btn" href="#">Details</a></td>
+            </tr>`
+            // Add the row to the network list
+            network_list += details;
+    }
 
     res.render("networks",{ 
         alert: '',
         username: req.session.username,
         role: req.session.role,
         network_count: '',
-        network_list: '',
+        network_list: network_list,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 }
 
 
 
-export const submitNetworks = async function(req,res){
+export const NetworkAction = async function(req,res){
 
+    // let trigger_name = req.header('hx-trigger-name');
+    // let trigger_id = req.header('hx-trigger');
+    // console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`);
     // console.log(req.body);
 
-    let trigger_name = req.header('hx-trigger-name');
-    let trigger_id = req.header('hx-trigger');
 
-    console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`);
+    // Grab the list of networks
+    let networks = req.body.select;
+    // Make sure the value is an array
+    if (typeof(networks) == 'string') { networks = [networks]; }
+    // Loop through the array
+    for (let i = 0; i < networks.length; i++) {
+        if (networks[i] != 'on') {
+            try {
+                await removeNetwork(networks[i]);
+                console.log(`Network removed: ${networks[i]}`);
+            } 
+            catch {
+                console.log(`Unable to remove network: ${networks[i]}`);
+            }
+        }
+    }
 
+    res.redirect("/networks");
+}
 
 
-    res.render("networks",{
-        alert: '',
-        username: req.session.username,
-        role: req.session.role,
-        network_count: '',
-        network_list: '',
-        navbar: await Navbar(req),
-    });
 
+export const searchNetworks = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
 }

+ 18 - 2
controllers/preferences.js

@@ -1,5 +1,6 @@
 import { ServerSettings, User } from '../database/config.js';
-import { Alert, getLanguage, Navbar, Capitalize } from '../utils/system.js';
+import { Alert, getLanguage, Navbar, Sidebar, Footer, Capitalize } from '../utils/system.js';
+import { readdirSync, readFileSync } from 'fs';
 
 export const Preferences = async function(req,res){
 
@@ -14,11 +15,15 @@ export const Preferences = async function(req,res){
     let checked = '';
     if (hide_profile == true) { checked = 'checked'; }
 
+
+
     res.render("preferences",{ 
         alert: '',
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
         selected: selected,
         hide_profile: checked,
 
@@ -29,12 +34,13 @@ export const Preferences = async function(req,res){
 
 export const submitPreferences = async function(req,res){
 
-    let { language_input, hidden_input } = req.body;
+    let { language_input, hidden_input, check_languages } = req.body;
 
     let trigger_name = req.header('hx-trigger-name');
     let trigger_id = req.header('hx-trigger');
 
     // console.log(`trigger_name: ${trigger_name} - trigger_id: ${trigger_id}`);
+    // console.log(req.body);
 
     if (hidden_input == 'on') { hidden_input = true; } else { hidden_input = false; }
 
@@ -65,7 +71,17 @@ export const submitPreferences = async function(req,res){
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
         selected: selected,
     });
 
+}
+
+
+
+export const searchPreferences = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
 }

+ 22 - 15
controllers/register.js

@@ -1,19 +1,17 @@
 import bcrypt from "bcrypt";
 import { Op } from "sequelize";
-import { User, ServerSettings, Permission } from "../database/config.js";
+import { User, ServerSettings, Permission, Syslog } from "../database/config.js";
 
 
 export const Register = async function(req,res){
 
-    // Redirect to dashboard if user is already logged in.
     if (req.session.username) { res.redirect("/dashboard"); }
 
-
-    let user_registration = await ServerSettings.findOne({ where: { key: 'user_registration' }});
-
     let secret_input = '';
-
-    // Input field for secret if one has been set.
+    let user_registration = await ServerSettings.findOne({ where: { key: 'user_registration' }});
+    if (user_registration == null ) { user_registration = false; }
+    else { user_registration = user_registration.value; }
+    
     if (user_registration) {
         secret_input = `<div class="mb-3"><label class="form-label">Secret</label>
                                 <div class="input-group input-group-flat">
@@ -22,7 +20,7 @@ export const Register = async function(req,res){
                             </div>`}
 
     // If there are no users, or registration has been enabled, display the registration page.
-    if ((await User.count() == 0) || (user_registration.value == true)) {
+    if ((await User.count() == 0) || (user_registration)) {
         res.render("register",{ 
             "error": "",
             "reg_secret": secret_input,
@@ -44,14 +42,19 @@ export const submitRegister = async function(req,res){
     let error = '';
     if (!name || !username || !email || !password || !confirm) { error = "All fields are required"; } 
     else if (password !== confirm) { error = "Passwords do not match"; }
-    else if (registration_secret && secret !== registration_secret) { error = "Invalid secret"; }
-    else if (await User.findOne({ where: { [Op.or]: [{ username: username }, { email: email }] }})) { error = "Username or email already exists"; }
 
-    if (error) {
-        res.render("register", { "error": error });
-        return;
+    else if (registration_secret && secret !== registration_secret) { 
+        error = "Invalid secret";
+        await Syslog.create({ username: user.username, uniqueID: email, event: "Failed Registration", message: "Invalid Secret", ip: req.socket.remoteAddress });
+    }
+
+    else if (await User.findOne({ where: { [Op.or]: [{ username: username }, { email: email }] }})) { 
+        error = "Username or email already exists"; 
+        await Syslog.create({ username: user.username, uniqueID: email, event: "Failed Registration", message: "Username or email already exists", ip: req.socket.remoteAddress });
     }
 
+    if (error) { res.render("register", { "error": error }); return; }
+
     // Returns 'admin' if no users have been created.
     async function Role() {
         if (await User.count() == 0) { return "admin"; }
@@ -73,13 +76,17 @@ export const submitRegister = async function(req,res){
     let user = await User.findOne({ where: { email: email }});
     let match = await bcrypt.compare(password, user.password);
     if (match) {
-        console.log(`User ${username} created`);
-
         req.session.username = user.username;
         req.session.userID = user.userID;
         req.session.role = user.role;
+        
+        await Syslog.create({ username: user.username, uniqueID: user.email, event: "Registration", message: "User created", ip: req.socket.remoteAddress });
+
+        console.log(`User ${username} created`);
+
         res.redirect("/dashboard");
     } else {
+        await Syslog.create({ username: user.username, uniqueID: user.email, event: "Failed Registration", message: "Error. User not created", ip: req.socket.remoteAddress });
         res.render("register", { "error": "Error. User not created" });
     }
 }

+ 121 - 42
controllers/settings.js

@@ -1,28 +1,42 @@
 import { ServerSettings } from '../database/config.js';
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { Alert, getLanguage, Navbar, Sidebar, Footer } from '../utils/system.js';
+import { read, readdirSync, readFileSync } from 'fs';
 
 export const Settings = async function(req,res){
 
-    let custom_link = await ServerSettings.findOne({ where: {key: 'custom_link'}});
-    let link_url = await ServerSettings.findOne({ where: {key: 'link_url'}});
-
     let user_registration = await ServerSettings.findOne({ where: {key: 'user_registration'}});
     let registration_secret = await ServerSettings.findOne({ where: {key: 'registration_secret'}});
 
-    let authentication = await ServerSettings.findOne({ where: {key: 'authentication'}});
-    
-    let custom_link_enabled = '';
-    try { if (custom_link.value == true) { custom_link_enabled = 'checked'; } } catch { console.log('Custom Link: No Value Set'); }
+    let authentication = await ServerSettings.findOne({ where: {key: 'authentication'}}) || { value: 'default' };
 
     let user_registration_enabled = '';
-    try { if (user_registration.value == true) { user_registration_enabled = 'checked'; } } catch { console.log('User Registration: No Value Set'); }
+    try { if (user_registration.value == true) { user_registration_enabled = 'checked'; } } catch { }
+
+    let registration_secret_value = '';
+    try { registration_secret_value = registration_secret.value; } catch { }
+
+    let custom_link = await ServerSettings.findOne({ where: {key: 'custom_link'}});
+    let link_url = await ServerSettings.findOne({ where: {key: 'link_url'}});
+
+    let custom_link_enabled = '';
+    try { if (custom_link.value == true) { custom_link_enabled = 'checked'; } } catch { }
 
     let link_url_value = '';
-    try { link_url_value = link_url.value; } catch { console.log('Link URL: No Value Set'); }
+    try { link_url_value = link_url.value; } catch { }
 
-    let registration_secret_value = '';
-    try { registration_secret_value = registration_secret.value; } catch { console.log('Registration Secret: No Value Set'); }
 
+    let host2 = await ServerSettings.findOne({ where: {key: 'host2'}});
+    let host3 = await ServerSettings.findOne({ where: {key: 'host3'}});
+    let host4 = await ServerSettings.findOne({ where: {key: 'host4'}});
+
+    let [host2_toggle, host2_tag, host2_ip, host2_port] = ['', '', '', ''];
+    let [host3_toggle, host3_tag, host3_ip, host3_port] = ['', '', '', ''];
+    let [host4_toggle, host4_tag, host4_ip, host4_port] = ['', '', '', ''];
+    
+    if (host2.value) { host2_toggle = 'checked'; [host2_tag, host2_ip, host2_port] = host2.value.split(','); }
+    if (host3.value) { host3_toggle = 'checked'; [host3_tag, host3_ip, host3_port] = host3.value.split(','); }
+    if (host4.value) { host4_toggle = 'checked'; [host4_tag, host4_ip, host4_port] = host4.value.split(','); }
+    
 
     res.render("settings",{ 
         alert: '',
@@ -33,7 +47,22 @@ export const Settings = async function(req,res){
         custom_link: custom_link_enabled,
         link_url: link_url_value,
         authentication: authentication.value,
+        host2_toggle: host2_toggle,
+        host2_tag: host2_tag,
+        host2_ip: host2_ip,
+        host2_port: host2_port,
+        host3_toggle: host3_toggle,
+        host3_tag: host3_tag,
+        host3_ip: host3_ip,
+        host3_port: host3_port,
+        host4_toggle: host4_toggle,
+        host4_tag: host4_tag,
+        host4_ip: host4_ip,
+        host4_port: host4_port,
+        selected: 'english',
         navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
     });
 }
 
@@ -46,6 +75,10 @@ export const updateSettings = async function (req, res) {
     let { host3, tag3, ip3, port3 } = req.body;
     let { host4, tag4, ip4, port4 } = req.body;
 
+    if (tag2 == '') { tag2 = 'Host 2'; }
+    if (tag3 == '') { tag3 = 'Host 3'; }
+    if (tag4 == '') { tag4 = 'Host 4'; }
+
     let trigger_name = req.header('hx-trigger-name');
     let trigger_id = req.header('hx-trigger');
 
@@ -55,7 +88,7 @@ export const updateSettings = async function (req, res) {
         return;
     }
 
-    // Continues on if the trigger is 'settings
+    // Continues on if the trigger is 'settings'
 
     // Custom link
     if (custom_link) {
@@ -67,7 +100,6 @@ export const updateSettings = async function (req, res) {
         if (exists2) { await ServerSettings.update({value: link_url}, {where: {key: 'link_url'}}); }
         else { await ServerSettings.create({ key: 'link_url', value: link_url}); }
 
-        console.log('Custom link enabled');
 
     } else if (!custom_link) {
         let exists = await ServerSettings.findOne({ where: {key: 'custom_link'}});
@@ -75,10 +107,8 @@ export const updateSettings = async function (req, res) {
         else { await ServerSettings.create({ key: 'custom_link', value: false}); }
 
         let exists2 = await ServerSettings.findOne({ where: {key: 'link_url'}});
-        if (exists2) { await ServerSettings.update({value: ''}, {where: {key: 'link_url'}}); }
-        else { await ServerSettings.create({ key: 'link_url', value: ''}); }
-
-        console.log('Custom links off');
+        if (exists2) { await ServerSettings.update({value: 'http://localhost'}, {where: {key: 'link_url'}}); }
+        else { await ServerSettings.create({ key: 'link_url', value: 'http://localhost'}); }
     }
 
     // User registration
@@ -91,7 +121,6 @@ export const updateSettings = async function (req, res) {
         if (exists2) { await ServerSettings.update({value: registration_secret}, {where: {key: 'registration_secret'}}); }
         else { await ServerSettings.create({ key: 'registration_secret', value: registration_secret}); }
 
-        console.log('registration on');
 
     } else if (!user_registration) {
         let exists = await ServerSettings.findOne({ where: {key: 'user_registration'}});
@@ -101,8 +130,6 @@ export const updateSettings = async function (req, res) {
         let exists2 = await ServerSettings.findOne({ where: {key: 'registration_secret'}});
         if (exists2) { await ServerSettings.update({value: ''}, {where: {key: 'registration_secret'}}); }
         else { await ServerSettings.create({ key: 'registration_secret', value: ''}); }
-        
-        console.log('registration off');
     }
 
     // Authentication
@@ -110,12 +137,10 @@ export const updateSettings = async function (req, res) {
         let exists = await ServerSettings.findOne({ where: {key: 'authentication'}});
         if (exists) { await ServerSettings.update({value: authentication}, {where: {key: 'authentication'}}); }
         else { await ServerSettings.create({ key: 'authentication', value: authentication}); }
-        console.log('Authentication on');
     } else if (!authentication) {
         let exists = await ServerSettings.findOne({ where: {key: 'authentication'}});
         if (exists) { await ServerSettings.update({value: 'default'}, {where: {key: 'authentication'}}); }
         else { await ServerSettings.create({ key: 'authentication', value: 'off'}); }
-        console.log('Authentication off');
     }
 
 
@@ -123,43 +148,97 @@ export const updateSettings = async function (req, res) {
     // Host 2
     if (host2) {
         let exists = await ServerSettings.findOne({ where: {key: 'host2'}});
-        if (exists) { const setting = await ServerSettings.update({value: `${tag2},${ip2},${port2}`}, {where: {key: 'host2'}}); }
-        else { const newSetting = await ServerSettings.create({ key: 'host2', value: `${tag2},${ip2},${port2}`}); }   
-        console.log('host2 on');
+        if (exists) { await ServerSettings.update({value: `${tag2},${ip2},${port2}`}, {where: {key: 'host2'}}); }
+        else { await ServerSettings.create({ key: 'host2', value: `${tag2},${ip2},${port2}`}); }   
     } else if (!host2) {
         let exists = await ServerSettings.findOne({ where: {key: 'host2'}});
-        if (exists) { const setting = await ServerSettings.update({value: ''}, {where: {key: 'host2'}}); }
-        else { const newSetting = await ServerSettings.create({ key: 'host2', value: ''}); }
-        console.log('host2 off');
+        if (exists) { await ServerSettings.update({value: ''}, {where: {key: 'host2'}}); }
+        else { await ServerSettings.create({ key: 'host2', value: ''}); }
     }
 
-    // // Host 3
+    // Host 3
     if (host3) {
         let exists = await ServerSettings.findOne({ where: {key: 'host3'}});
-        if (exists) { const setting = await ServerSettings.update({value: `${tag3},${ip3},${port3}`}, {where: {key: 'host3'}}); }
-        else { const newSetting = await ServerSettings.create({ key: 'host3', value: `${tag3},${ip3},${port3}`}); }
-        console.log('host3 on');
+        if (exists) { await ServerSettings.update({value: `${tag3},${ip3},${port3}`}, {where: {key: 'host3'}}); }
+        else { await ServerSettings.create({ key: 'host3', value: `${tag3},${ip3},${port3}`}); }
     } else if (!host3) {
         let exists = await ServerSettings.findOne({ where: {key: 'host3'}});
-        if (exists) { const setting = await ServerSettings.update({value: ''}, {where: {key: 'host3'}}); }
-        else { const newSetting = await ServerSettings.create({ key: 'host3', value: ''}); }
-        console.log('host3 off');
+        if (exists) { await ServerSettings.update({value: ''}, {where: {key: 'host3'}}); }
+        else { await ServerSettings.create({ key: 'host3', value: ''}); }
     }
 
     // Host 4
     if (host4) {
         let exists = await ServerSettings.findOne({ where: {key: 'host4'}});
-        if (exists) { const setting = await ServerSettings.update({value: `${tag4},${ip4},${port4}`}, {where: {key: 'host4'}}); }
-        else { const newSetting = await ServerSettings.create({ key: 'host4', value: `${tag4},${ip4},${port4}`}); }
-        console.log('host4 on');
+        if (exists) { await ServerSettings.update({value: `${tag4},${ip4},${port4}`}, {where: {key: 'host4'}}); }
+        else { await ServerSettings.create({ key: 'host4', value: `${tag4},${ip4},${port4}`}); }
     } else if (!host4) {
         let exists = await ServerSettings.findOne({ where: {key: 'host4'}});
-        if (exists) { const setting = await ServerSettings.update({value: ''}, {where: {key: 'host4'}}); }
-        else { const newSetting = await ServerSettings.create({ key: 'host4', value: ''}); }
-        console.log('host4 off');
+        if (exists) { await ServerSettings.update({value: ''}, {where: {key: 'host4'}}); }
+        else { await ServerSettings.create({ key: 'host4', value: ''}); }
     }
 
 
     console.log('Settings updated');
     res.send(`<button class="btn btn-success" hx-post="/settings" hx-trigger="load delay:2s" hx-swap="outerHTML" id="submit" hx-target="#submit">Updated</button>`);
+}
+
+
+
+let inProgress = false;
+export const updateLanguages = async function(req,res){
+
+    let trigger_id = req.header('hx-trigger');
+
+    if (inProgress == true) {
+        console.log('Language update still in progress');
+        res.send('<button class="btn" aria-label="button" id="checking" hx-post="/update_languages" hx-swap="outerHTML" hx-target="#checking" hx-trigger="every 2s">Checking For Updates<div class="mx-2 spinner-border spinner-border-sm"></div></button>');
+        return;
+    }
+
+    if (trigger_id == 'check_languages') {
+
+        inProgress = true;
+        res.send('<button class="btn" aria-label="button" id="checking" hx-post="/update_languages" hx-swap="outerHTML" hx-target="#checking" hx-trigger="every 2s">Checking For Updates<div class="mx-2 spinner-border spinner-border-sm"></div></button>');
+
+        const resp = await fetch(`https://api.github.com/repos/lllllllillllllillll/DweebUI/contents/languages?ref=dev`);
+        const data = await resp.json();
+        let languages = [];
+        data.forEach((lang) => {
+            languages.push({ language: lang.name, download_url: lang.download_url });
+        });
+    
+        for (let i = 0; i < languages.length; i++) {
+            let language_dev = await fetch(languages[i].download_url);
+            language_dev = await language_dev.text();
+    
+            let language_local = readFileSync(`./languages/${languages[i].language}`, 'utf8');
+            
+            if (language_dev != language_local) {
+                console.log(`\x1b[31mLanguage: ${languages[i].language} is out of date.\x1b[0m`);
+            } else {
+                console.log(`\x1b[32mLanguage: ${languages[i].language} is up to date.\x1b[0m`);
+            }
+        }
+
+        setTimeout(() => {
+            inProgress = false;
+            console.log('Languages Updated');
+        }, 2000);
+
+        return;
+    } else {
+        if ((trigger_id == "checking") && (inProgress == false)) {
+            res.send('<button class="btn" aria-label="button" name="check_languages" id="check_languages" value="true" hx-post="/update_languages" hx-swap="outerHTML" hx-target="#check_languages">Update Language Files</button>');
+            return;
+        }
+    }
+
+}
+
+
+export const searchSettings = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
 }

+ 53 - 0
controllers/sponsors.js

@@ -0,0 +1,53 @@
+import { ServerSettings, User } from '../database/config.js';
+import { Alert, getLanguage, Navbar, Sidebar, Footer, Capitalize } from '../utils/system.js';
+import { readdirSync, readFileSync } from 'fs';
+import bcrypt from 'bcrypt';
+
+export const Sponsors = async function (req, res) {
+
+    let language = await getLanguage(req);
+    let Language = Capitalize(language);
+    let selected = `<option value="${language}" selected hidden>${Language}</option>`;
+
+    let user = await User.findOne({ where: { userID: req.session.userID }});
+    let preferences = JSON.parse(user.preferences);
+    let hide_profile = preferences.hide_profile;
+
+    let checked = '';
+    if (hide_profile == true) { checked = 'checked'; }
+
+
+
+    res.render("sponsors",{ 
+        alert: '',
+        username: req.session.username,
+        role: req.session.role,
+        navbar: await Navbar(req),
+        sidebar: await Sidebar(req),
+        footer: await Footer(req),
+        selected: selected,
+        hide_profile: checked,
+
+    });
+}
+
+
+export const searchSponsors = async function (req, res) {
+
+    console.log(`[Search] ${req.body.search}`);
+
+    let sponsored = await ServerSettings.findOne({ where: { key: 'sponsored' }});
+    if (!sponsored) { 
+        let secret_hash = '$2b$10$2EDoqM10LbNMmSVdbrOV/.eLFlYrxBk4An02prZeqRSqRVktNi3m.';
+        let correct_key = bcrypt.compareSync(req.body.search, secret_hash);
+        if (correct_key) {
+            await ServerSettings.create({ key: 'sponsored', value: 'true' });
+            console.log('Sponsored. Thank you for your support!');
+        }
+     }
+
+    res.send('ok');
+    return;
+}
+
+

+ 53 - 3
controllers/syslogs.js

@@ -1,14 +1,55 @@
-import { ServerSettings } from '../database/config.js';
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { Syslog } from '../database/config.js';
+import { Alert, getLanguage, Navbar, Footer } from '../utils/system.js';
 
-export const Syslogs = async function(req,res){
+export const Syslogs = async function(req, res) {
 
+    let logs = '';
+
+    const syslogs = await Syslog.findAll({
+        order: [
+            ['id', 'DESC']
+        ]
+    });
+
+
+    for (const log of syslogs) {
+        let date = (log.createdAt).toDateString();
+        let time = (log.createdAt).toLocaleTimeString();
+        let datetime = `${time} ${date}`;
+
+
+        // get the last 12 characters of the uniqueID
+        let uniqueID = log.uniqueID;
+        // if (uniqueID.length > 12) {
+        //     uniqueID = uniqueID.substring(uniqueID.length - 12);
+        // }
+
+        let message = log.message;
+        // if (message.length > 50) {
+        //     message = message.substring(0, 50) + '...';
+        // }
+
+        logs += `<tr>
+                    <td><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select"></td>
+                    <td class="sort-id">${log.id}</td>
+                    <td class="sort-username">${log.username}</td>
+                    <td class="sort-uniqueid">${uniqueID}</td>
+                    <td class="sort-event">${log.event}</td>
+                    <td class="sort-message">${message}</td>
+                    <td class="sort-ip">${log.ip}</td>
+                    <td class="sort-timestamp">${datetime}</td>
+                    <td class="text-end"><a class="" href="#"><svg xmlns="http://www.w3.org/2000/svg" class="icon-tabler icon-tabler-player-play" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M7 4v16l13 -8z"></path></svg></a></td>
+
+                </tr>`
+    }
 
     res.render("syslogs",{ 
         alert: '',
         username: req.session.username,
         role: req.session.role,
+        logs: logs,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 }
 
@@ -29,6 +70,15 @@ export const submitSyslogs = async function(req,res){
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 
+}
+
+
+
+export const searchSyslogs = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
 }

+ 25 - 26
controllers/users.js

@@ -1,22 +1,9 @@
 import { ServerSettings, User } from '../database/config.js';
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { Alert, getLanguage, Navbar, Footer } from '../utils/system.js';
 
 export const Users = async function(req,res){
 
-    let user_list = `
-    <tr>
-        <th><input class="form-check-input" type="checkbox"></th>
-        <th>ID</th>
-        <th>Avatar</th>
-        <th>Name</th>
-        <th>Username</th>
-        <th>Email</th>
-        <th>UUID</th>
-        <th>Role</th>
-        <th>Last Login</th>
-        <th>Status</th>
-        <th>Actions</th>
-    </tr>`
+    let user_list = '';
 
     let allUsers = await User.findAll();
     allUsers.forEach((account) => {
@@ -33,17 +20,18 @@ export const Users = async function(req,res){
 
         let info = `
         <tr>
-            <td><input class="form-check-input" type="checkbox"></td>
-            <td>${account.id}</td>
-            <td><span class="avatar avatar-sm bg-green-lt">${avatar}</span></span>
-            <td>${account.name}</td>
-            <td>${account.username}</td>
-            <td>${account.email}</td>
-            <td>${account.UUID}</td>
-            <td>${account.role}</td>
-            <td>${account.lastLogin}</td>
-            <td>${active}</td>
-            <td><a href="#" class="btn">View</a></td>
+            <td><input class="form-check-input" type="checkbox" name="select"></td>
+            
+            <td class="sort-id">${account.id}</td>
+            <td class="sort-avatar"><span class="avatar avatar-sm bg-green-lt">${avatar}</span></span>
+            <td class="sort-name">${account.name}</td>
+            <td class="sort-username">${account.username}</td>
+            <td class="sort-email">${account.email}</td>
+            <td class="sort-userid">${account.userID}</td>
+            <td class="sort-role">${account.role}</td>
+            <td class="sort-lastlogin">${account.lastLogin}</td>
+            <td class="sort-active">${active}</td>
+            <td class="sort-action"><a href="#" class="btn">View</a></td>
         </tr>`
 
         user_list += info;
@@ -55,6 +43,7 @@ export const Users = async function(req,res){
         role: req.session.role,
         user_list: user_list,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 }
 
@@ -84,6 +73,16 @@ export const submitUsers = async function(req,res){
         username: req.session.username,
         role: req.session.role,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 
+}
+
+
+
+
+export const searchUsers = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
 }

+ 58 - 3
controllers/volumes.js

@@ -1,15 +1,62 @@
-import { Alert, getLanguage, Navbar } from '../utils/system.js';
+import { Alert, getLanguage, Navbar, Footer } from '../utils/system.js';
+import { volumeList, GetContainerLists } from '../utils/docker.js';
 
-export const Volumes = async function(req,res){
+export const Volumes = async function(req, res) {
+    let container_volumes = [];
+    let volume_list = '';
 
+    // List all containers
+    let containers = await GetContainerLists();
+
+    // Get the first 6 volumes from each container
+    for (let i = 0; i < containers.length; i++) {
+        try { container_volumes.push({type: containers[i].Mounts[0].Type, source: containers[i].Mounts[0].Source}); } catch { } 
+        try { container_volumes.push({type: containers[i].Mounts[1].Type, source: containers[i].Mounts[1].Source}); } catch { }
+        try { container_volumes.push({type: containers[i].Mounts[2].Type, source: containers[i].Mounts[2].Source}); } catch { }
+        try { container_volumes.push({type: containers[i].Mounts[3].Type, source: containers[i].Mounts[3].Source}); } catch { }
+        try { container_volumes.push({type: containers[i].Mounts[4].Type, source: containers[i].Mounts[4].Source}); } catch { }
+        try { container_volumes.push({type: containers[i].Mounts[5].Type, source: containers[i].Mounts[5].Source}); } catch { }
+    }
+    
+    // List ALL volumes
+    let list = await volumeList();
+    let volumes = list.Volumes;
+
+    // Create a table row for each volume
+    for (let i = 0; i < volumes.length; i++) {
+        let volume = volumes[i];
+        let name = "" + volume.Name;
+        let mount = "" + volume.Mountpoint;
+        let type = "Bind";
+
+        // Check if the volume is being used by any of the containers
+        let status = '';
+        if (container_volumes.some(volume => volume.source === mount)) { status = "In use"; }
+        if (container_volumes.some(volume => volume.source === mount && volume.type === 'volume')) { type = "Volume"; }
+
+        let row = `
+        <tr>
+            <td><input class="form-check-input m-0 align-middle" name="select" value="${name}" type="checkbox" aria-label="Select"></td>
+            <td class="sort-type">${type}</td>
+            <td class="sort-name">${name}</td>
+            <td class="sort-city">${mount}</td>
+            <td class="sort-score text-green">${status}</td>
+            <td class="sort-date" data-date="1628122643">${volume.CreatedAt}</td>
+            <td class="sort-quantity">MB</td>
+            <td class="text-end"><a class="btn" href="#">Details</a></td>
+        </tr>`
+    
+        volume_list += row;    
+    }
 
     res.render("volumes",{ 
         alert: '',
         username: req.session.username,
         role: req.session.role,
         volume_count: '',
-        volume_list: '',
+        volume_list: volume_list,
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 }
 
@@ -32,6 +79,14 @@ export const submitVolumes = async function(req,res){
         volume_count: '',
         volume_list: '',
         navbar: await Navbar(req),
+        footer: await Footer(req),
     });
 
+}
+
+
+export const searchVolumes = async function (req, res) {
+    console.log(`[Search] ${req.body.search}`);
+    res.send('ok');
+    return;
 }

+ 130 - 6
database/config.js

@@ -37,13 +37,17 @@ const SettingsDB = new SequelizeStore({ db: settings });
 // Display package information
 let package_info = readFileSync(`package.json`, 'utf8');
 package_info = JSON.parse(package_info);
-console.log('');
+console.log('\n');
 console.log(`\x1b[33mDweebUI v${package_info.version}\x1b[0m`);
 console.log(`\x1b[33mAuthor: ${package_info.author}\x1b[0m`);
 console.log(`\x1b[33mLicense: ${package_info.license}\x1b[0m`);
 console.log(`\x1b[33mDescription: ${package_info.description}\x1b[0m`);
 console.log('');
 
+// console.log in red
+console.log('\x1b[31m * Only Docker volumes are supported. No bind mounts.\n \x1b[0m');
+console.log('\x1b[31m * Breaking changes may require you to remove the DweebUI volume and start fresh. \n \x1b[0m');
+
 // Test database connection
 try {
     await sessionData.authenticate();
@@ -158,10 +162,6 @@ export const Permission = settings.define('Permission', {
     type: DataTypes.STRING,
     defaultValue: false
   },
-  reset_view: {
-    type: DataTypes.STRING,
-    defaultValue: false
-  },
   view: {
     type: DataTypes.STRING,
     defaultValue: false
@@ -181,7 +181,7 @@ export const Syslog = settings.define('Syslog', {
   username: {
     type: DataTypes.STRING
   },
-  email: {
+  uniqueID: {
     type: DataTypes.STRING
   },
   event: {
@@ -246,4 +246,128 @@ export const ServerSettings = settings.define('ServerSettings', {
     type: DataTypes.STRING,
     allowNull: true
   }
+});
+
+
+export const Container = settings.define('Container', {
+  id: {
+      type: DataTypes.INTEGER,
+      autoIncrement: true,
+      primaryKey: true
+  },
+  containerName: {
+      type: DataTypes.STRING,
+      allowNull: false
+  },
+  containerID: {
+      type: DataTypes.STRING,
+      allowNull: false
+  },
+  service: {
+      type: DataTypes.STRING
+  },
+  state: {
+      type: DataTypes.STRING
+  },
+  image: {
+      type: DataTypes.STRING
+  },
+  external_port: {
+      type: DataTypes.STRING
+  },
+  internal_port: {
+      type: DataTypes.STRING
+  },
+  ports: {
+      type: DataTypes.STRING
+  },
+  volumes: {
+      type: DataTypes.STRING
+  },
+  environment_variables: {
+      type: DataTypes.STRING
+  },
+  labels: {
+      type: DataTypes.STRING
+  },
+  IPv4: {
+      type: DataTypes.STRING
+  },
+  style: {
+      type: DataTypes.STRING
+  },
+  cpu: {
+      type: DataTypes.STRING
+  },
+  ram: {
+      type: DataTypes.STRING
+  },
+  link: {
+      type: DataTypes.STRING
+  },
+  update: {
+      type: DataTypes.STRING
+  },
+  group: {
+      type: DataTypes.STRING
+  },
+  options: {
+      type: DataTypes.STRING
+  },
+  host: {
+      type: DataTypes.STRING
+  },
+});
+
+export const Variables = settings.define('Variables', {
+id: {
+    type: DataTypes.INTEGER,
+    autoIncrement: true,
+    primaryKey: true
+},
+key: {
+    type: DataTypes.STRING
+},
+value: {
+    type: DataTypes.STRING
+}, 
+options: {
+    type: DataTypes.STRING
+}
+});
+
+
+export const ContainerLists = settings.define('ContainerLists', {
+  id: {
+    type: DataTypes.INTEGER,
+    autoIncrement: true,
+    primaryKey: true
+  },
+  username: {
+    type: DataTypes.STRING,
+    allowNull: false
+  },
+  userID: {
+    type: DataTypes.UUID,
+    defaultValue: DataTypes.UUIDV4,
+    allowNull: false
+  },
+  containers: {
+    type: DataTypes.STRING,
+  },
+  hidden: {
+    type: DataTypes.STRING,
+  },
+  visable: {
+    type: DataTypes.STRING,
+  },
+  new: {
+    type: DataTypes.STRING,
+  },
+  updates: {
+    type: DataTypes.STRING,
+  },
+  sent: {
+    type: DataTypes.STRING,
+  },
 });

+ 15 - 10
languages/chinese.json

@@ -6,13 +6,15 @@
     "Apps": "应用商店",
     "Users": "用户",
     "Syslogs": "系统日志",
-    "Search": "",
-    "Account": "",
-    "Notifications": "",
-    "Preferences": "",
-    "Settings": "",
-    "Logout": "",
-    "admin": "",
+    "Search": "搜索",
+    "Account": "账户",
+    "Notifications": "通知",
+    "Preferences": "偏好设置",
+    "Settings": "设置",
+    "Logout": "登出",
+    "Sponsors": "赞助商",
+    "Credits": "积分",
+    "admin": "管理员",
     "user": "",
     "Start": "",
     "Stop": "",
@@ -31,8 +33,11 @@
     "Update": "",
     "Uninstall": "",
     "Hide": "",
-    "Reset View": "",
+    "Reset_View": "",
     "Permissions": "",
-    "Sponsors": "",
-    "Credits": ""
+    "Copyright": "",
+    "Documentation": "文档",
+    "License": "",
+    "Source_Code": "",
+    "Support": ""
 }

+ 207 - 16
package-lock.json

@@ -1,23 +1,27 @@
 {
-  "name": "test",
-  "version": "1.0.0",
+  "name": "dweebui",
+  "version": "0.70.446",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "test",
-      "version": "1.0.0",
-      "license": "ISC",
+      "name": "dweebui",
+      "version": "0.70.446",
+      "license": "MIT",
       "dependencies": {
+        "adm-zip": "^0.5.15",
         "bcrypt": "^5.1.1",
         "connect-session-sequelize": "^7.1.7",
         "dockerode": "^4.0.2",
+        "dockerode-compose": "^1.4.0",
         "ejs": "^3.1.10",
         "express": "^4.19.2",
         "express-session": "^1.18.0",
+        "multer": "^1.4.5-lts.1",
         "sequelize": "^6.37.3",
         "sqlite3": "^5.1.7",
-        "systeminformation": "^5.22.11"
+        "systeminformation": "^5.23.5",
+        "yaml": "^2.5.0"
       }
     },
     "node_modules/@balena/dockerignore": {
@@ -97,11 +101,11 @@
       "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
     },
     "node_modules/@types/node": {
-      "version": "20.14.12",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz",
-      "integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==",
+      "version": "22.2.0",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz",
+      "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==",
       "dependencies": {
-        "undici-types": "~5.26.4"
+        "undici-types": "~6.13.0"
       }
     },
     "node_modules/@types/validator": {
@@ -126,6 +130,14 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/adm-zip": {
+      "version": "0.5.15",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz",
+      "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==",
+      "engines": {
+        "node": ">=12.0"
+      }
+    },
     "node_modules/agent-base": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
@@ -184,6 +196,11 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
+    "node_modules/append-field": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+      "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
+    },
     "node_modules/aproba": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
@@ -202,6 +219,11 @@
         "node": ">=10"
       }
     },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+    },
     "node_modules/array-flatten": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -351,6 +373,11 @@
         "ieee754": "^1.1.13"
       }
     },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+    },
     "node_modules/buildcheck": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz",
@@ -360,6 +387,17 @@
         "node": ">=10.0.0"
       }
     },
+    "node_modules/busboy": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+      "dependencies": {
+        "streamsearch": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=10.16.0"
+      }
+    },
     "node_modules/bytes": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@@ -476,6 +514,47 @@
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
     },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "engines": [
+        "node >= 0.8"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/concat-stream/node_modules/readable-stream": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/concat-stream/node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
+    "node_modules/concat-stream/node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
     "node_modules/connect-session-sequelize": {
       "version": "7.1.7",
       "resolved": "https://registry.npmjs.org/connect-session-sequelize/-/connect-session-sequelize-7.1.7.tgz",
@@ -527,6 +606,11 @@
       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
       "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
     },
+    "node_modules/core-util-is": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+    },
     "node_modules/cpu-features": {
       "version": "0.0.10",
       "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz",
@@ -652,6 +736,32 @@
         "node": ">= 8.0"
       }
     },
+    "node_modules/dockerode-compose": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/dockerode-compose/-/dockerode-compose-1.4.0.tgz",
+      "integrity": "sha512-6x5ZlK06H+cgoTR4ffucqN5kWVvxNvxwTLcHQUZcegCJBEDGrdzXMOEGDMsxbHwiLtLo2dNwG0eZK7B2RfEWSw==",
+      "dependencies": {
+        "dockerode": "^4.0.0",
+        "js-yaml": "^4.0.0",
+        "tar-fs": "^2.1.1"
+      }
+    },
+    "node_modules/dockerode-compose/node_modules/chownr": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+    },
+    "node_modules/dockerode-compose/node_modules/tar-fs": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+      "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+      "dependencies": {
+        "chownr": "^1.1.1",
+        "mkdirp-classic": "^0.5.2",
+        "pump": "^3.0.0",
+        "tar-stream": "^2.1.4"
+      }
+    },
     "node_modules/dottie": {
       "version": "2.0.6",
       "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz",
@@ -1280,6 +1390,11 @@
       "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
       "optional": true
     },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+    },
     "node_modules/isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -1303,6 +1418,17 @@
         "node": ">=10"
       }
     },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
     "node_modules/jsbn": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
@@ -1584,6 +1710,34 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
+    "node_modules/multer": {
+      "version": "1.4.5-lts.1",
+      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
+      "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
+      "dependencies": {
+        "append-field": "^1.0.0",
+        "busboy": "^1.0.0",
+        "concat-stream": "^1.5.2",
+        "mkdirp": "^0.5.4",
+        "object-assign": "^4.1.1",
+        "type-is": "^1.6.4",
+        "xtend": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/multer/node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
     "node_modules/nan": {
       "version": "2.20.0",
       "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz",
@@ -1850,6 +2004,11 @@
         "node": ">=10"
       }
     },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+    },
     "node_modules/promise-inflight": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
@@ -2354,6 +2513,14 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/streamsearch": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
     "node_modules/string_decoder": {
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -2406,9 +2573,9 @@
       }
     },
     "node_modules/systeminformation": {
-      "version": "5.22.11",
-      "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.11.tgz",
-      "integrity": "sha512-aLws5yi4KCHTb0BVvbodQY5bY8eW4asMRDTxTW46hqw9lGjACX6TlLdJrkdoHYRB0qs+MekqEq1zG7WDnWE8Ug==",
+      "version": "5.23.5",
+      "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.23.5.tgz",
+      "integrity": "sha512-PEpJwhRYxZgBCAlWZhWIgfMTjXLqfcaZ1pJsJn9snWNfBW/Z1YQg1mbIUSWrEV3ErAHF7l/OoVLQeaZDlPzkpA==",
       "os": [
         "darwin",
         "linux",
@@ -2531,6 +2698,11 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+    },
     "node_modules/uid-safe": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
@@ -2543,9 +2715,9 @@
       }
     },
     "node_modules/undici-types": {
-      "version": "5.26.5",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
+      "version": "6.13.0",
+      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
+      "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg=="
     },
     "node_modules/unique-filename": {
       "version": "1.1.1",
@@ -2660,10 +2832,29 @@
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
     },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
     "node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
       "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+    },
+    "node_modules/yaml": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
+      "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==",
+      "bin": {
+        "yaml": "bin.mjs"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
     }
   }
 }

+ 6 - 2
package.json

@@ -1,6 +1,6 @@
 {
   "name": "dweebui",
-  "version": "0.70.417",
+  "version": "0.70.453",
   "main": "server.js",
   "type": "module",
   "scripts": {
@@ -12,14 +12,18 @@
   "license": "MIT",
   "description": "DweebUI is a WebUI for managing your containers. https://dweebui.com",
   "dependencies": {
+    "adm-zip": "^0.5.15",
     "bcrypt": "^5.1.1",
     "connect-session-sequelize": "^7.1.7",
     "dockerode": "^4.0.2",
+    "dockerode-compose": "^1.4.0",
     "ejs": "^3.1.10",
     "express": "^4.19.2",
     "express-session": "^1.18.0",
+    "multer": "^1.4.5-lts.1",
     "sequelize": "^6.37.3",
     "sqlite3": "^5.1.7",
-    "systeminformation": "^5.22.11"
+    "systeminformation": "^5.23.5",
+    "yaml": "^2.5.0"
   }
 }

+ 0 - 276
public/css/demo.rtl.css

@@ -1,276 +0,0 @@
-/*!
-* 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%);
-}

File diff suppressed because it is too large
+ 0 - 8
public/css/demo.rtl.min.css


+ 29 - 0
public/css/dweebui.css

@@ -161,3 +161,32 @@ body {
 .accordion-user {
   border: 1px solid grey;
 }
+
+.slim-modal {
+  --tblr-modal-width: 450px;
+}
+
+.medium-modal {
+  --tblr-modal-width: 850px;
+}
+
+
+.wide-modal {
+  --tblr-modal-width: 1450px;
+}
+
+
+.avatar-3xl {
+  --tblr-avatar-size: 9rem;
+  --tblr-avatar-status-size: 1rem;
+  --tblr-avatar-font-size: 3rem;
+  --tblr-avatar-icon-size: 5rem;
+}
+
+
+.description {
+  max-height: 6em; /* Adjust based on font size and line height */
+  overflow: hidden;
+  text-overflow: ellipsis " [..]";
+  line-height: 1.5em; /* Adjust based on font size */
+}

+ 0 - 10
public/css/tabler-social.css

@@ -1,10 +0,0 @@
-/*!
-* 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 */

+ 0 - 8
public/css/tabler-social.min.css

@@ -1,8 +0,0 @@
-/*!
-* 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)
-*/

+ 0 - 10
public/css/tabler-social.rtl.css

@@ -1,10 +0,0 @@
-/*!
-* 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 */

+ 0 - 8
public/css/tabler-social.rtl.min.css

@@ -1,8 +0,0 @@
-/*!
-* 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)
-*/

+ 0 - 25777
public/css/tabler.rtl.css

@@ -1,25777 +0,0 @@
-/*!
-* 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,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'><path d='M5 7l3 -3l3 3'/><path d='M5 10l3 3l3 -3'/></svg>");
-          mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1'><path d='M5 7l3 -3l3 3'/><path d='M5 10l3 3l3 -3'/></svg>");
-  background: currentColor;
-  margin-right: 0.25rem;
-}
-.table-sort.asc:after {
-  -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1' d='M5 10l3 -3l3 3'/></svg>");
-          mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1' d='M5 10l3 -3l3 3'/></svg>");
-}
-.table-sort.desc:after {
-  -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1' d='M5 7l3 3l3 -3'/></svg>");
-          mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'><path fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='1' d='M5 7l3 3l3 -3'/></svg>");
-}
-
-.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;
-}

File diff suppressed because it is too large
+ 0 - 8
public/css/tabler.rtl.min.css


+ 0 - 35
public/js/demo-theme.js

@@ -1,35 +0,0 @@
-/*!
-* 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");
-	}
-
-}));

+ 0 - 9
public/js/demo-theme.min.js

@@ -1,9 +0,0 @@
-/*!
-* 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")}));

File diff suppressed because it is too large
+ 0 - 8
public/js/tabler.esm.js


File diff suppressed because it is too large
+ 0 - 8
public/js/tabler.esm.min.js


+ 0 - 6314
public/libs/bootstrap/dist/js/bootstrap.bundle.js

@@ -1,6314 +0,0 @@
-/*!
-  * Bootstrap v5.3.1 (https://getbootstrap.com/)
-  * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */
-(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.bootstrap = factory());
-})(this, (function () { 'use strict';
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/data.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  /**
-   * Constants
-   */
-
-  const elementMap = new Map();
-  const Data = {
-    set(element, key, instance) {
-      if (!elementMap.has(element)) {
-        elementMap.set(element, new Map());
-      }
-      const instanceMap = elementMap.get(element);
-
-      // make it clear we only want one instance per element
-      // can be removed later when multiple key/instances are fine to be used
-      if (!instanceMap.has(key) && instanceMap.size !== 0) {
-        // eslint-disable-next-line no-console
-        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
-        return;
-      }
-      instanceMap.set(key, instance);
-    },
-    get(element, key) {
-      if (elementMap.has(element)) {
-        return elementMap.get(element).get(key) || null;
-      }
-      return null;
-    },
-    remove(element, key) {
-      if (!elementMap.has(element)) {
-        return;
-      }
-      const instanceMap = elementMap.get(element);
-      instanceMap.delete(key);
-
-      // free up element references if there are no instances left for an element
-      if (instanceMap.size === 0) {
-        elementMap.delete(element);
-      }
-    }
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/index.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const MAX_UID = 1000000;
-  const MILLISECONDS_MULTIPLIER = 1000;
-  const TRANSITION_END = 'transitionend';
-
-  /**
-   * Properly escape IDs selectors to handle weird IDs
-   * @param {string} selector
-   * @returns {string}
-   */
-  const parseSelector = selector => {
-    if (selector && window.CSS && window.CSS.escape) {
-      // document.querySelector needs escaping to handle IDs (html5+) containing for instance /
-      selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
-    }
-    return selector;
-  };
-
-  // Shout-out Angus Croll (https://goo.gl/pxwQGp)
-  const toType = object => {
-    if (object === null || object === undefined) {
-      return `${object}`;
-    }
-    return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
-  };
-
-  /**
-   * Public Util API
-   */
-
-  const getUID = prefix => {
-    do {
-      prefix += Math.floor(Math.random() * MAX_UID);
-    } while (document.getElementById(prefix));
-    return prefix;
-  };
-  const getTransitionDurationFromElement = element => {
-    if (!element) {
-      return 0;
-    }
-
-    // Get transition-duration of the element
-    let {
-      transitionDuration,
-      transitionDelay
-    } = window.getComputedStyle(element);
-    const floatTransitionDuration = Number.parseFloat(transitionDuration);
-    const floatTransitionDelay = Number.parseFloat(transitionDelay);
-
-    // Return 0 if element or transition duration is not found
-    if (!floatTransitionDuration && !floatTransitionDelay) {
-      return 0;
-    }
-
-    // If multiple durations are defined, take the first
-    transitionDuration = transitionDuration.split(',')[0];
-    transitionDelay = transitionDelay.split(',')[0];
-    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
-  };
-  const triggerTransitionEnd = element => {
-    element.dispatchEvent(new Event(TRANSITION_END));
-  };
-  const isElement$1 = object => {
-    if (!object || typeof object !== 'object') {
-      return false;
-    }
-    if (typeof object.jquery !== 'undefined') {
-      object = object[0];
-    }
-    return typeof object.nodeType !== 'undefined';
-  };
-  const getElement = object => {
-    // it's a jQuery object or a node element
-    if (isElement$1(object)) {
-      return object.jquery ? object[0] : object;
-    }
-    if (typeof object === 'string' && object.length > 0) {
-      return document.querySelector(parseSelector(object));
-    }
-    return null;
-  };
-  const isVisible = element => {
-    if (!isElement$1(element) || element.getClientRects().length === 0) {
-      return false;
-    }
-    const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
-    // Handle `details` element as its content may falsie appear visible when it is closed
-    const closedDetails = element.closest('details:not([open])');
-    if (!closedDetails) {
-      return elementIsVisible;
-    }
-    if (closedDetails !== element) {
-      const summary = element.closest('summary');
-      if (summary && summary.parentNode !== closedDetails) {
-        return false;
-      }
-      if (summary === null) {
-        return false;
-      }
-    }
-    return elementIsVisible;
-  };
-  const isDisabled = element => {
-    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
-      return true;
-    }
-    if (element.classList.contains('disabled')) {
-      return true;
-    }
-    if (typeof element.disabled !== 'undefined') {
-      return element.disabled;
-    }
-    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
-  };
-  const findShadowRoot = element => {
-    if (!document.documentElement.attachShadow) {
-      return null;
-    }
-
-    // Can find the shadow root otherwise it'll return the document
-    if (typeof element.getRootNode === 'function') {
-      const root = element.getRootNode();
-      return root instanceof ShadowRoot ? root : null;
-    }
-    if (element instanceof ShadowRoot) {
-      return element;
-    }
-
-    // when we don't find a shadow root
-    if (!element.parentNode) {
-      return null;
-    }
-    return findShadowRoot(element.parentNode);
-  };
-  const noop = () => {};
-
-  /**
-   * Trick to restart an element's animation
-   *
-   * @param {HTMLElement} element
-   * @return void
-   *
-   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
-   */
-  const reflow = element => {
-    element.offsetHeight; // eslint-disable-line no-unused-expressions
-  };
-
-  const getjQuery = () => {
-    if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
-      return window.jQuery;
-    }
-    return null;
-  };
-  const DOMContentLoadedCallbacks = [];
-  const onDOMContentLoaded = callback => {
-    if (document.readyState === 'loading') {
-      // add listener on the first call when the document is in loading state
-      if (!DOMContentLoadedCallbacks.length) {
-        document.addEventListener('DOMContentLoaded', () => {
-          for (const callback of DOMContentLoadedCallbacks) {
-            callback();
-          }
-        });
-      }
-      DOMContentLoadedCallbacks.push(callback);
-    } else {
-      callback();
-    }
-  };
-  const isRTL = () => document.documentElement.dir === 'rtl';
-  const defineJQueryPlugin = plugin => {
-    onDOMContentLoaded(() => {
-      const $ = getjQuery();
-      /* istanbul ignore if */
-      if ($) {
-        const name = plugin.NAME;
-        const JQUERY_NO_CONFLICT = $.fn[name];
-        $.fn[name] = plugin.jQueryInterface;
-        $.fn[name].Constructor = plugin;
-        $.fn[name].noConflict = () => {
-          $.fn[name] = JQUERY_NO_CONFLICT;
-          return plugin.jQueryInterface;
-        };
-      }
-    });
-  };
-  const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
-    return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;
-  };
-  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
-    if (!waitForTransition) {
-      execute(callback);
-      return;
-    }
-    const durationPadding = 5;
-    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
-    let called = false;
-    const handler = ({
-      target
-    }) => {
-      if (target !== transitionElement) {
-        return;
-      }
-      called = true;
-      transitionElement.removeEventListener(TRANSITION_END, handler);
-      execute(callback);
-    };
-    transitionElement.addEventListener(TRANSITION_END, handler);
-    setTimeout(() => {
-      if (!called) {
-        triggerTransitionEnd(transitionElement);
-      }
-    }, emulatedDuration);
-  };
-
-  /**
-   * Return the previous/next element of a list.
-   *
-   * @param {array} list    The list of elements
-   * @param activeElement   The active element
-   * @param shouldGetNext   Choose to get next or previous element
-   * @param isCycleAllowed
-   * @return {Element|elem} The proper element
-   */
-  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
-    const listLength = list.length;
-    let index = list.indexOf(activeElement);
-
-    // if the element does not exist in the list return an element
-    // depending on the direction and if cycle is allowed
-    if (index === -1) {
-      return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
-    }
-    index += shouldGetNext ? 1 : -1;
-    if (isCycleAllowed) {
-      index = (index + listLength) % listLength;
-    }
-    return list[Math.max(0, Math.min(index, listLength - 1))];
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/event-handler.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
-  const stripNameRegex = /\..*/;
-  const stripUidRegex = /::\d+$/;
-  const eventRegistry = {}; // Events storage
-  let uidEvent = 1;
-  const customEvents = {
-    mouseenter: 'mouseover',
-    mouseleave: 'mouseout'
-  };
-  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
-
-  /**
-   * Private methods
-   */
-
-  function makeEventUid(element, uid) {
-    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
-  }
-  function getElementEvents(element) {
-    const uid = makeEventUid(element);
-    element.uidEvent = uid;
-    eventRegistry[uid] = eventRegistry[uid] || {};
-    return eventRegistry[uid];
-  }
-  function bootstrapHandler(element, fn) {
-    return function handler(event) {
-      hydrateObj(event, {
-        delegateTarget: element
-      });
-      if (handler.oneOff) {
-        EventHandler.off(element, event.type, fn);
-      }
-      return fn.apply(element, [event]);
-    };
-  }
-  function bootstrapDelegationHandler(element, selector, fn) {
-    return function handler(event) {
-      const domElements = element.querySelectorAll(selector);
-      for (let {
-        target
-      } = event; target && target !== this; target = target.parentNode) {
-        for (const domElement of domElements) {
-          if (domElement !== target) {
-            continue;
-          }
-          hydrateObj(event, {
-            delegateTarget: target
-          });
-          if (handler.oneOff) {
-            EventHandler.off(element, event.type, selector, fn);
-          }
-          return fn.apply(target, [event]);
-        }
-      }
-    };
-  }
-  function findHandler(events, callable, delegationSelector = null) {
-    return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
-  }
-  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
-    const isDelegated = typeof handler === 'string';
-    // TODO: tooltip passes `false` instead of selector, so we need to check
-    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
-    let typeEvent = getTypeEvent(originalTypeEvent);
-    if (!nativeEvents.has(typeEvent)) {
-      typeEvent = originalTypeEvent;
-    }
-    return [isDelegated, callable, typeEvent];
-  }
-  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
-    if (typeof originalTypeEvent !== 'string' || !element) {
-      return;
-    }
-    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
-
-    // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
-    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
-    if (originalTypeEvent in customEvents) {
-      const wrapFunction = fn => {
-        return function (event) {
-          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
-            return fn.call(this, event);
-          }
-        };
-      };
-      callable = wrapFunction(callable);
-    }
-    const events = getElementEvents(element);
-    const handlers = events[typeEvent] || (events[typeEvent] = {});
-    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
-    if (previousFunction) {
-      previousFunction.oneOff = previousFunction.oneOff && oneOff;
-      return;
-    }
-    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
-    const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
-    fn.delegationSelector = isDelegated ? handler : null;
-    fn.callable = callable;
-    fn.oneOff = oneOff;
-    fn.uidEvent = uid;
-    handlers[uid] = fn;
-    element.addEventListener(typeEvent, fn, isDelegated);
-  }
-  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
-    const fn = findHandler(events[typeEvent], handler, delegationSelector);
-    if (!fn) {
-      return;
-    }
-    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
-    delete events[typeEvent][fn.uidEvent];
-  }
-  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
-    const storeElementEvent = events[typeEvent] || {};
-    for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
-      if (handlerKey.includes(namespace)) {
-        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
-      }
-    }
-  }
-  function getTypeEvent(event) {
-    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
-    event = event.replace(stripNameRegex, '');
-    return customEvents[event] || event;
-  }
-  const EventHandler = {
-    on(element, event, handler, delegationFunction) {
-      addHandler(element, event, handler, delegationFunction, false);
-    },
-    one(element, event, handler, delegationFunction) {
-      addHandler(element, event, handler, delegationFunction, true);
-    },
-    off(element, originalTypeEvent, handler, delegationFunction) {
-      if (typeof originalTypeEvent !== 'string' || !element) {
-        return;
-      }
-      const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
-      const inNamespace = typeEvent !== originalTypeEvent;
-      const events = getElementEvents(element);
-      const storeElementEvent = events[typeEvent] || {};
-      const isNamespace = originalTypeEvent.startsWith('.');
-      if (typeof callable !== 'undefined') {
-        // Simplest case: handler is passed, remove that listener ONLY.
-        if (!Object.keys(storeElementEvent).length) {
-          return;
-        }
-        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
-        return;
-      }
-      if (isNamespace) {
-        for (const elementEvent of Object.keys(events)) {
-          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
-        }
-      }
-      for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
-        const handlerKey = keyHandlers.replace(stripUidRegex, '');
-        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
-          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
-        }
-      }
-    },
-    trigger(element, event, args) {
-      if (typeof event !== 'string' || !element) {
-        return null;
-      }
-      const $ = getjQuery();
-      const typeEvent = getTypeEvent(event);
-      const inNamespace = event !== typeEvent;
-      let jQueryEvent = null;
-      let bubbles = true;
-      let nativeDispatch = true;
-      let defaultPrevented = false;
-      if (inNamespace && $) {
-        jQueryEvent = $.Event(event, args);
-        $(element).trigger(jQueryEvent);
-        bubbles = !jQueryEvent.isPropagationStopped();
-        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
-        defaultPrevented = jQueryEvent.isDefaultPrevented();
-      }
-      const evt = hydrateObj(new Event(event, {
-        bubbles,
-        cancelable: true
-      }), args);
-      if (defaultPrevented) {
-        evt.preventDefault();
-      }
-      if (nativeDispatch) {
-        element.dispatchEvent(evt);
-      }
-      if (evt.defaultPrevented && jQueryEvent) {
-        jQueryEvent.preventDefault();
-      }
-      return evt;
-    }
-  };
-  function hydrateObj(obj, meta = {}) {
-    for (const [key, value] of Object.entries(meta)) {
-      try {
-        obj[key] = value;
-      } catch (_unused) {
-        Object.defineProperty(obj, key, {
-          configurable: true,
-          get() {
-            return value;
-          }
-        });
-      }
-    }
-    return obj;
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/manipulator.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  function normalizeData(value) {
-    if (value === 'true') {
-      return true;
-    }
-    if (value === 'false') {
-      return false;
-    }
-    if (value === Number(value).toString()) {
-      return Number(value);
-    }
-    if (value === '' || value === 'null') {
-      return null;
-    }
-    if (typeof value !== 'string') {
-      return value;
-    }
-    try {
-      return JSON.parse(decodeURIComponent(value));
-    } catch (_unused) {
-      return value;
-    }
-  }
-  function normalizeDataKey(key) {
-    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
-  }
-  const Manipulator = {
-    setDataAttribute(element, key, value) {
-      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
-    },
-    removeDataAttribute(element, key) {
-      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
-    },
-    getDataAttributes(element) {
-      if (!element) {
-        return {};
-      }
-      const attributes = {};
-      const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
-      for (const key of bsKeys) {
-        let pureKey = key.replace(/^bs/, '');
-        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
-        attributes[pureKey] = normalizeData(element.dataset[key]);
-      }
-      return attributes;
-    },
-    getDataAttribute(element, key) {
-      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
-    }
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/config.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Class definition
-   */
-
-  class Config {
-    // Getters
-    static get Default() {
-      return {};
-    }
-    static get DefaultType() {
-      return {};
-    }
-    static get NAME() {
-      throw new Error('You have to implement the static method "NAME", for each component!');
-    }
-    _getConfig(config) {
-      config = this._mergeConfigObj(config);
-      config = this._configAfterMerge(config);
-      this._typeCheckConfig(config);
-      return config;
-    }
-    _configAfterMerge(config) {
-      return config;
-    }
-    _mergeConfigObj(config, element) {
-      const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
-
-      return {
-        ...this.constructor.Default,
-        ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
-        ...(isElement$1(element) ? Manipulator.getDataAttributes(element) : {}),
-        ...(typeof config === 'object' ? config : {})
-      };
-    }
-    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
-      for (const [property, expectedTypes] of Object.entries(configTypes)) {
-        const value = config[property];
-        const valueType = isElement$1(value) ? 'element' : toType(value);
-        if (!new RegExp(expectedTypes).test(valueType)) {
-          throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
-        }
-      }
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap base-component.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const VERSION = '5.3.1';
-
-  /**
-   * Class definition
-   */
-
-  class BaseComponent extends Config {
-    constructor(element, config) {
-      super();
-      element = getElement(element);
-      if (!element) {
-        return;
-      }
-      this._element = element;
-      this._config = this._getConfig(config);
-      Data.set(this._element, this.constructor.DATA_KEY, this);
-    }
-
-    // Public
-    dispose() {
-      Data.remove(this._element, this.constructor.DATA_KEY);
-      EventHandler.off(this._element, this.constructor.EVENT_KEY);
-      for (const propertyName of Object.getOwnPropertyNames(this)) {
-        this[propertyName] = null;
-      }
-    }
-    _queueCallback(callback, element, isAnimated = true) {
-      executeAfterTransition(callback, element, isAnimated);
-    }
-    _getConfig(config) {
-      config = this._mergeConfigObj(config, this._element);
-      config = this._configAfterMerge(config);
-      this._typeCheckConfig(config);
-      return config;
-    }
-
-    // Static
-    static getInstance(element) {
-      return Data.get(getElement(element), this.DATA_KEY);
-    }
-    static getOrCreateInstance(element, config = {}) {
-      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
-    }
-    static get VERSION() {
-      return VERSION;
-    }
-    static get DATA_KEY() {
-      return `bs.${this.NAME}`;
-    }
-    static get EVENT_KEY() {
-      return `.${this.DATA_KEY}`;
-    }
-    static eventName(name) {
-      return `${name}${this.EVENT_KEY}`;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/selector-engine.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const getSelector = element => {
-    let selector = element.getAttribute('data-bs-target');
-    if (!selector || selector === '#') {
-      let hrefAttribute = element.getAttribute('href');
-
-      // The only valid content that could double as a selector are IDs or classes,
-      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
-      // `document.querySelector` will rightfully complain it is invalid.
-      // See https://github.com/twbs/bootstrap/issues/32273
-      if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
-        return null;
-      }
-
-      // Just in case some CMS puts out a full URL with the anchor appended
-      if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
-        hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
-      }
-      selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
-    }
-    return parseSelector(selector);
-  };
-  const SelectorEngine = {
-    find(selector, element = document.documentElement) {
-      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
-    },
-    findOne(selector, element = document.documentElement) {
-      return Element.prototype.querySelector.call(element, selector);
-    },
-    children(element, selector) {
-      return [].concat(...element.children).filter(child => child.matches(selector));
-    },
-    parents(element, selector) {
-      const parents = [];
-      let ancestor = element.parentNode.closest(selector);
-      while (ancestor) {
-        parents.push(ancestor);
-        ancestor = ancestor.parentNode.closest(selector);
-      }
-      return parents;
-    },
-    prev(element, selector) {
-      let previous = element.previousElementSibling;
-      while (previous) {
-        if (previous.matches(selector)) {
-          return [previous];
-        }
-        previous = previous.previousElementSibling;
-      }
-      return [];
-    },
-    // TODO: this is now unused; remove later along with prev()
-    next(element, selector) {
-      let next = element.nextElementSibling;
-      while (next) {
-        if (next.matches(selector)) {
-          return [next];
-        }
-        next = next.nextElementSibling;
-      }
-      return [];
-    },
-    focusableChildren(element) {
-      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
-      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
-    },
-    getSelectorFromElement(element) {
-      const selector = getSelector(element);
-      if (selector) {
-        return SelectorEngine.findOne(selector) ? selector : null;
-      }
-      return null;
-    },
-    getElementFromSelector(element) {
-      const selector = getSelector(element);
-      return selector ? SelectorEngine.findOne(selector) : null;
-    },
-    getMultipleElementsFromSelector(element) {
-      const selector = getSelector(element);
-      return selector ? SelectorEngine.find(selector) : [];
-    }
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/component-functions.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const enableDismissTrigger = (component, method = 'hide') => {
-    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
-    const name = component.NAME;
-    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
-      if (['A', 'AREA'].includes(this.tagName)) {
-        event.preventDefault();
-      }
-      if (isDisabled(this)) {
-        return;
-      }
-      const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
-      const instance = component.getOrCreateInstance(target);
-
-      // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
-      instance[method]();
-    });
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap alert.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$f = 'alert';
-  const DATA_KEY$a = 'bs.alert';
-  const EVENT_KEY$b = `.${DATA_KEY$a}`;
-  const EVENT_CLOSE = `close${EVENT_KEY$b}`;
-  const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
-  const CLASS_NAME_FADE$5 = 'fade';
-  const CLASS_NAME_SHOW$8 = 'show';
-
-  /**
-   * Class definition
-   */
-
-  class Alert extends BaseComponent {
-    // Getters
-    static get NAME() {
-      return NAME$f;
-    }
-
-    // Public
-    close() {
-      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
-      if (closeEvent.defaultPrevented) {
-        return;
-      }
-      this._element.classList.remove(CLASS_NAME_SHOW$8);
-      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
-      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
-    }
-
-    // Private
-    _destroyElement() {
-      this._element.remove();
-      EventHandler.trigger(this._element, EVENT_CLOSED);
-      this.dispose();
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Alert.getOrCreateInstance(this);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](this);
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  enableDismissTrigger(Alert, 'close');
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Alert);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap button.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$e = 'button';
-  const DATA_KEY$9 = 'bs.button';
-  const EVENT_KEY$a = `.${DATA_KEY$9}`;
-  const DATA_API_KEY$6 = '.data-api';
-  const CLASS_NAME_ACTIVE$3 = 'active';
-  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
-  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
-
-  /**
-   * Class definition
-   */
-
-  class Button extends BaseComponent {
-    // Getters
-    static get NAME() {
-      return NAME$e;
-    }
-
-    // Public
-    toggle() {
-      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
-      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Button.getOrCreateInstance(this);
-        if (config === 'toggle') {
-          data[config]();
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
-    event.preventDefault();
-    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
-    const data = Button.getOrCreateInstance(button);
-    data.toggle();
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Button);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/swipe.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$d = 'swipe';
-  const EVENT_KEY$9 = '.bs.swipe';
-  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
-  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
-  const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
-  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
-  const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
-  const POINTER_TYPE_TOUCH = 'touch';
-  const POINTER_TYPE_PEN = 'pen';
-  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
-  const SWIPE_THRESHOLD = 40;
-  const Default$c = {
-    endCallback: null,
-    leftCallback: null,
-    rightCallback: null
-  };
-  const DefaultType$c = {
-    endCallback: '(function|null)',
-    leftCallback: '(function|null)',
-    rightCallback: '(function|null)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Swipe extends Config {
-    constructor(element, config) {
-      super();
-      this._element = element;
-      if (!element || !Swipe.isSupported()) {
-        return;
-      }
-      this._config = this._getConfig(config);
-      this._deltaX = 0;
-      this._supportPointerEvents = Boolean(window.PointerEvent);
-      this._initEvents();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$c;
-    }
-    static get DefaultType() {
-      return DefaultType$c;
-    }
-    static get NAME() {
-      return NAME$d;
-    }
-
-    // Public
-    dispose() {
-      EventHandler.off(this._element, EVENT_KEY$9);
-    }
-
-    // Private
-    _start(event) {
-      if (!this._supportPointerEvents) {
-        this._deltaX = event.touches[0].clientX;
-        return;
-      }
-      if (this._eventIsPointerPenTouch(event)) {
-        this._deltaX = event.clientX;
-      }
-    }
-    _end(event) {
-      if (this._eventIsPointerPenTouch(event)) {
-        this._deltaX = event.clientX - this._deltaX;
-      }
-      this._handleSwipe();
-      execute(this._config.endCallback);
-    }
-    _move(event) {
-      this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
-    }
-    _handleSwipe() {
-      const absDeltaX = Math.abs(this._deltaX);
-      if (absDeltaX <= SWIPE_THRESHOLD) {
-        return;
-      }
-      const direction = absDeltaX / this._deltaX;
-      this._deltaX = 0;
-      if (!direction) {
-        return;
-      }
-      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
-    }
-    _initEvents() {
-      if (this._supportPointerEvents) {
-        EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
-        EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
-        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
-      } else {
-        EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
-        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
-        EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
-      }
-    }
-    _eventIsPointerPenTouch(event) {
-      return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
-    }
-
-    // Static
-    static isSupported() {
-      return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap carousel.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$c = 'carousel';
-  const DATA_KEY$8 = 'bs.carousel';
-  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
-  const DATA_API_KEY$5 = '.data-api';
-  const ARROW_LEFT_KEY$1 = 'ArrowLeft';
-  const ARROW_RIGHT_KEY$1 = 'ArrowRight';
-  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
-
-  const ORDER_NEXT = 'next';
-  const ORDER_PREV = 'prev';
-  const DIRECTION_LEFT = 'left';
-  const DIRECTION_RIGHT = 'right';
-  const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
-  const EVENT_SLID = `slid${EVENT_KEY$8}`;
-  const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
-  const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
-  const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
-  const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
-  const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
-  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
-  const CLASS_NAME_CAROUSEL = 'carousel';
-  const CLASS_NAME_ACTIVE$2 = 'active';
-  const CLASS_NAME_SLIDE = 'slide';
-  const CLASS_NAME_END = 'carousel-item-end';
-  const CLASS_NAME_START = 'carousel-item-start';
-  const CLASS_NAME_NEXT = 'carousel-item-next';
-  const CLASS_NAME_PREV = 'carousel-item-prev';
-  const SELECTOR_ACTIVE = '.active';
-  const SELECTOR_ITEM = '.carousel-item';
-  const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
-  const SELECTOR_ITEM_IMG = '.carousel-item img';
-  const SELECTOR_INDICATORS = '.carousel-indicators';
-  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
-  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
-  const KEY_TO_DIRECTION = {
-    [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
-    [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
-  };
-  const Default$b = {
-    interval: 5000,
-    keyboard: true,
-    pause: 'hover',
-    ride: false,
-    touch: true,
-    wrap: true
-  };
-  const DefaultType$b = {
-    interval: '(number|boolean)',
-    // TODO:v6 remove boolean support
-    keyboard: 'boolean',
-    pause: '(string|boolean)',
-    ride: '(boolean|string)',
-    touch: 'boolean',
-    wrap: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Carousel extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._interval = null;
-      this._activeElement = null;
-      this._isSliding = false;
-      this.touchTimeout = null;
-      this._swipeHelper = null;
-      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
-      this._addEventListeners();
-      if (this._config.ride === CLASS_NAME_CAROUSEL) {
-        this.cycle();
-      }
-    }
-
-    // Getters
-    static get Default() {
-      return Default$b;
-    }
-    static get DefaultType() {
-      return DefaultType$b;
-    }
-    static get NAME() {
-      return NAME$c;
-    }
-
-    // Public
-    next() {
-      this._slide(ORDER_NEXT);
-    }
-    nextWhenVisible() {
-      // FIXME TODO use `document.visibilityState`
-      // Don't call next when the page isn't visible
-      // or the carousel or its parent isn't visible
-      if (!document.hidden && isVisible(this._element)) {
-        this.next();
-      }
-    }
-    prev() {
-      this._slide(ORDER_PREV);
-    }
-    pause() {
-      if (this._isSliding) {
-        triggerTransitionEnd(this._element);
-      }
-      this._clearInterval();
-    }
-    cycle() {
-      this._clearInterval();
-      this._updateInterval();
-      this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
-    }
-    _maybeEnableCycle() {
-      if (!this._config.ride) {
-        return;
-      }
-      if (this._isSliding) {
-        EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
-        return;
-      }
-      this.cycle();
-    }
-    to(index) {
-      const items = this._getItems();
-      if (index > items.length - 1 || index < 0) {
-        return;
-      }
-      if (this._isSliding) {
-        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
-        return;
-      }
-      const activeIndex = this._getItemIndex(this._getActive());
-      if (activeIndex === index) {
-        return;
-      }
-      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
-      this._slide(order, items[index]);
-    }
-    dispose() {
-      if (this._swipeHelper) {
-        this._swipeHelper.dispose();
-      }
-      super.dispose();
-    }
-
-    // Private
-    _configAfterMerge(config) {
-      config.defaultInterval = config.interval;
-      return config;
-    }
-    _addEventListeners() {
-      if (this._config.keyboard) {
-        EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
-      }
-      if (this._config.pause === 'hover') {
-        EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
-        EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
-      }
-      if (this._config.touch && Swipe.isSupported()) {
-        this._addTouchEventListeners();
-      }
-    }
-    _addTouchEventListeners() {
-      for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
-        EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
-      }
-      const endCallBack = () => {
-        if (this._config.pause !== 'hover') {
-          return;
-        }
-
-        // If it's a touch-enabled device, mouseenter/leave are fired as
-        // part of the mouse compatibility events on first tap - the carousel
-        // would stop cycling until user tapped out of it;
-        // here, we listen for touchend, explicitly pause the carousel
-        // (as if it's the second time we tap on it, mouseenter compat event
-        // is NOT fired) and after a timeout (to allow for mouse compatibility
-        // events to fire) we explicitly restart cycling
-
-        this.pause();
-        if (this.touchTimeout) {
-          clearTimeout(this.touchTimeout);
-        }
-        this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
-      };
-      const swipeConfig = {
-        leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
-        rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
-        endCallback: endCallBack
-      };
-      this._swipeHelper = new Swipe(this._element, swipeConfig);
-    }
-    _keydown(event) {
-      if (/input|textarea/i.test(event.target.tagName)) {
-        return;
-      }
-      const direction = KEY_TO_DIRECTION[event.key];
-      if (direction) {
-        event.preventDefault();
-        this._slide(this._directionToOrder(direction));
-      }
-    }
-    _getItemIndex(element) {
-      return this._getItems().indexOf(element);
-    }
-    _setActiveIndicatorElement(index) {
-      if (!this._indicatorsElement) {
-        return;
-      }
-      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
-      activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
-      activeIndicator.removeAttribute('aria-current');
-      const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
-      if (newActiveIndicator) {
-        newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
-        newActiveIndicator.setAttribute('aria-current', 'true');
-      }
-    }
-    _updateInterval() {
-      const element = this._activeElement || this._getActive();
-      if (!element) {
-        return;
-      }
-      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
-      this._config.interval = elementInterval || this._config.defaultInterval;
-    }
-    _slide(order, element = null) {
-      if (this._isSliding) {
-        return;
-      }
-      const activeElement = this._getActive();
-      const isNext = order === ORDER_NEXT;
-      const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
-      if (nextElement === activeElement) {
-        return;
-      }
-      const nextElementIndex = this._getItemIndex(nextElement);
-      const triggerEvent = eventName => {
-        return EventHandler.trigger(this._element, eventName, {
-          relatedTarget: nextElement,
-          direction: this._orderToDirection(order),
-          from: this._getItemIndex(activeElement),
-          to: nextElementIndex
-        });
-      };
-      const slideEvent = triggerEvent(EVENT_SLIDE);
-      if (slideEvent.defaultPrevented) {
-        return;
-      }
-      if (!activeElement || !nextElement) {
-        // Some weirdness is happening, so we bail
-        // TODO: change tests that use empty divs to avoid this check
-        return;
-      }
-      const isCycling = Boolean(this._interval);
-      this.pause();
-      this._isSliding = true;
-      this._setActiveIndicatorElement(nextElementIndex);
-      this._activeElement = nextElement;
-      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
-      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
-      nextElement.classList.add(orderClassName);
-      reflow(nextElement);
-      activeElement.classList.add(directionalClassName);
-      nextElement.classList.add(directionalClassName);
-      const completeCallBack = () => {
-        nextElement.classList.remove(directionalClassName, orderClassName);
-        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
-        activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
-        this._isSliding = false;
-        triggerEvent(EVENT_SLID);
-      };
-      this._queueCallback(completeCallBack, activeElement, this._isAnimated());
-      if (isCycling) {
-        this.cycle();
-      }
-    }
-    _isAnimated() {
-      return this._element.classList.contains(CLASS_NAME_SLIDE);
-    }
-    _getActive() {
-      return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
-    }
-    _getItems() {
-      return SelectorEngine.find(SELECTOR_ITEM, this._element);
-    }
-    _clearInterval() {
-      if (this._interval) {
-        clearInterval(this._interval);
-        this._interval = null;
-      }
-    }
-    _directionToOrder(direction) {
-      if (isRTL()) {
-        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
-      }
-      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
-    }
-    _orderToDirection(order) {
-      if (isRTL()) {
-        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
-      }
-      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Carousel.getOrCreateInstance(this, config);
-        if (typeof config === 'number') {
-          data.to(config);
-          return;
-        }
-        if (typeof config === 'string') {
-          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-            throw new TypeError(`No method named "${config}"`);
-          }
-          data[config]();
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
-    const target = SelectorEngine.getElementFromSelector(this);
-    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
-      return;
-    }
-    event.preventDefault();
-    const carousel = Carousel.getOrCreateInstance(target);
-    const slideIndex = this.getAttribute('data-bs-slide-to');
-    if (slideIndex) {
-      carousel.to(slideIndex);
-      carousel._maybeEnableCycle();
-      return;
-    }
-    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
-      carousel.next();
-      carousel._maybeEnableCycle();
-      return;
-    }
-    carousel.prev();
-    carousel._maybeEnableCycle();
-  });
-  EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
-    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
-    for (const carousel of carousels) {
-      Carousel.getOrCreateInstance(carousel);
-    }
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Carousel);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap collapse.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$b = 'collapse';
-  const DATA_KEY$7 = 'bs.collapse';
-  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
-  const DATA_API_KEY$4 = '.data-api';
-  const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
-  const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
-  const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
-  const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
-  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
-  const CLASS_NAME_SHOW$7 = 'show';
-  const CLASS_NAME_COLLAPSE = 'collapse';
-  const CLASS_NAME_COLLAPSING = 'collapsing';
-  const CLASS_NAME_COLLAPSED = 'collapsed';
-  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
-  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
-  const WIDTH = 'width';
-  const HEIGHT = 'height';
-  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
-  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
-  const Default$a = {
-    parent: null,
-    toggle: true
-  };
-  const DefaultType$a = {
-    parent: '(null|element)',
-    toggle: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Collapse extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._isTransitioning = false;
-      this._triggerArray = [];
-      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
-      for (const elem of toggleList) {
-        const selector = SelectorEngine.getSelectorFromElement(elem);
-        const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
-        if (selector !== null && filterElement.length) {
-          this._triggerArray.push(elem);
-        }
-      }
-      this._initializeChildren();
-      if (!this._config.parent) {
-        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
-      }
-      if (this._config.toggle) {
-        this.toggle();
-      }
-    }
-
-    // Getters
-    static get Default() {
-      return Default$a;
-    }
-    static get DefaultType() {
-      return DefaultType$a;
-    }
-    static get NAME() {
-      return NAME$b;
-    }
-
-    // Public
-    toggle() {
-      if (this._isShown()) {
-        this.hide();
-      } else {
-        this.show();
-      }
-    }
-    show() {
-      if (this._isTransitioning || this._isShown()) {
-        return;
-      }
-      let activeChildren = [];
-
-      // find active children
-      if (this._config.parent) {
-        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
-          toggle: false
-        }));
-      }
-      if (activeChildren.length && activeChildren[0]._isTransitioning) {
-        return;
-      }
-      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
-      if (startEvent.defaultPrevented) {
-        return;
-      }
-      for (const activeInstance of activeChildren) {
-        activeInstance.hide();
-      }
-      const dimension = this._getDimension();
-      this._element.classList.remove(CLASS_NAME_COLLAPSE);
-      this._element.classList.add(CLASS_NAME_COLLAPSING);
-      this._element.style[dimension] = 0;
-      this._addAriaAndCollapsedClass(this._triggerArray, true);
-      this._isTransitioning = true;
-      const complete = () => {
-        this._isTransitioning = false;
-        this._element.classList.remove(CLASS_NAME_COLLAPSING);
-        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-        this._element.style[dimension] = '';
-        EventHandler.trigger(this._element, EVENT_SHOWN$6);
-      };
-      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
-      const scrollSize = `scroll${capitalizedDimension}`;
-      this._queueCallback(complete, this._element, true);
-      this._element.style[dimension] = `${this._element[scrollSize]}px`;
-    }
-    hide() {
-      if (this._isTransitioning || !this._isShown()) {
-        return;
-      }
-      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
-      if (startEvent.defaultPrevented) {
-        return;
-      }
-      const dimension = this._getDimension();
-      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
-      reflow(this._element);
-      this._element.classList.add(CLASS_NAME_COLLAPSING);
-      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-      for (const trigger of this._triggerArray) {
-        const element = SelectorEngine.getElementFromSelector(trigger);
-        if (element && !this._isShown(element)) {
-          this._addAriaAndCollapsedClass([trigger], false);
-        }
-      }
-      this._isTransitioning = true;
-      const complete = () => {
-        this._isTransitioning = false;
-        this._element.classList.remove(CLASS_NAME_COLLAPSING);
-        this._element.classList.add(CLASS_NAME_COLLAPSE);
-        EventHandler.trigger(this._element, EVENT_HIDDEN$6);
-      };
-      this._element.style[dimension] = '';
-      this._queueCallback(complete, this._element, true);
-    }
-    _isShown(element = this._element) {
-      return element.classList.contains(CLASS_NAME_SHOW$7);
-    }
-
-    // Private
-    _configAfterMerge(config) {
-      config.toggle = Boolean(config.toggle); // Coerce string values
-      config.parent = getElement(config.parent);
-      return config;
-    }
-    _getDimension() {
-      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
-    }
-    _initializeChildren() {
-      if (!this._config.parent) {
-        return;
-      }
-      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
-      for (const element of children) {
-        const selected = SelectorEngine.getElementFromSelector(element);
-        if (selected) {
-          this._addAriaAndCollapsedClass([element], this._isShown(selected));
-        }
-      }
-    }
-    _getFirstLevelChildren(selector) {
-      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
-      // remove children if greater depth
-      return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
-    }
-    _addAriaAndCollapsedClass(triggerArray, isOpen) {
-      if (!triggerArray.length) {
-        return;
-      }
-      for (const element of triggerArray) {
-        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
-        element.setAttribute('aria-expanded', isOpen);
-      }
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      const _config = {};
-      if (typeof config === 'string' && /show|hide/.test(config)) {
-        _config.toggle = false;
-      }
-      return this.each(function () {
-        const data = Collapse.getOrCreateInstance(this, _config);
-        if (typeof config === 'string') {
-          if (typeof data[config] === 'undefined') {
-            throw new TypeError(`No method named "${config}"`);
-          }
-          data[config]();
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
-    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
-    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
-      event.preventDefault();
-    }
-    for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
-      Collapse.getOrCreateInstance(element, {
-        toggle: false
-      }).toggle();
-    }
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Collapse);
-
-  var top = 'top';
-  var bottom = 'bottom';
-  var right = 'right';
-  var left = 'left';
-  var auto = 'auto';
-  var basePlacements = [top, bottom, right, left];
-  var start = 'start';
-  var end = 'end';
-  var clippingParents = 'clippingParents';
-  var viewport = 'viewport';
-  var popper = 'popper';
-  var reference = 'reference';
-  var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
-    return acc.concat([placement + "-" + start, placement + "-" + end]);
-  }, []);
-  var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
-    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
-  }, []); // modifiers that need to read the DOM
-
-  var beforeRead = 'beforeRead';
-  var read = 'read';
-  var afterRead = 'afterRead'; // pure-logic modifiers
-
-  var beforeMain = 'beforeMain';
-  var main = 'main';
-  var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
-
-  var beforeWrite = 'beforeWrite';
-  var write = 'write';
-  var afterWrite = 'afterWrite';
-  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
-
-  function getNodeName(element) {
-    return element ? (element.nodeName || '').toLowerCase() : null;
-  }
-
-  function getWindow(node) {
-    if (node == null) {
-      return window;
-    }
-
-    if (node.toString() !== '[object Window]') {
-      var ownerDocument = node.ownerDocument;
-      return ownerDocument ? ownerDocument.defaultView || window : window;
-    }
-
-    return node;
-  }
-
-  function isElement(node) {
-    var OwnElement = getWindow(node).Element;
-    return node instanceof OwnElement || node instanceof Element;
-  }
-
-  function isHTMLElement(node) {
-    var OwnElement = getWindow(node).HTMLElement;
-    return node instanceof OwnElement || node instanceof HTMLElement;
-  }
-
-  function isShadowRoot(node) {
-    // IE 11 has no ShadowRoot
-    if (typeof ShadowRoot === 'undefined') {
-      return false;
-    }
-
-    var OwnElement = getWindow(node).ShadowRoot;
-    return node instanceof OwnElement || node instanceof ShadowRoot;
-  }
-
-  // and applies them to the HTMLElements such as popper and arrow
-
-  function applyStyles(_ref) {
-    var state = _ref.state;
-    Object.keys(state.elements).forEach(function (name) {
-      var style = state.styles[name] || {};
-      var attributes = state.attributes[name] || {};
-      var element = state.elements[name]; // arrow is optional + virtual elements
-
-      if (!isHTMLElement(element) || !getNodeName(element)) {
-        return;
-      } // Flow doesn't support to extend this property, but it's the most
-      // effective way to apply styles to an HTMLElement
-      // $FlowFixMe[cannot-write]
-
-
-      Object.assign(element.style, style);
-      Object.keys(attributes).forEach(function (name) {
-        var value = attributes[name];
-
-        if (value === false) {
-          element.removeAttribute(name);
-        } else {
-          element.setAttribute(name, value === true ? '' : value);
-        }
-      });
-    });
-  }
-
-  function effect$2(_ref2) {
-    var state = _ref2.state;
-    var initialStyles = {
-      popper: {
-        position: state.options.strategy,
-        left: '0',
-        top: '0',
-        margin: '0'
-      },
-      arrow: {
-        position: 'absolute'
-      },
-      reference: {}
-    };
-    Object.assign(state.elements.popper.style, initialStyles.popper);
-    state.styles = initialStyles;
-
-    if (state.elements.arrow) {
-      Object.assign(state.elements.arrow.style, initialStyles.arrow);
-    }
-
-    return function () {
-      Object.keys(state.elements).forEach(function (name) {
-        var element = state.elements[name];
-        var attributes = state.attributes[name] || {};
-        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
-
-        var style = styleProperties.reduce(function (style, property) {
-          style[property] = '';
-          return style;
-        }, {}); // arrow is optional + virtual elements
-
-        if (!isHTMLElement(element) || !getNodeName(element)) {
-          return;
-        }
-
-        Object.assign(element.style, style);
-        Object.keys(attributes).forEach(function (attribute) {
-          element.removeAttribute(attribute);
-        });
-      });
-    };
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const applyStyles$1 = {
-    name: 'applyStyles',
-    enabled: true,
-    phase: 'write',
-    fn: applyStyles,
-    effect: effect$2,
-    requires: ['computeStyles']
-  };
-
-  function getBasePlacement(placement) {
-    return placement.split('-')[0];
-  }
-
-  var max = Math.max;
-  var min = Math.min;
-  var round = Math.round;
-
-  function getUAString() {
-    var uaData = navigator.userAgentData;
-
-    if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
-      return uaData.brands.map(function (item) {
-        return item.brand + "/" + item.version;
-      }).join(' ');
-    }
-
-    return navigator.userAgent;
-  }
-
-  function isLayoutViewport() {
-    return !/^((?!chrome|android).)*safari/i.test(getUAString());
-  }
-
-  function getBoundingClientRect(element, includeScale, isFixedStrategy) {
-    if (includeScale === void 0) {
-      includeScale = false;
-    }
-
-    if (isFixedStrategy === void 0) {
-      isFixedStrategy = false;
-    }
-
-    var clientRect = element.getBoundingClientRect();
-    var scaleX = 1;
-    var scaleY = 1;
-
-    if (includeScale && isHTMLElement(element)) {
-      scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
-      scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
-    }
-
-    var _ref = isElement(element) ? getWindow(element) : window,
-        visualViewport = _ref.visualViewport;
-
-    var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
-    var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
-    var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
-    var width = clientRect.width / scaleX;
-    var height = clientRect.height / scaleY;
-    return {
-      width: width,
-      height: height,
-      top: y,
-      right: x + width,
-      bottom: y + height,
-      left: x,
-      x: x,
-      y: y
-    };
-  }
-
-  // means it doesn't take into account transforms.
-
-  function getLayoutRect(element) {
-    var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
-    // Fixes https://github.com/popperjs/popper-core/issues/1223
-
-    var width = element.offsetWidth;
-    var height = element.offsetHeight;
-
-    if (Math.abs(clientRect.width - width) <= 1) {
-      width = clientRect.width;
-    }
-
-    if (Math.abs(clientRect.height - height) <= 1) {
-      height = clientRect.height;
-    }
-
-    return {
-      x: element.offsetLeft,
-      y: element.offsetTop,
-      width: width,
-      height: height
-    };
-  }
-
-  function contains(parent, child) {
-    var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
-
-    if (parent.contains(child)) {
-      return true;
-    } // then fallback to custom implementation with Shadow DOM support
-    else if (rootNode && isShadowRoot(rootNode)) {
-        var next = child;
-
-        do {
-          if (next && parent.isSameNode(next)) {
-            return true;
-          } // $FlowFixMe[prop-missing]: need a better way to handle this...
-
-
-          next = next.parentNode || next.host;
-        } while (next);
-      } // Give up, the result is false
-
-
-    return false;
-  }
-
-  function getComputedStyle$1(element) {
-    return getWindow(element).getComputedStyle(element);
-  }
-
-  function isTableElement(element) {
-    return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
-  }
-
-  function getDocumentElement(element) {
-    // $FlowFixMe[incompatible-return]: assume body is always available
-    return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
-    element.document) || window.document).documentElement;
-  }
-
-  function getParentNode(element) {
-    if (getNodeName(element) === 'html') {
-      return element;
-    }
-
-    return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
-      // $FlowFixMe[incompatible-return]
-      // $FlowFixMe[prop-missing]
-      element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
-      element.parentNode || ( // DOM Element detected
-      isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
-      // $FlowFixMe[incompatible-call]: HTMLElement is a Node
-      getDocumentElement(element) // fallback
-
-    );
-  }
-
-  function getTrueOffsetParent(element) {
-    if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
-    getComputedStyle$1(element).position === 'fixed') {
-      return null;
-    }
-
-    return element.offsetParent;
-  } // `.offsetParent` reports `null` for fixed elements, while absolute elements
-  // return the containing block
-
-
-  function getContainingBlock(element) {
-    var isFirefox = /firefox/i.test(getUAString());
-    var isIE = /Trident/i.test(getUAString());
-
-    if (isIE && isHTMLElement(element)) {
-      // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
-      var elementCss = getComputedStyle$1(element);
-
-      if (elementCss.position === 'fixed') {
-        return null;
-      }
-    }
-
-    var currentNode = getParentNode(element);
-
-    if (isShadowRoot(currentNode)) {
-      currentNode = currentNode.host;
-    }
-
-    while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
-      var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
-      // create a containing block.
-      // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
-
-      if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
-        return currentNode;
-      } else {
-        currentNode = currentNode.parentNode;
-      }
-    }
-
-    return null;
-  } // Gets the closest ancestor positioned element. Handles some edge cases,
-  // such as table ancestors and cross browser bugs.
-
-
-  function getOffsetParent(element) {
-    var window = getWindow(element);
-    var offsetParent = getTrueOffsetParent(element);
-
-    while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
-      offsetParent = getTrueOffsetParent(offsetParent);
-    }
-
-    if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {
-      return window;
-    }
-
-    return offsetParent || getContainingBlock(element) || window;
-  }
-
-  function getMainAxisFromPlacement(placement) {
-    return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
-  }
-
-  function within(min$1, value, max$1) {
-    return max(min$1, min(value, max$1));
-  }
-  function withinMaxClamp(min, value, max) {
-    var v = within(min, value, max);
-    return v > max ? max : v;
-  }
-
-  function getFreshSideObject() {
-    return {
-      top: 0,
-      right: 0,
-      bottom: 0,
-      left: 0
-    };
-  }
-
-  function mergePaddingObject(paddingObject) {
-    return Object.assign({}, getFreshSideObject(), paddingObject);
-  }
-
-  function expandToHashMap(value, keys) {
-    return keys.reduce(function (hashMap, key) {
-      hashMap[key] = value;
-      return hashMap;
-    }, {});
-  }
-
-  var toPaddingObject = function toPaddingObject(padding, state) {
-    padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
-      placement: state.placement
-    })) : padding;
-    return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
-  };
-
-  function arrow(_ref) {
-    var _state$modifiersData$;
-
-    var state = _ref.state,
-        name = _ref.name,
-        options = _ref.options;
-    var arrowElement = state.elements.arrow;
-    var popperOffsets = state.modifiersData.popperOffsets;
-    var basePlacement = getBasePlacement(state.placement);
-    var axis = getMainAxisFromPlacement(basePlacement);
-    var isVertical = [left, right].indexOf(basePlacement) >= 0;
-    var len = isVertical ? 'height' : 'width';
-
-    if (!arrowElement || !popperOffsets) {
-      return;
-    }
-
-    var paddingObject = toPaddingObject(options.padding, state);
-    var arrowRect = getLayoutRect(arrowElement);
-    var minProp = axis === 'y' ? top : left;
-    var maxProp = axis === 'y' ? bottom : right;
-    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
-    var startDiff = popperOffsets[axis] - state.rects.reference[axis];
-    var arrowOffsetParent = getOffsetParent(arrowElement);
-    var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
-    var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
-    // outside of the popper bounds
-
-    var min = paddingObject[minProp];
-    var max = clientSize - arrowRect[len] - paddingObject[maxProp];
-    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
-    var offset = within(min, center, max); // Prevents breaking syntax highlighting...
-
-    var axisProp = axis;
-    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
-  }
-
-  function effect$1(_ref2) {
-    var state = _ref2.state,
-        options = _ref2.options;
-    var _options$element = options.element,
-        arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
-
-    if (arrowElement == null) {
-      return;
-    } // CSS selector
-
-
-    if (typeof arrowElement === 'string') {
-      arrowElement = state.elements.popper.querySelector(arrowElement);
-
-      if (!arrowElement) {
-        return;
-      }
-    }
-
-    if (!contains(state.elements.popper, arrowElement)) {
-      return;
-    }
-
-    state.elements.arrow = arrowElement;
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const arrow$1 = {
-    name: 'arrow',
-    enabled: true,
-    phase: 'main',
-    fn: arrow,
-    effect: effect$1,
-    requires: ['popperOffsets'],
-    requiresIfExists: ['preventOverflow']
-  };
-
-  function getVariation(placement) {
-    return placement.split('-')[1];
-  }
-
-  var unsetSides = {
-    top: 'auto',
-    right: 'auto',
-    bottom: 'auto',
-    left: 'auto'
-  }; // Round the offsets to the nearest suitable subpixel based on the DPR.
-  // Zooming can change the DPR, but it seems to report a value that will
-  // cleanly divide the values into the appropriate subpixels.
-
-  function roundOffsetsByDPR(_ref, win) {
-    var x = _ref.x,
-        y = _ref.y;
-    var dpr = win.devicePixelRatio || 1;
-    return {
-      x: round(x * dpr) / dpr || 0,
-      y: round(y * dpr) / dpr || 0
-    };
-  }
-
-  function mapToStyles(_ref2) {
-    var _Object$assign2;
-
-    var popper = _ref2.popper,
-        popperRect = _ref2.popperRect,
-        placement = _ref2.placement,
-        variation = _ref2.variation,
-        offsets = _ref2.offsets,
-        position = _ref2.position,
-        gpuAcceleration = _ref2.gpuAcceleration,
-        adaptive = _ref2.adaptive,
-        roundOffsets = _ref2.roundOffsets,
-        isFixed = _ref2.isFixed;
-    var _offsets$x = offsets.x,
-        x = _offsets$x === void 0 ? 0 : _offsets$x,
-        _offsets$y = offsets.y,
-        y = _offsets$y === void 0 ? 0 : _offsets$y;
-
-    var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
-      x: x,
-      y: y
-    }) : {
-      x: x,
-      y: y
-    };
-
-    x = _ref3.x;
-    y = _ref3.y;
-    var hasX = offsets.hasOwnProperty('x');
-    var hasY = offsets.hasOwnProperty('y');
-    var sideX = left;
-    var sideY = top;
-    var win = window;
-
-    if (adaptive) {
-      var offsetParent = getOffsetParent(popper);
-      var heightProp = 'clientHeight';
-      var widthProp = 'clientWidth';
-
-      if (offsetParent === getWindow(popper)) {
-        offsetParent = getDocumentElement(popper);
-
-        if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {
-          heightProp = 'scrollHeight';
-          widthProp = 'scrollWidth';
-        }
-      } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
-
-
-      offsetParent = offsetParent;
-
-      if (placement === top || (placement === left || placement === right) && variation === end) {
-        sideY = bottom;
-        var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
-        offsetParent[heightProp];
-        y -= offsetY - popperRect.height;
-        y *= gpuAcceleration ? 1 : -1;
-      }
-
-      if (placement === left || (placement === top || placement === bottom) && variation === end) {
-        sideX = right;
-        var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
-        offsetParent[widthProp];
-        x -= offsetX - popperRect.width;
-        x *= gpuAcceleration ? 1 : -1;
-      }
-    }
-
-    var commonStyles = Object.assign({
-      position: position
-    }, adaptive && unsetSides);
-
-    var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
-      x: x,
-      y: y
-    }, getWindow(popper)) : {
-      x: x,
-      y: y
-    };
-
-    x = _ref4.x;
-    y = _ref4.y;
-
-    if (gpuAcceleration) {
-      var _Object$assign;
-
-      return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
-    }
-
-    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
-  }
-
-  function computeStyles(_ref5) {
-    var state = _ref5.state,
-        options = _ref5.options;
-    var _options$gpuAccelerat = options.gpuAcceleration,
-        gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
-        _options$adaptive = options.adaptive,
-        adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
-        _options$roundOffsets = options.roundOffsets,
-        roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
-    var commonStyles = {
-      placement: getBasePlacement(state.placement),
-      variation: getVariation(state.placement),
-      popper: state.elements.popper,
-      popperRect: state.rects.popper,
-      gpuAcceleration: gpuAcceleration,
-      isFixed: state.options.strategy === 'fixed'
-    };
-
-    if (state.modifiersData.popperOffsets != null) {
-      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
-        offsets: state.modifiersData.popperOffsets,
-        position: state.options.strategy,
-        adaptive: adaptive,
-        roundOffsets: roundOffsets
-      })));
-    }
-
-    if (state.modifiersData.arrow != null) {
-      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
-        offsets: state.modifiersData.arrow,
-        position: 'absolute',
-        adaptive: false,
-        roundOffsets: roundOffsets
-      })));
-    }
-
-    state.attributes.popper = Object.assign({}, state.attributes.popper, {
-      'data-popper-placement': state.placement
-    });
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const computeStyles$1 = {
-    name: 'computeStyles',
-    enabled: true,
-    phase: 'beforeWrite',
-    fn: computeStyles,
-    data: {}
-  };
-
-  var passive = {
-    passive: true
-  };
-
-  function effect(_ref) {
-    var state = _ref.state,
-        instance = _ref.instance,
-        options = _ref.options;
-    var _options$scroll = options.scroll,
-        scroll = _options$scroll === void 0 ? true : _options$scroll,
-        _options$resize = options.resize,
-        resize = _options$resize === void 0 ? true : _options$resize;
-    var window = getWindow(state.elements.popper);
-    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
-
-    if (scroll) {
-      scrollParents.forEach(function (scrollParent) {
-        scrollParent.addEventListener('scroll', instance.update, passive);
-      });
-    }
-
-    if (resize) {
-      window.addEventListener('resize', instance.update, passive);
-    }
-
-    return function () {
-      if (scroll) {
-        scrollParents.forEach(function (scrollParent) {
-          scrollParent.removeEventListener('scroll', instance.update, passive);
-        });
-      }
-
-      if (resize) {
-        window.removeEventListener('resize', instance.update, passive);
-      }
-    };
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const eventListeners = {
-    name: 'eventListeners',
-    enabled: true,
-    phase: 'write',
-    fn: function fn() {},
-    effect: effect,
-    data: {}
-  };
-
-  var hash$1 = {
-    left: 'right',
-    right: 'left',
-    bottom: 'top',
-    top: 'bottom'
-  };
-  function getOppositePlacement(placement) {
-    return placement.replace(/left|right|bottom|top/g, function (matched) {
-      return hash$1[matched];
-    });
-  }
-
-  var hash = {
-    start: 'end',
-    end: 'start'
-  };
-  function getOppositeVariationPlacement(placement) {
-    return placement.replace(/start|end/g, function (matched) {
-      return hash[matched];
-    });
-  }
-
-  function getWindowScroll(node) {
-    var win = getWindow(node);
-    var scrollLeft = win.pageXOffset;
-    var scrollTop = win.pageYOffset;
-    return {
-      scrollLeft: scrollLeft,
-      scrollTop: scrollTop
-    };
-  }
-
-  function getWindowScrollBarX(element) {
-    // If <html> has a CSS width greater than the viewport, then this will be
-    // incorrect for RTL.
-    // Popper 1 is broken in this case and never had a bug report so let's assume
-    // it's not an issue. I don't think anyone ever specifies width on <html>
-    // anyway.
-    // Browsers where the left scrollbar doesn't cause an issue report `0` for
-    // this (e.g. Edge 2019, IE11, Safari)
-    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
-  }
-
-  function getViewportRect(element, strategy) {
-    var win = getWindow(element);
-    var html = getDocumentElement(element);
-    var visualViewport = win.visualViewport;
-    var width = html.clientWidth;
-    var height = html.clientHeight;
-    var x = 0;
-    var y = 0;
-
-    if (visualViewport) {
-      width = visualViewport.width;
-      height = visualViewport.height;
-      var layoutViewport = isLayoutViewport();
-
-      if (layoutViewport || !layoutViewport && strategy === 'fixed') {
-        x = visualViewport.offsetLeft;
-        y = visualViewport.offsetTop;
-      }
-    }
-
-    return {
-      width: width,
-      height: height,
-      x: x + getWindowScrollBarX(element),
-      y: y
-    };
-  }
-
-  // of the `<html>` and `<body>` rect bounds if horizontally scrollable
-
-  function getDocumentRect(element) {
-    var _element$ownerDocumen;
-
-    var html = getDocumentElement(element);
-    var winScroll = getWindowScroll(element);
-    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
-    var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
-    var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
-    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
-    var y = -winScroll.scrollTop;
-
-    if (getComputedStyle$1(body || html).direction === 'rtl') {
-      x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
-    }
-
-    return {
-      width: width,
-      height: height,
-      x: x,
-      y: y
-    };
-  }
-
-  function isScrollParent(element) {
-    // Firefox wants us to check `-x` and `-y` variations as well
-    var _getComputedStyle = getComputedStyle$1(element),
-        overflow = _getComputedStyle.overflow,
-        overflowX = _getComputedStyle.overflowX,
-        overflowY = _getComputedStyle.overflowY;
-
-    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
-  }
-
-  function getScrollParent(node) {
-    if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
-      // $FlowFixMe[incompatible-return]: assume body is always available
-      return node.ownerDocument.body;
-    }
-
-    if (isHTMLElement(node) && isScrollParent(node)) {
-      return node;
-    }
-
-    return getScrollParent(getParentNode(node));
-  }
-
-  /*
-  given a DOM element, return the list of all scroll parents, up the list of ancesors
-  until we get to the top window object. This list is what we attach scroll listeners
-  to, because if any of these parent elements scroll, we'll need to re-calculate the
-  reference element's position.
-  */
-
-  function listScrollParents(element, list) {
-    var _element$ownerDocumen;
-
-    if (list === void 0) {
-      list = [];
-    }
-
-    var scrollParent = getScrollParent(element);
-    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
-    var win = getWindow(scrollParent);
-    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
-    var updatedList = list.concat(target);
-    return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
-    updatedList.concat(listScrollParents(getParentNode(target)));
-  }
-
-  function rectToClientRect(rect) {
-    return Object.assign({}, rect, {
-      left: rect.x,
-      top: rect.y,
-      right: rect.x + rect.width,
-      bottom: rect.y + rect.height
-    });
-  }
-
-  function getInnerBoundingClientRect(element, strategy) {
-    var rect = getBoundingClientRect(element, false, strategy === 'fixed');
-    rect.top = rect.top + element.clientTop;
-    rect.left = rect.left + element.clientLeft;
-    rect.bottom = rect.top + element.clientHeight;
-    rect.right = rect.left + element.clientWidth;
-    rect.width = element.clientWidth;
-    rect.height = element.clientHeight;
-    rect.x = rect.left;
-    rect.y = rect.top;
-    return rect;
-  }
-
-  function getClientRectFromMixedType(element, clippingParent, strategy) {
-    return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
-  } // A "clipping parent" is an overflowable container with the characteristic of
-  // clipping (or hiding) overflowing elements with a position different from
-  // `initial`
-
-
-  function getClippingParents(element) {
-    var clippingParents = listScrollParents(getParentNode(element));
-    var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
-    var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
-
-    if (!isElement(clipperElement)) {
-      return [];
-    } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
-
-
-    return clippingParents.filter(function (clippingParent) {
-      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
-    });
-  } // Gets the maximum area that the element is visible in due to any number of
-  // clipping parents
-
-
-  function getClippingRect(element, boundary, rootBoundary, strategy) {
-    var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
-    var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
-    var firstClippingParent = clippingParents[0];
-    var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
-      var rect = getClientRectFromMixedType(element, clippingParent, strategy);
-      accRect.top = max(rect.top, accRect.top);
-      accRect.right = min(rect.right, accRect.right);
-      accRect.bottom = min(rect.bottom, accRect.bottom);
-      accRect.left = max(rect.left, accRect.left);
-      return accRect;
-    }, getClientRectFromMixedType(element, firstClippingParent, strategy));
-    clippingRect.width = clippingRect.right - clippingRect.left;
-    clippingRect.height = clippingRect.bottom - clippingRect.top;
-    clippingRect.x = clippingRect.left;
-    clippingRect.y = clippingRect.top;
-    return clippingRect;
-  }
-
-  function computeOffsets(_ref) {
-    var reference = _ref.reference,
-        element = _ref.element,
-        placement = _ref.placement;
-    var basePlacement = placement ? getBasePlacement(placement) : null;
-    var variation = placement ? getVariation(placement) : null;
-    var commonX = reference.x + reference.width / 2 - element.width / 2;
-    var commonY = reference.y + reference.height / 2 - element.height / 2;
-    var offsets;
-
-    switch (basePlacement) {
-      case top:
-        offsets = {
-          x: commonX,
-          y: reference.y - element.height
-        };
-        break;
-
-      case bottom:
-        offsets = {
-          x: commonX,
-          y: reference.y + reference.height
-        };
-        break;
-
-      case right:
-        offsets = {
-          x: reference.x + reference.width,
-          y: commonY
-        };
-        break;
-
-      case left:
-        offsets = {
-          x: reference.x - element.width,
-          y: commonY
-        };
-        break;
-
-      default:
-        offsets = {
-          x: reference.x,
-          y: reference.y
-        };
-    }
-
-    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
-
-    if (mainAxis != null) {
-      var len = mainAxis === 'y' ? 'height' : 'width';
-
-      switch (variation) {
-        case start:
-          offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
-          break;
-
-        case end:
-          offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
-          break;
-      }
-    }
-
-    return offsets;
-  }
-
-  function detectOverflow(state, options) {
-    if (options === void 0) {
-      options = {};
-    }
-
-    var _options = options,
-        _options$placement = _options.placement,
-        placement = _options$placement === void 0 ? state.placement : _options$placement,
-        _options$strategy = _options.strategy,
-        strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
-        _options$boundary = _options.boundary,
-        boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
-        _options$rootBoundary = _options.rootBoundary,
-        rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
-        _options$elementConte = _options.elementContext,
-        elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
-        _options$altBoundary = _options.altBoundary,
-        altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
-        _options$padding = _options.padding,
-        padding = _options$padding === void 0 ? 0 : _options$padding;
-    var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
-    var altContext = elementContext === popper ? reference : popper;
-    var popperRect = state.rects.popper;
-    var element = state.elements[altBoundary ? altContext : elementContext];
-    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
-    var referenceClientRect = getBoundingClientRect(state.elements.reference);
-    var popperOffsets = computeOffsets({
-      reference: referenceClientRect,
-      element: popperRect,
-      strategy: 'absolute',
-      placement: placement
-    });
-    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
-    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
-    // 0 or negative = within the clipping rect
-
-    var overflowOffsets = {
-      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
-      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
-      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
-      right: elementClientRect.right - clippingClientRect.right + paddingObject.right
-    };
-    var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
-
-    if (elementContext === popper && offsetData) {
-      var offset = offsetData[placement];
-      Object.keys(overflowOffsets).forEach(function (key) {
-        var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
-        var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
-        overflowOffsets[key] += offset[axis] * multiply;
-      });
-    }
-
-    return overflowOffsets;
-  }
-
-  function computeAutoPlacement(state, options) {
-    if (options === void 0) {
-      options = {};
-    }
-
-    var _options = options,
-        placement = _options.placement,
-        boundary = _options.boundary,
-        rootBoundary = _options.rootBoundary,
-        padding = _options.padding,
-        flipVariations = _options.flipVariations,
-        _options$allowedAutoP = _options.allowedAutoPlacements,
-        allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
-    var variation = getVariation(placement);
-    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
-      return getVariation(placement) === variation;
-    }) : basePlacements;
-    var allowedPlacements = placements$1.filter(function (placement) {
-      return allowedAutoPlacements.indexOf(placement) >= 0;
-    });
-
-    if (allowedPlacements.length === 0) {
-      allowedPlacements = placements$1;
-    } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
-
-
-    var overflows = allowedPlacements.reduce(function (acc, placement) {
-      acc[placement] = detectOverflow(state, {
-        placement: placement,
-        boundary: boundary,
-        rootBoundary: rootBoundary,
-        padding: padding
-      })[getBasePlacement(placement)];
-      return acc;
-    }, {});
-    return Object.keys(overflows).sort(function (a, b) {
-      return overflows[a] - overflows[b];
-    });
-  }
-
-  function getExpandedFallbackPlacements(placement) {
-    if (getBasePlacement(placement) === auto) {
-      return [];
-    }
-
-    var oppositePlacement = getOppositePlacement(placement);
-    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
-  }
-
-  function flip(_ref) {
-    var state = _ref.state,
-        options = _ref.options,
-        name = _ref.name;
-
-    if (state.modifiersData[name]._skip) {
-      return;
-    }
-
-    var _options$mainAxis = options.mainAxis,
-        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
-        _options$altAxis = options.altAxis,
-        checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
-        specifiedFallbackPlacements = options.fallbackPlacements,
-        padding = options.padding,
-        boundary = options.boundary,
-        rootBoundary = options.rootBoundary,
-        altBoundary = options.altBoundary,
-        _options$flipVariatio = options.flipVariations,
-        flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
-        allowedAutoPlacements = options.allowedAutoPlacements;
-    var preferredPlacement = state.options.placement;
-    var basePlacement = getBasePlacement(preferredPlacement);
-    var isBasePlacement = basePlacement === preferredPlacement;
-    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
-    var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
-      return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
-        placement: placement,
-        boundary: boundary,
-        rootBoundary: rootBoundary,
-        padding: padding,
-        flipVariations: flipVariations,
-        allowedAutoPlacements: allowedAutoPlacements
-      }) : placement);
-    }, []);
-    var referenceRect = state.rects.reference;
-    var popperRect = state.rects.popper;
-    var checksMap = new Map();
-    var makeFallbackChecks = true;
-    var firstFittingPlacement = placements[0];
-
-    for (var i = 0; i < placements.length; i++) {
-      var placement = placements[i];
-
-      var _basePlacement = getBasePlacement(placement);
-
-      var isStartVariation = getVariation(placement) === start;
-      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
-      var len = isVertical ? 'width' : 'height';
-      var overflow = detectOverflow(state, {
-        placement: placement,
-        boundary: boundary,
-        rootBoundary: rootBoundary,
-        altBoundary: altBoundary,
-        padding: padding
-      });
-      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
-
-      if (referenceRect[len] > popperRect[len]) {
-        mainVariationSide = getOppositePlacement(mainVariationSide);
-      }
-
-      var altVariationSide = getOppositePlacement(mainVariationSide);
-      var checks = [];
-
-      if (checkMainAxis) {
-        checks.push(overflow[_basePlacement] <= 0);
-      }
-
-      if (checkAltAxis) {
-        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
-      }
-
-      if (checks.every(function (check) {
-        return check;
-      })) {
-        firstFittingPlacement = placement;
-        makeFallbackChecks = false;
-        break;
-      }
-
-      checksMap.set(placement, checks);
-    }
-
-    if (makeFallbackChecks) {
-      // `2` may be desired in some cases – research later
-      var numberOfChecks = flipVariations ? 3 : 1;
-
-      var _loop = function _loop(_i) {
-        var fittingPlacement = placements.find(function (placement) {
-          var checks = checksMap.get(placement);
-
-          if (checks) {
-            return checks.slice(0, _i).every(function (check) {
-              return check;
-            });
-          }
-        });
-
-        if (fittingPlacement) {
-          firstFittingPlacement = fittingPlacement;
-          return "break";
-        }
-      };
-
-      for (var _i = numberOfChecks; _i > 0; _i--) {
-        var _ret = _loop(_i);
-
-        if (_ret === "break") break;
-      }
-    }
-
-    if (state.placement !== firstFittingPlacement) {
-      state.modifiersData[name]._skip = true;
-      state.placement = firstFittingPlacement;
-      state.reset = true;
-    }
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const flip$1 = {
-    name: 'flip',
-    enabled: true,
-    phase: 'main',
-    fn: flip,
-    requiresIfExists: ['offset'],
-    data: {
-      _skip: false
-    }
-  };
-
-  function getSideOffsets(overflow, rect, preventedOffsets) {
-    if (preventedOffsets === void 0) {
-      preventedOffsets = {
-        x: 0,
-        y: 0
-      };
-    }
-
-    return {
-      top: overflow.top - rect.height - preventedOffsets.y,
-      right: overflow.right - rect.width + preventedOffsets.x,
-      bottom: overflow.bottom - rect.height + preventedOffsets.y,
-      left: overflow.left - rect.width - preventedOffsets.x
-    };
-  }
-
-  function isAnySideFullyClipped(overflow) {
-    return [top, right, bottom, left].some(function (side) {
-      return overflow[side] >= 0;
-    });
-  }
-
-  function hide(_ref) {
-    var state = _ref.state,
-        name = _ref.name;
-    var referenceRect = state.rects.reference;
-    var popperRect = state.rects.popper;
-    var preventedOffsets = state.modifiersData.preventOverflow;
-    var referenceOverflow = detectOverflow(state, {
-      elementContext: 'reference'
-    });
-    var popperAltOverflow = detectOverflow(state, {
-      altBoundary: true
-    });
-    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
-    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
-    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
-    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
-    state.modifiersData[name] = {
-      referenceClippingOffsets: referenceClippingOffsets,
-      popperEscapeOffsets: popperEscapeOffsets,
-      isReferenceHidden: isReferenceHidden,
-      hasPopperEscaped: hasPopperEscaped
-    };
-    state.attributes.popper = Object.assign({}, state.attributes.popper, {
-      'data-popper-reference-hidden': isReferenceHidden,
-      'data-popper-escaped': hasPopperEscaped
-    });
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const hide$1 = {
-    name: 'hide',
-    enabled: true,
-    phase: 'main',
-    requiresIfExists: ['preventOverflow'],
-    fn: hide
-  };
-
-  function distanceAndSkiddingToXY(placement, rects, offset) {
-    var basePlacement = getBasePlacement(placement);
-    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
-
-    var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
-      placement: placement
-    })) : offset,
-        skidding = _ref[0],
-        distance = _ref[1];
-
-    skidding = skidding || 0;
-    distance = (distance || 0) * invertDistance;
-    return [left, right].indexOf(basePlacement) >= 0 ? {
-      x: distance,
-      y: skidding
-    } : {
-      x: skidding,
-      y: distance
-    };
-  }
-
-  function offset(_ref2) {
-    var state = _ref2.state,
-        options = _ref2.options,
-        name = _ref2.name;
-    var _options$offset = options.offset,
-        offset = _options$offset === void 0 ? [0, 0] : _options$offset;
-    var data = placements.reduce(function (acc, placement) {
-      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
-      return acc;
-    }, {});
-    var _data$state$placement = data[state.placement],
-        x = _data$state$placement.x,
-        y = _data$state$placement.y;
-
-    if (state.modifiersData.popperOffsets != null) {
-      state.modifiersData.popperOffsets.x += x;
-      state.modifiersData.popperOffsets.y += y;
-    }
-
-    state.modifiersData[name] = data;
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const offset$1 = {
-    name: 'offset',
-    enabled: true,
-    phase: 'main',
-    requires: ['popperOffsets'],
-    fn: offset
-  };
-
-  function popperOffsets(_ref) {
-    var state = _ref.state,
-        name = _ref.name;
-    // Offsets are the actual position the popper needs to have to be
-    // properly positioned near its reference element
-    // This is the most basic placement, and will be adjusted by
-    // the modifiers in the next step
-    state.modifiersData[name] = computeOffsets({
-      reference: state.rects.reference,
-      element: state.rects.popper,
-      strategy: 'absolute',
-      placement: state.placement
-    });
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const popperOffsets$1 = {
-    name: 'popperOffsets',
-    enabled: true,
-    phase: 'read',
-    fn: popperOffsets,
-    data: {}
-  };
-
-  function getAltAxis(axis) {
-    return axis === 'x' ? 'y' : 'x';
-  }
-
-  function preventOverflow(_ref) {
-    var state = _ref.state,
-        options = _ref.options,
-        name = _ref.name;
-    var _options$mainAxis = options.mainAxis,
-        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
-        _options$altAxis = options.altAxis,
-        checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
-        boundary = options.boundary,
-        rootBoundary = options.rootBoundary,
-        altBoundary = options.altBoundary,
-        padding = options.padding,
-        _options$tether = options.tether,
-        tether = _options$tether === void 0 ? true : _options$tether,
-        _options$tetherOffset = options.tetherOffset,
-        tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
-    var overflow = detectOverflow(state, {
-      boundary: boundary,
-      rootBoundary: rootBoundary,
-      padding: padding,
-      altBoundary: altBoundary
-    });
-    var basePlacement = getBasePlacement(state.placement);
-    var variation = getVariation(state.placement);
-    var isBasePlacement = !variation;
-    var mainAxis = getMainAxisFromPlacement(basePlacement);
-    var altAxis = getAltAxis(mainAxis);
-    var popperOffsets = state.modifiersData.popperOffsets;
-    var referenceRect = state.rects.reference;
-    var popperRect = state.rects.popper;
-    var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
-      placement: state.placement
-    })) : tetherOffset;
-    var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
-      mainAxis: tetherOffsetValue,
-      altAxis: tetherOffsetValue
-    } : Object.assign({
-      mainAxis: 0,
-      altAxis: 0
-    }, tetherOffsetValue);
-    var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
-    var data = {
-      x: 0,
-      y: 0
-    };
-
-    if (!popperOffsets) {
-      return;
-    }
-
-    if (checkMainAxis) {
-      var _offsetModifierState$;
-
-      var mainSide = mainAxis === 'y' ? top : left;
-      var altSide = mainAxis === 'y' ? bottom : right;
-      var len = mainAxis === 'y' ? 'height' : 'width';
-      var offset = popperOffsets[mainAxis];
-      var min$1 = offset + overflow[mainSide];
-      var max$1 = offset - overflow[altSide];
-      var additive = tether ? -popperRect[len] / 2 : 0;
-      var minLen = variation === start ? referenceRect[len] : popperRect[len];
-      var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
-      // outside the reference bounds
-
-      var arrowElement = state.elements.arrow;
-      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
-        width: 0,
-        height: 0
-      };
-      var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
-      var arrowPaddingMin = arrowPaddingObject[mainSide];
-      var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
-      // to include its full size in the calculation. If the reference is small
-      // and near the edge of a boundary, the popper can overflow even if the
-      // reference is not overflowing as well (e.g. virtual elements with no
-      // width or height)
-
-      var arrowLen = within(0, referenceRect[len], arrowRect[len]);
-      var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
-      var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
-      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
-      var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
-      var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
-      var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
-      var tetherMax = offset + maxOffset - offsetModifierValue;
-      var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
-      popperOffsets[mainAxis] = preventedOffset;
-      data[mainAxis] = preventedOffset - offset;
-    }
-
-    if (checkAltAxis) {
-      var _offsetModifierState$2;
-
-      var _mainSide = mainAxis === 'x' ? top : left;
-
-      var _altSide = mainAxis === 'x' ? bottom : right;
-
-      var _offset = popperOffsets[altAxis];
-
-      var _len = altAxis === 'y' ? 'height' : 'width';
-
-      var _min = _offset + overflow[_mainSide];
-
-      var _max = _offset - overflow[_altSide];
-
-      var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
-
-      var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
-
-      var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
-
-      var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
-
-      var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
-
-      popperOffsets[altAxis] = _preventedOffset;
-      data[altAxis] = _preventedOffset - _offset;
-    }
-
-    state.modifiersData[name] = data;
-  } // eslint-disable-next-line import/no-unused-modules
-
-
-  const preventOverflow$1 = {
-    name: 'preventOverflow',
-    enabled: true,
-    phase: 'main',
-    fn: preventOverflow,
-    requiresIfExists: ['offset']
-  };
-
-  function getHTMLElementScroll(element) {
-    return {
-      scrollLeft: element.scrollLeft,
-      scrollTop: element.scrollTop
-    };
-  }
-
-  function getNodeScroll(node) {
-    if (node === getWindow(node) || !isHTMLElement(node)) {
-      return getWindowScroll(node);
-    } else {
-      return getHTMLElementScroll(node);
-    }
-  }
-
-  function isElementScaled(element) {
-    var rect = element.getBoundingClientRect();
-    var scaleX = round(rect.width) / element.offsetWidth || 1;
-    var scaleY = round(rect.height) / element.offsetHeight || 1;
-    return scaleX !== 1 || scaleY !== 1;
-  } // Returns the composite rect of an element relative to its offsetParent.
-  // Composite means it takes into account transforms as well as layout.
-
-
-  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
-    if (isFixed === void 0) {
-      isFixed = false;
-    }
-
-    var isOffsetParentAnElement = isHTMLElement(offsetParent);
-    var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
-    var documentElement = getDocumentElement(offsetParent);
-    var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
-    var scroll = {
-      scrollLeft: 0,
-      scrollTop: 0
-    };
-    var offsets = {
-      x: 0,
-      y: 0
-    };
-
-    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
-      if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
-      isScrollParent(documentElement)) {
-        scroll = getNodeScroll(offsetParent);
-      }
-
-      if (isHTMLElement(offsetParent)) {
-        offsets = getBoundingClientRect(offsetParent, true);
-        offsets.x += offsetParent.clientLeft;
-        offsets.y += offsetParent.clientTop;
-      } else if (documentElement) {
-        offsets.x = getWindowScrollBarX(documentElement);
-      }
-    }
-
-    return {
-      x: rect.left + scroll.scrollLeft - offsets.x,
-      y: rect.top + scroll.scrollTop - offsets.y,
-      width: rect.width,
-      height: rect.height
-    };
-  }
-
-  function order(modifiers) {
-    var map = new Map();
-    var visited = new Set();
-    var result = [];
-    modifiers.forEach(function (modifier) {
-      map.set(modifier.name, modifier);
-    }); // On visiting object, check for its dependencies and visit them recursively
-
-    function sort(modifier) {
-      visited.add(modifier.name);
-      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
-      requires.forEach(function (dep) {
-        if (!visited.has(dep)) {
-          var depModifier = map.get(dep);
-
-          if (depModifier) {
-            sort(depModifier);
-          }
-        }
-      });
-      result.push(modifier);
-    }
-
-    modifiers.forEach(function (modifier) {
-      if (!visited.has(modifier.name)) {
-        // check for visited object
-        sort(modifier);
-      }
-    });
-    return result;
-  }
-
-  function orderModifiers(modifiers) {
-    // order based on dependencies
-    var orderedModifiers = order(modifiers); // order based on phase
-
-    return modifierPhases.reduce(function (acc, phase) {
-      return acc.concat(orderedModifiers.filter(function (modifier) {
-        return modifier.phase === phase;
-      }));
-    }, []);
-  }
-
-  function debounce(fn) {
-    var pending;
-    return function () {
-      if (!pending) {
-        pending = new Promise(function (resolve) {
-          Promise.resolve().then(function () {
-            pending = undefined;
-            resolve(fn());
-          });
-        });
-      }
-
-      return pending;
-    };
-  }
-
-  function mergeByName(modifiers) {
-    var merged = modifiers.reduce(function (merged, current) {
-      var existing = merged[current.name];
-      merged[current.name] = existing ? Object.assign({}, existing, current, {
-        options: Object.assign({}, existing.options, current.options),
-        data: Object.assign({}, existing.data, current.data)
-      }) : current;
-      return merged;
-    }, {}); // IE11 does not support Object.values
-
-    return Object.keys(merged).map(function (key) {
-      return merged[key];
-    });
-  }
-
-  var DEFAULT_OPTIONS = {
-    placement: 'bottom',
-    modifiers: [],
-    strategy: 'absolute'
-  };
-
-  function areValidElements() {
-    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    return !args.some(function (element) {
-      return !(element && typeof element.getBoundingClientRect === 'function');
-    });
-  }
-
-  function popperGenerator(generatorOptions) {
-    if (generatorOptions === void 0) {
-      generatorOptions = {};
-    }
-
-    var _generatorOptions = generatorOptions,
-        _generatorOptions$def = _generatorOptions.defaultModifiers,
-        defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
-        _generatorOptions$def2 = _generatorOptions.defaultOptions,
-        defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
-    return function createPopper(reference, popper, options) {
-      if (options === void 0) {
-        options = defaultOptions;
-      }
-
-      var state = {
-        placement: 'bottom',
-        orderedModifiers: [],
-        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
-        modifiersData: {},
-        elements: {
-          reference: reference,
-          popper: popper
-        },
-        attributes: {},
-        styles: {}
-      };
-      var effectCleanupFns = [];
-      var isDestroyed = false;
-      var instance = {
-        state: state,
-        setOptions: function setOptions(setOptionsAction) {
-          var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
-          cleanupModifierEffects();
-          state.options = Object.assign({}, defaultOptions, state.options, options);
-          state.scrollParents = {
-            reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
-            popper: listScrollParents(popper)
-          }; // Orders the modifiers based on their dependencies and `phase`
-          // properties
-
-          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
-
-          state.orderedModifiers = orderedModifiers.filter(function (m) {
-            return m.enabled;
-          });
-          runModifierEffects();
-          return instance.update();
-        },
-        // Sync update – it will always be executed, even if not necessary. This
-        // is useful for low frequency updates where sync behavior simplifies the
-        // logic.
-        // For high frequency updates (e.g. `resize` and `scroll` events), always
-        // prefer the async Popper#update method
-        forceUpdate: function forceUpdate() {
-          if (isDestroyed) {
-            return;
-          }
-
-          var _state$elements = state.elements,
-              reference = _state$elements.reference,
-              popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
-          // anymore
-
-          if (!areValidElements(reference, popper)) {
-            return;
-          } // Store the reference and popper rects to be read by modifiers
-
-
-          state.rects = {
-            reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
-            popper: getLayoutRect(popper)
-          }; // Modifiers have the ability to reset the current update cycle. The
-          // most common use case for this is the `flip` modifier changing the
-          // placement, which then needs to re-run all the modifiers, because the
-          // logic was previously ran for the previous placement and is therefore
-          // stale/incorrect
-
-          state.reset = false;
-          state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
-          // is filled with the initial data specified by the modifier. This means
-          // it doesn't persist and is fresh on each update.
-          // To ensure persistent data, use `${name}#persistent`
-
-          state.orderedModifiers.forEach(function (modifier) {
-            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
-          });
-
-          for (var index = 0; index < state.orderedModifiers.length; index++) {
-            if (state.reset === true) {
-              state.reset = false;
-              index = -1;
-              continue;
-            }
-
-            var _state$orderedModifie = state.orderedModifiers[index],
-                fn = _state$orderedModifie.fn,
-                _state$orderedModifie2 = _state$orderedModifie.options,
-                _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
-                name = _state$orderedModifie.name;
-
-            if (typeof fn === 'function') {
-              state = fn({
-                state: state,
-                options: _options,
-                name: name,
-                instance: instance
-              }) || state;
-            }
-          }
-        },
-        // Async and optimistically optimized update – it will not be executed if
-        // not necessary (debounced to run at most once-per-tick)
-        update: debounce(function () {
-          return new Promise(function (resolve) {
-            instance.forceUpdate();
-            resolve(state);
-          });
-        }),
-        destroy: function destroy() {
-          cleanupModifierEffects();
-          isDestroyed = true;
-        }
-      };
-
-      if (!areValidElements(reference, popper)) {
-        return instance;
-      }
-
-      instance.setOptions(options).then(function (state) {
-        if (!isDestroyed && options.onFirstUpdate) {
-          options.onFirstUpdate(state);
-        }
-      }); // Modifiers have the ability to execute arbitrary code before the first
-      // update cycle runs. They will be executed in the same order as the update
-      // cycle. This is useful when a modifier adds some persistent data that
-      // other modifiers need to use, but the modifier is run after the dependent
-      // one.
-
-      function runModifierEffects() {
-        state.orderedModifiers.forEach(function (_ref) {
-          var name = _ref.name,
-              _ref$options = _ref.options,
-              options = _ref$options === void 0 ? {} : _ref$options,
-              effect = _ref.effect;
-
-          if (typeof effect === 'function') {
-            var cleanupFn = effect({
-              state: state,
-              name: name,
-              instance: instance,
-              options: options
-            });
-
-            var noopFn = function noopFn() {};
-
-            effectCleanupFns.push(cleanupFn || noopFn);
-          }
-        });
-      }
-
-      function cleanupModifierEffects() {
-        effectCleanupFns.forEach(function (fn) {
-          return fn();
-        });
-        effectCleanupFns = [];
-      }
-
-      return instance;
-    };
-  }
-  var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
-
-  var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
-  var createPopper$1 = /*#__PURE__*/popperGenerator({
-    defaultModifiers: defaultModifiers$1
-  }); // eslint-disable-next-line import/no-unused-modules
-
-  var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
-  var createPopper = /*#__PURE__*/popperGenerator({
-    defaultModifiers: defaultModifiers
-  }); // eslint-disable-next-line import/no-unused-modules
-
-  const Popper = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
-    __proto__: null,
-    afterMain,
-    afterRead,
-    afterWrite,
-    applyStyles: applyStyles$1,
-    arrow: arrow$1,
-    auto,
-    basePlacements,
-    beforeMain,
-    beforeRead,
-    beforeWrite,
-    bottom,
-    clippingParents,
-    computeStyles: computeStyles$1,
-    createPopper,
-    createPopperBase: createPopper$2,
-    createPopperLite: createPopper$1,
-    detectOverflow,
-    end,
-    eventListeners,
-    flip: flip$1,
-    hide: hide$1,
-    left,
-    main,
-    modifierPhases,
-    offset: offset$1,
-    placements,
-    popper,
-    popperGenerator,
-    popperOffsets: popperOffsets$1,
-    preventOverflow: preventOverflow$1,
-    read,
-    reference,
-    right,
-    start,
-    top,
-    variationPlacements,
-    viewport,
-    write
-  }, Symbol.toStringTag, { value: 'Module' }));
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dropdown.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$a = 'dropdown';
-  const DATA_KEY$6 = 'bs.dropdown';
-  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
-  const DATA_API_KEY$3 = '.data-api';
-  const ESCAPE_KEY$2 = 'Escape';
-  const TAB_KEY$1 = 'Tab';
-  const ARROW_UP_KEY$1 = 'ArrowUp';
-  const ARROW_DOWN_KEY$1 = 'ArrowDown';
-  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
-
-  const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
-  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
-  const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
-  const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
-  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
-  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
-  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
-  const CLASS_NAME_SHOW$6 = 'show';
-  const CLASS_NAME_DROPUP = 'dropup';
-  const CLASS_NAME_DROPEND = 'dropend';
-  const CLASS_NAME_DROPSTART = 'dropstart';
-  const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
-  const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
-  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
-  const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
-  const SELECTOR_MENU = '.dropdown-menu';
-  const SELECTOR_NAVBAR = '.navbar';
-  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
-  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
-  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
-  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
-  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
-  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
-  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
-  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
-  const PLACEMENT_TOPCENTER = 'top';
-  const PLACEMENT_BOTTOMCENTER = 'bottom';
-  const Default$9 = {
-    autoClose: true,
-    boundary: 'clippingParents',
-    display: 'dynamic',
-    offset: [0, 2],
-    popperConfig: null,
-    reference: 'toggle'
-  };
-  const DefaultType$9 = {
-    autoClose: '(boolean|string)',
-    boundary: '(string|element)',
-    display: 'string',
-    offset: '(array|string|function)',
-    popperConfig: '(null|object|function)',
-    reference: '(string|element|object)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Dropdown extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._popper = null;
-      this._parent = this._element.parentNode; // dropdown wrapper
-      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-      this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
-      this._inNavbar = this._detectNavbar();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$9;
-    }
-    static get DefaultType() {
-      return DefaultType$9;
-    }
-    static get NAME() {
-      return NAME$a;
-    }
-
-    // Public
-    toggle() {
-      return this._isShown() ? this.hide() : this.show();
-    }
-    show() {
-      if (isDisabled(this._element) || this._isShown()) {
-        return;
-      }
-      const relatedTarget = {
-        relatedTarget: this._element
-      };
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._createPopper();
-
-      // If this is a touch-enabled device we add extra
-      // empty mouseover listeners to the body's immediate children;
-      // only needed because of broken event delegation on iOS
-      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-      if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.on(element, 'mouseover', noop);
-        }
-      }
-      this._element.focus();
-      this._element.setAttribute('aria-expanded', true);
-      this._menu.classList.add(CLASS_NAME_SHOW$6);
-      this._element.classList.add(CLASS_NAME_SHOW$6);
-      EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
-    }
-    hide() {
-      if (isDisabled(this._element) || !this._isShown()) {
-        return;
-      }
-      const relatedTarget = {
-        relatedTarget: this._element
-      };
-      this._completeHide(relatedTarget);
-    }
-    dispose() {
-      if (this._popper) {
-        this._popper.destroy();
-      }
-      super.dispose();
-    }
-    update() {
-      this._inNavbar = this._detectNavbar();
-      if (this._popper) {
-        this._popper.update();
-      }
-    }
-
-    // Private
-    _completeHide(relatedTarget) {
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-
-      // If this is a touch-enabled device we remove the extra
-      // empty mouseover listeners we added for iOS support
-      if ('ontouchstart' in document.documentElement) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.off(element, 'mouseover', noop);
-        }
-      }
-      if (this._popper) {
-        this._popper.destroy();
-      }
-      this._menu.classList.remove(CLASS_NAME_SHOW$6);
-      this._element.classList.remove(CLASS_NAME_SHOW$6);
-      this._element.setAttribute('aria-expanded', 'false');
-      Manipulator.removeDataAttribute(this._menu, 'popper');
-      EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
-    }
-    _getConfig(config) {
-      config = super._getConfig(config);
-      if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
-        // Popper virtual elements require a getBoundingClientRect method
-        throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
-      }
-      return config;
-    }
-    _createPopper() {
-      if (typeof Popper === 'undefined') {
-        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
-      }
-      let referenceElement = this._element;
-      if (this._config.reference === 'parent') {
-        referenceElement = this._parent;
-      } else if (isElement$1(this._config.reference)) {
-        referenceElement = getElement(this._config.reference);
-      } else if (typeof this._config.reference === 'object') {
-        referenceElement = this._config.reference;
-      }
-      const popperConfig = this._getPopperConfig();
-      this._popper = createPopper(referenceElement, this._menu, popperConfig);
-    }
-    _isShown() {
-      return this._menu.classList.contains(CLASS_NAME_SHOW$6);
-    }
-    _getPlacement() {
-      const parentDropdown = this._parent;
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
-        return PLACEMENT_RIGHT;
-      }
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
-        return PLACEMENT_LEFT;
-      }
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
-        return PLACEMENT_TOPCENTER;
-      }
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
-        return PLACEMENT_BOTTOMCENTER;
-      }
-
-      // We need to trim the value because custom properties can also include spaces
-      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
-        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
-      }
-      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
-    }
-    _detectNavbar() {
-      return this._element.closest(SELECTOR_NAVBAR) !== null;
-    }
-    _getOffset() {
-      const {
-        offset
-      } = this._config;
-      if (typeof offset === 'string') {
-        return offset.split(',').map(value => Number.parseInt(value, 10));
-      }
-      if (typeof offset === 'function') {
-        return popperData => offset(popperData, this._element);
-      }
-      return offset;
-    }
-    _getPopperConfig() {
-      const defaultBsPopperConfig = {
-        placement: this._getPlacement(),
-        modifiers: [{
-          name: 'preventOverflow',
-          options: {
-            boundary: this._config.boundary
-          }
-        }, {
-          name: 'offset',
-          options: {
-            offset: this._getOffset()
-          }
-        }]
-      };
-
-      // Disable Popper if we have a static display or Dropdown is in Navbar
-      if (this._inNavbar || this._config.display === 'static') {
-        Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
-        defaultBsPopperConfig.modifiers = [{
-          name: 'applyStyles',
-          enabled: false
-        }];
-      }
-      return {
-        ...defaultBsPopperConfig,
-        ...execute(this._config.popperConfig, [defaultBsPopperConfig])
-      };
-    }
-    _selectMenuItem({
-      key,
-      target
-    }) {
-      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
-      if (!items.length) {
-        return;
-      }
-
-      // if target isn't included in items (e.g. when expanding the dropdown)
-      // allow cycling to get the last item in case key equals ARROW_UP_KEY
-      getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Dropdown.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-    static clearMenus(event) {
-      if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
-        return;
-      }
-      const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-      for (const toggle of openToggles) {
-        const context = Dropdown.getInstance(toggle);
-        if (!context || context._config.autoClose === false) {
-          continue;
-        }
-        const composedPath = event.composedPath();
-        const isMenuTarget = composedPath.includes(context._menu);
-        if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
-          continue;
-        }
-
-        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-        if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
-          continue;
-        }
-        const relatedTarget = {
-          relatedTarget: context._element
-        };
-        if (event.type === 'click') {
-          relatedTarget.clickEvent = event;
-        }
-        context._completeHide(relatedTarget);
-      }
-    }
-    static dataApiKeydownHandler(event) {
-      // If not an UP | DOWN | ESCAPE key => not a dropdown command
-      // If input/textarea && if key is other than ESCAPE => not a dropdown command
-
-      const isInput = /input|textarea/i.test(event.target.tagName);
-      const isEscapeEvent = event.key === ESCAPE_KEY$2;
-      const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
-      if (!isUpOrDownEvent && !isEscapeEvent) {
-        return;
-      }
-      if (isInput && !isEscapeEvent) {
-        return;
-      }
-      event.preventDefault();
-
-      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
-      const instance = Dropdown.getOrCreateInstance(getToggleButton);
-      if (isUpOrDownEvent) {
-        event.stopPropagation();
-        instance.show();
-        instance._selectMenuItem(event);
-        return;
-      }
-      if (instance._isShown()) {
-        // else is escape and we check if it is shown
-        event.stopPropagation();
-        instance.hide();
-        getToggleButton.focus();
-      }
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
-  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
-  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
-  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
-  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
-    event.preventDefault();
-    Dropdown.getOrCreateInstance(this).toggle();
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Dropdown);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/backdrop.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$9 = 'backdrop';
-  const CLASS_NAME_FADE$4 = 'fade';
-  const CLASS_NAME_SHOW$5 = 'show';
-  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
-  const Default$8 = {
-    className: 'modal-backdrop',
-    clickCallback: null,
-    isAnimated: false,
-    isVisible: true,
-    // if false, we use the backdrop helper without adding any element to the dom
-    rootElement: 'body' // give the choice to place backdrop under different elements
-  };
-
-  const DefaultType$8 = {
-    className: 'string',
-    clickCallback: '(function|null)',
-    isAnimated: 'boolean',
-    isVisible: 'boolean',
-    rootElement: '(element|string)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Backdrop extends Config {
-    constructor(config) {
-      super();
-      this._config = this._getConfig(config);
-      this._isAppended = false;
-      this._element = null;
-    }
-
-    // Getters
-    static get Default() {
-      return Default$8;
-    }
-    static get DefaultType() {
-      return DefaultType$8;
-    }
-    static get NAME() {
-      return NAME$9;
-    }
-
-    // Public
-    show(callback) {
-      if (!this._config.isVisible) {
-        execute(callback);
-        return;
-      }
-      this._append();
-      const element = this._getElement();
-      if (this._config.isAnimated) {
-        reflow(element);
-      }
-      element.classList.add(CLASS_NAME_SHOW$5);
-      this._emulateAnimation(() => {
-        execute(callback);
-      });
-    }
-    hide(callback) {
-      if (!this._config.isVisible) {
-        execute(callback);
-        return;
-      }
-      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
-      this._emulateAnimation(() => {
-        this.dispose();
-        execute(callback);
-      });
-    }
-    dispose() {
-      if (!this._isAppended) {
-        return;
-      }
-      EventHandler.off(this._element, EVENT_MOUSEDOWN);
-      this._element.remove();
-      this._isAppended = false;
-    }
-
-    // Private
-    _getElement() {
-      if (!this._element) {
-        const backdrop = document.createElement('div');
-        backdrop.className = this._config.className;
-        if (this._config.isAnimated) {
-          backdrop.classList.add(CLASS_NAME_FADE$4);
-        }
-        this._element = backdrop;
-      }
-      return this._element;
-    }
-    _configAfterMerge(config) {
-      // use getElement() with the default "body" to get a fresh Element on each instantiation
-      config.rootElement = getElement(config.rootElement);
-      return config;
-    }
-    _append() {
-      if (this._isAppended) {
-        return;
-      }
-      const element = this._getElement();
-      this._config.rootElement.append(element);
-      EventHandler.on(element, EVENT_MOUSEDOWN, () => {
-        execute(this._config.clickCallback);
-      });
-      this._isAppended = true;
-    }
-    _emulateAnimation(callback) {
-      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/focustrap.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$8 = 'focustrap';
-  const DATA_KEY$5 = 'bs.focustrap';
-  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
-  const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
-  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
-  const TAB_KEY = 'Tab';
-  const TAB_NAV_FORWARD = 'forward';
-  const TAB_NAV_BACKWARD = 'backward';
-  const Default$7 = {
-    autofocus: true,
-    trapElement: null // The element to trap focus inside of
-  };
-
-  const DefaultType$7 = {
-    autofocus: 'boolean',
-    trapElement: 'element'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class FocusTrap extends Config {
-    constructor(config) {
-      super();
-      this._config = this._getConfig(config);
-      this._isActive = false;
-      this._lastTabNavDirection = null;
-    }
-
-    // Getters
-    static get Default() {
-      return Default$7;
-    }
-    static get DefaultType() {
-      return DefaultType$7;
-    }
-    static get NAME() {
-      return NAME$8;
-    }
-
-    // Public
-    activate() {
-      if (this._isActive) {
-        return;
-      }
-      if (this._config.autofocus) {
-        this._config.trapElement.focus();
-      }
-      EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
-      EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
-      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
-      this._isActive = true;
-    }
-    deactivate() {
-      if (!this._isActive) {
-        return;
-      }
-      this._isActive = false;
-      EventHandler.off(document, EVENT_KEY$5);
-    }
-
-    // Private
-    _handleFocusin(event) {
-      const {
-        trapElement
-      } = this._config;
-      if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
-        return;
-      }
-      const elements = SelectorEngine.focusableChildren(trapElement);
-      if (elements.length === 0) {
-        trapElement.focus();
-      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
-        elements[elements.length - 1].focus();
-      } else {
-        elements[0].focus();
-      }
-    }
-    _handleKeydown(event) {
-      if (event.key !== TAB_KEY) {
-        return;
-      }
-      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/scrollBar.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
-  const SELECTOR_STICKY_CONTENT = '.sticky-top';
-  const PROPERTY_PADDING = 'padding-right';
-  const PROPERTY_MARGIN = 'margin-right';
-
-  /**
-   * Class definition
-   */
-
-  class ScrollBarHelper {
-    constructor() {
-      this._element = document.body;
-    }
-
-    // Public
-    getWidth() {
-      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
-      const documentWidth = document.documentElement.clientWidth;
-      return Math.abs(window.innerWidth - documentWidth);
-    }
-    hide() {
-      const width = this.getWidth();
-      this._disableOverFlow();
-      // give padding to element to balance the hidden scrollbar width
-      this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
-      // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
-      this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
-      this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
-    }
-    reset() {
-      this._resetElementAttributes(this._element, 'overflow');
-      this._resetElementAttributes(this._element, PROPERTY_PADDING);
-      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
-      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
-    }
-    isOverflowing() {
-      return this.getWidth() > 0;
-    }
-
-    // Private
-    _disableOverFlow() {
-      this._saveInitialAttribute(this._element, 'overflow');
-      this._element.style.overflow = 'hidden';
-    }
-    _setElementAttributes(selector, styleProperty, callback) {
-      const scrollbarWidth = this.getWidth();
-      const manipulationCallBack = element => {
-        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
-          return;
-        }
-        this._saveInitialAttribute(element, styleProperty);
-        const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
-        element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
-      };
-      this._applyManipulationCallback(selector, manipulationCallBack);
-    }
-    _saveInitialAttribute(element, styleProperty) {
-      const actualValue = element.style.getPropertyValue(styleProperty);
-      if (actualValue) {
-        Manipulator.setDataAttribute(element, styleProperty, actualValue);
-      }
-    }
-    _resetElementAttributes(selector, styleProperty) {
-      const manipulationCallBack = element => {
-        const value = Manipulator.getDataAttribute(element, styleProperty);
-        // We only want to remove the property if the value is `null`; the value can also be zero
-        if (value === null) {
-          element.style.removeProperty(styleProperty);
-          return;
-        }
-        Manipulator.removeDataAttribute(element, styleProperty);
-        element.style.setProperty(styleProperty, value);
-      };
-      this._applyManipulationCallback(selector, manipulationCallBack);
-    }
-    _applyManipulationCallback(selector, callBack) {
-      if (isElement$1(selector)) {
-        callBack(selector);
-        return;
-      }
-      for (const sel of SelectorEngine.find(selector, this._element)) {
-        callBack(sel);
-      }
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap modal.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$7 = 'modal';
-  const DATA_KEY$4 = 'bs.modal';
-  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
-  const DATA_API_KEY$2 = '.data-api';
-  const ESCAPE_KEY$1 = 'Escape';
-  const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
-  const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
-  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
-  const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
-  const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
-  const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
-  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
-  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
-  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
-  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
-  const CLASS_NAME_OPEN = 'modal-open';
-  const CLASS_NAME_FADE$3 = 'fade';
-  const CLASS_NAME_SHOW$4 = 'show';
-  const CLASS_NAME_STATIC = 'modal-static';
-  const OPEN_SELECTOR$1 = '.modal.show';
-  const SELECTOR_DIALOG = '.modal-dialog';
-  const SELECTOR_MODAL_BODY = '.modal-body';
-  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
-  const Default$6 = {
-    backdrop: true,
-    focus: true,
-    keyboard: true
-  };
-  const DefaultType$6 = {
-    backdrop: '(boolean|string)',
-    focus: 'boolean',
-    keyboard: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Modal extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
-      this._backdrop = this._initializeBackDrop();
-      this._focustrap = this._initializeFocusTrap();
-      this._isShown = false;
-      this._isTransitioning = false;
-      this._scrollBar = new ScrollBarHelper();
-      this._addEventListeners();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$6;
-    }
-    static get DefaultType() {
-      return DefaultType$6;
-    }
-    static get NAME() {
-      return NAME$7;
-    }
-
-    // Public
-    toggle(relatedTarget) {
-      return this._isShown ? this.hide() : this.show(relatedTarget);
-    }
-    show(relatedTarget) {
-      if (this._isShown || this._isTransitioning) {
-        return;
-      }
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
-        relatedTarget
-      });
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._isShown = true;
-      this._isTransitioning = true;
-      this._scrollBar.hide();
-      document.body.classList.add(CLASS_NAME_OPEN);
-      this._adjustDialog();
-      this._backdrop.show(() => this._showElement(relatedTarget));
-    }
-    hide() {
-      if (!this._isShown || this._isTransitioning) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      this._isShown = false;
-      this._isTransitioning = true;
-      this._focustrap.deactivate();
-      this._element.classList.remove(CLASS_NAME_SHOW$4);
-      this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
-    }
-    dispose() {
-      EventHandler.off(window, EVENT_KEY$4);
-      EventHandler.off(this._dialog, EVENT_KEY$4);
-      this._backdrop.dispose();
-      this._focustrap.deactivate();
-      super.dispose();
-    }
-    handleUpdate() {
-      this._adjustDialog();
-    }
-
-    // Private
-    _initializeBackDrop() {
-      return new Backdrop({
-        isVisible: Boolean(this._config.backdrop),
-        // 'static' option will be translated to true, and booleans will keep their value,
-        isAnimated: this._isAnimated()
-      });
-    }
-    _initializeFocusTrap() {
-      return new FocusTrap({
-        trapElement: this._element
-      });
-    }
-    _showElement(relatedTarget) {
-      // try to append dynamic modal
-      if (!document.body.contains(this._element)) {
-        document.body.append(this._element);
-      }
-      this._element.style.display = 'block';
-      this._element.removeAttribute('aria-hidden');
-      this._element.setAttribute('aria-modal', true);
-      this._element.setAttribute('role', 'dialog');
-      this._element.scrollTop = 0;
-      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
-      if (modalBody) {
-        modalBody.scrollTop = 0;
-      }
-      reflow(this._element);
-      this._element.classList.add(CLASS_NAME_SHOW$4);
-      const transitionComplete = () => {
-        if (this._config.focus) {
-          this._focustrap.activate();
-        }
-        this._isTransitioning = false;
-        EventHandler.trigger(this._element, EVENT_SHOWN$4, {
-          relatedTarget
-        });
-      };
-      this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
-    }
-    _addEventListeners() {
-      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
-        if (event.key !== ESCAPE_KEY$1) {
-          return;
-        }
-        if (this._config.keyboard) {
-          this.hide();
-          return;
-        }
-        this._triggerBackdropTransition();
-      });
-      EventHandler.on(window, EVENT_RESIZE$1, () => {
-        if (this._isShown && !this._isTransitioning) {
-          this._adjustDialog();
-        }
-      });
-      EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
-        // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
-        EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
-          if (this._element !== event.target || this._element !== event2.target) {
-            return;
-          }
-          if (this._config.backdrop === 'static') {
-            this._triggerBackdropTransition();
-            return;
-          }
-          if (this._config.backdrop) {
-            this.hide();
-          }
-        });
-      });
-    }
-    _hideModal() {
-      this._element.style.display = 'none';
-      this._element.setAttribute('aria-hidden', true);
-      this._element.removeAttribute('aria-modal');
-      this._element.removeAttribute('role');
-      this._isTransitioning = false;
-      this._backdrop.hide(() => {
-        document.body.classList.remove(CLASS_NAME_OPEN);
-        this._resetAdjustments();
-        this._scrollBar.reset();
-        EventHandler.trigger(this._element, EVENT_HIDDEN$4);
-      });
-    }
-    _isAnimated() {
-      return this._element.classList.contains(CLASS_NAME_FADE$3);
-    }
-    _triggerBackdropTransition() {
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-      const initialOverflowY = this._element.style.overflowY;
-      // return if the following background transition hasn't yet completed
-      if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
-        return;
-      }
-      if (!isModalOverflowing) {
-        this._element.style.overflowY = 'hidden';
-      }
-      this._element.classList.add(CLASS_NAME_STATIC);
-      this._queueCallback(() => {
-        this._element.classList.remove(CLASS_NAME_STATIC);
-        this._queueCallback(() => {
-          this._element.style.overflowY = initialOverflowY;
-        }, this._dialog);
-      }, this._dialog);
-      this._element.focus();
-    }
-
-    /**
-     * The following methods are used to handle overflowing modals
-     */
-
-    _adjustDialog() {
-      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-      const scrollbarWidth = this._scrollBar.getWidth();
-      const isBodyOverflowing = scrollbarWidth > 0;
-      if (isBodyOverflowing && !isModalOverflowing) {
-        const property = isRTL() ? 'paddingLeft' : 'paddingRight';
-        this._element.style[property] = `${scrollbarWidth}px`;
-      }
-      if (!isBodyOverflowing && isModalOverflowing) {
-        const property = isRTL() ? 'paddingRight' : 'paddingLeft';
-        this._element.style[property] = `${scrollbarWidth}px`;
-      }
-    }
-    _resetAdjustments() {
-      this._element.style.paddingLeft = '';
-      this._element.style.paddingRight = '';
-    }
-
-    // Static
-    static jQueryInterface(config, relatedTarget) {
-      return this.each(function () {
-        const data = Modal.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](relatedTarget);
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
-    const target = SelectorEngine.getElementFromSelector(this);
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    EventHandler.one(target, EVENT_SHOW$4, showEvent => {
-      if (showEvent.defaultPrevented) {
-        // only register focus restorer if modal will actually get shown
-        return;
-      }
-      EventHandler.one(target, EVENT_HIDDEN$4, () => {
-        if (isVisible(this)) {
-          this.focus();
-        }
-      });
-    });
-
-    // avoid conflict when clicking modal toggler while another one is open
-    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
-    if (alreadyOpen) {
-      Modal.getInstance(alreadyOpen).hide();
-    }
-    const data = Modal.getOrCreateInstance(target);
-    data.toggle(this);
-  });
-  enableDismissTrigger(Modal);
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Modal);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap offcanvas.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$6 = 'offcanvas';
-  const DATA_KEY$3 = 'bs.offcanvas';
-  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
-  const DATA_API_KEY$1 = '.data-api';
-  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
-  const ESCAPE_KEY = 'Escape';
-  const CLASS_NAME_SHOW$3 = 'show';
-  const CLASS_NAME_SHOWING$1 = 'showing';
-  const CLASS_NAME_HIDING = 'hiding';
-  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
-  const OPEN_SELECTOR = '.offcanvas.show';
-  const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
-  const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
-  const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
-  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
-  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
-  const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
-  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
-  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
-  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
-  const Default$5 = {
-    backdrop: true,
-    keyboard: true,
-    scroll: false
-  };
-  const DefaultType$5 = {
-    backdrop: '(boolean|string)',
-    keyboard: 'boolean',
-    scroll: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Offcanvas extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._isShown = false;
-      this._backdrop = this._initializeBackDrop();
-      this._focustrap = this._initializeFocusTrap();
-      this._addEventListeners();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$5;
-    }
-    static get DefaultType() {
-      return DefaultType$5;
-    }
-    static get NAME() {
-      return NAME$6;
-    }
-
-    // Public
-    toggle(relatedTarget) {
-      return this._isShown ? this.hide() : this.show(relatedTarget);
-    }
-    show(relatedTarget) {
-      if (this._isShown) {
-        return;
-      }
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
-        relatedTarget
-      });
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._isShown = true;
-      this._backdrop.show();
-      if (!this._config.scroll) {
-        new ScrollBarHelper().hide();
-      }
-      this._element.setAttribute('aria-modal', true);
-      this._element.setAttribute('role', 'dialog');
-      this._element.classList.add(CLASS_NAME_SHOWING$1);
-      const completeCallBack = () => {
-        if (!this._config.scroll || this._config.backdrop) {
-          this._focustrap.activate();
-        }
-        this._element.classList.add(CLASS_NAME_SHOW$3);
-        this._element.classList.remove(CLASS_NAME_SHOWING$1);
-        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
-          relatedTarget
-        });
-      };
-      this._queueCallback(completeCallBack, this._element, true);
-    }
-    hide() {
-      if (!this._isShown) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      this._focustrap.deactivate();
-      this._element.blur();
-      this._isShown = false;
-      this._element.classList.add(CLASS_NAME_HIDING);
-      this._backdrop.hide();
-      const completeCallback = () => {
-        this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
-        this._element.removeAttribute('aria-modal');
-        this._element.removeAttribute('role');
-        if (!this._config.scroll) {
-          new ScrollBarHelper().reset();
-        }
-        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
-      };
-      this._queueCallback(completeCallback, this._element, true);
-    }
-    dispose() {
-      this._backdrop.dispose();
-      this._focustrap.deactivate();
-      super.dispose();
-    }
-
-    // Private
-    _initializeBackDrop() {
-      const clickCallback = () => {
-        if (this._config.backdrop === 'static') {
-          EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
-          return;
-        }
-        this.hide();
-      };
-
-      // 'static' option will be translated to true, and booleans will keep their value
-      const isVisible = Boolean(this._config.backdrop);
-      return new Backdrop({
-        className: CLASS_NAME_BACKDROP,
-        isVisible,
-        isAnimated: true,
-        rootElement: this._element.parentNode,
-        clickCallback: isVisible ? clickCallback : null
-      });
-    }
-    _initializeFocusTrap() {
-      return new FocusTrap({
-        trapElement: this._element
-      });
-    }
-    _addEventListeners() {
-      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
-        if (event.key !== ESCAPE_KEY) {
-          return;
-        }
-        if (this._config.keyboard) {
-          this.hide();
-          return;
-        }
-        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
-      });
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Offcanvas.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](this);
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
-    const target = SelectorEngine.getElementFromSelector(this);
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    if (isDisabled(this)) {
-      return;
-    }
-    EventHandler.one(target, EVENT_HIDDEN$3, () => {
-      // focus on trigger when it is closed
-      if (isVisible(this)) {
-        this.focus();
-      }
-    });
-
-    // avoid conflict when clicking a toggler of an offcanvas, while another is open
-    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
-    if (alreadyOpen && alreadyOpen !== target) {
-      Offcanvas.getInstance(alreadyOpen).hide();
-    }
-    const data = Offcanvas.getOrCreateInstance(target);
-    data.toggle(this);
-  });
-  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
-    for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
-      Offcanvas.getOrCreateInstance(selector).show();
-    }
-  });
-  EventHandler.on(window, EVENT_RESIZE, () => {
-    for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
-      if (getComputedStyle(element).position !== 'fixed') {
-        Offcanvas.getOrCreateInstance(element).hide();
-      }
-    }
-  });
-  enableDismissTrigger(Offcanvas);
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Offcanvas);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/sanitizer.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  // js-docs-start allow-list
-  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
-  const DefaultAllowlist = {
-    // Global attributes allowed on any supplied element below.
-    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
-    a: ['target', 'href', 'title', 'rel'],
-    area: [],
-    b: [],
-    br: [],
-    col: [],
-    code: [],
-    div: [],
-    em: [],
-    hr: [],
-    h1: [],
-    h2: [],
-    h3: [],
-    h4: [],
-    h5: [],
-    h6: [],
-    i: [],
-    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
-    li: [],
-    ol: [],
-    p: [],
-    pre: [],
-    s: [],
-    small: [],
-    span: [],
-    sub: [],
-    sup: [],
-    strong: [],
-    u: [],
-    ul: []
-  };
-  // js-docs-end allow-list
-
-  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
-
-  /**
-   * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
-   * contexts.
-   *
-   * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
-   */
-  // eslint-disable-next-line unicorn/better-regex
-  const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
-  const allowedAttribute = (attribute, allowedAttributeList) => {
-    const attributeName = attribute.nodeName.toLowerCase();
-    if (allowedAttributeList.includes(attributeName)) {
-      if (uriAttributes.has(attributeName)) {
-        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
-      }
-      return true;
-    }
-
-    // Check if a regular expression validates the attribute.
-    return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
-  };
-  function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
-    if (!unsafeHtml.length) {
-      return unsafeHtml;
-    }
-    if (sanitizeFunction && typeof sanitizeFunction === 'function') {
-      return sanitizeFunction(unsafeHtml);
-    }
-    const domParser = new window.DOMParser();
-    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
-    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
-    for (const element of elements) {
-      const elementName = element.nodeName.toLowerCase();
-      if (!Object.keys(allowList).includes(elementName)) {
-        element.remove();
-        continue;
-      }
-      const attributeList = [].concat(...element.attributes);
-      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
-      for (const attribute of attributeList) {
-        if (!allowedAttribute(attribute, allowedAttributes)) {
-          element.removeAttribute(attribute.nodeName);
-        }
-      }
-    }
-    return createdDocument.body.innerHTML;
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/template-factory.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$5 = 'TemplateFactory';
-  const Default$4 = {
-    allowList: DefaultAllowlist,
-    content: {},
-    // { selector : text ,  selector2 : text2 , }
-    extraClass: '',
-    html: false,
-    sanitize: true,
-    sanitizeFn: null,
-    template: '<div></div>'
-  };
-  const DefaultType$4 = {
-    allowList: 'object',
-    content: 'object',
-    extraClass: '(string|function)',
-    html: 'boolean',
-    sanitize: 'boolean',
-    sanitizeFn: '(null|function)',
-    template: 'string'
-  };
-  const DefaultContentType = {
-    entry: '(string|element|function|null)',
-    selector: '(string|element)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class TemplateFactory extends Config {
-    constructor(config) {
-      super();
-      this._config = this._getConfig(config);
-    }
-
-    // Getters
-    static get Default() {
-      return Default$4;
-    }
-    static get DefaultType() {
-      return DefaultType$4;
-    }
-    static get NAME() {
-      return NAME$5;
-    }
-
-    // Public
-    getContent() {
-      return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
-    }
-    hasContent() {
-      return this.getContent().length > 0;
-    }
-    changeContent(content) {
-      this._checkContent(content);
-      this._config.content = {
-        ...this._config.content,
-        ...content
-      };
-      return this;
-    }
-    toHtml() {
-      const templateWrapper = document.createElement('div');
-      templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
-      for (const [selector, text] of Object.entries(this._config.content)) {
-        this._setContent(templateWrapper, text, selector);
-      }
-      const template = templateWrapper.children[0];
-      const extraClass = this._resolvePossibleFunction(this._config.extraClass);
-      if (extraClass) {
-        template.classList.add(...extraClass.split(' '));
-      }
-      return template;
-    }
-
-    // Private
-    _typeCheckConfig(config) {
-      super._typeCheckConfig(config);
-      this._checkContent(config.content);
-    }
-    _checkContent(arg) {
-      for (const [selector, content] of Object.entries(arg)) {
-        super._typeCheckConfig({
-          selector,
-          entry: content
-        }, DefaultContentType);
-      }
-    }
-    _setContent(template, content, selector) {
-      const templateElement = SelectorEngine.findOne(selector, template);
-      if (!templateElement) {
-        return;
-      }
-      content = this._resolvePossibleFunction(content);
-      if (!content) {
-        templateElement.remove();
-        return;
-      }
-      if (isElement$1(content)) {
-        this._putElementInTemplate(getElement(content), templateElement);
-        return;
-      }
-      if (this._config.html) {
-        templateElement.innerHTML = this._maybeSanitize(content);
-        return;
-      }
-      templateElement.textContent = content;
-    }
-    _maybeSanitize(arg) {
-      return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
-    }
-    _resolvePossibleFunction(arg) {
-      return execute(arg, [this]);
-    }
-    _putElementInTemplate(element, templateElement) {
-      if (this._config.html) {
-        templateElement.innerHTML = '';
-        templateElement.append(element);
-        return;
-      }
-      templateElement.textContent = element.textContent;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap tooltip.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$4 = 'tooltip';
-  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
-  const CLASS_NAME_FADE$2 = 'fade';
-  const CLASS_NAME_MODAL = 'modal';
-  const CLASS_NAME_SHOW$2 = 'show';
-  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
-  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
-  const EVENT_MODAL_HIDE = 'hide.bs.modal';
-  const TRIGGER_HOVER = 'hover';
-  const TRIGGER_FOCUS = 'focus';
-  const TRIGGER_CLICK = 'click';
-  const TRIGGER_MANUAL = 'manual';
-  const EVENT_HIDE$2 = 'hide';
-  const EVENT_HIDDEN$2 = 'hidden';
-  const EVENT_SHOW$2 = 'show';
-  const EVENT_SHOWN$2 = 'shown';
-  const EVENT_INSERTED = 'inserted';
-  const EVENT_CLICK$1 = 'click';
-  const EVENT_FOCUSIN$1 = 'focusin';
-  const EVENT_FOCUSOUT$1 = 'focusout';
-  const EVENT_MOUSEENTER = 'mouseenter';
-  const EVENT_MOUSELEAVE = 'mouseleave';
-  const AttachmentMap = {
-    AUTO: 'auto',
-    TOP: 'top',
-    RIGHT: isRTL() ? 'left' : 'right',
-    BOTTOM: 'bottom',
-    LEFT: isRTL() ? 'right' : 'left'
-  };
-  const Default$3 = {
-    allowList: DefaultAllowlist,
-    animation: true,
-    boundary: 'clippingParents',
-    container: false,
-    customClass: '',
-    delay: 0,
-    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
-    html: false,
-    offset: [0, 6],
-    placement: 'top',
-    popperConfig: null,
-    sanitize: true,
-    sanitizeFn: null,
-    selector: false,
-    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
-    title: '',
-    trigger: 'hover focus'
-  };
-  const DefaultType$3 = {
-    allowList: 'object',
-    animation: 'boolean',
-    boundary: '(string|element)',
-    container: '(string|element|boolean)',
-    customClass: '(string|function)',
-    delay: '(number|object)',
-    fallbackPlacements: 'array',
-    html: 'boolean',
-    offset: '(array|string|function)',
-    placement: '(string|function)',
-    popperConfig: '(null|object|function)',
-    sanitize: 'boolean',
-    sanitizeFn: '(null|function)',
-    selector: '(string|boolean)',
-    template: 'string',
-    title: '(string|element|function)',
-    trigger: 'string'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Tooltip extends BaseComponent {
-    constructor(element, config) {
-      if (typeof Popper === 'undefined') {
-        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
-      }
-      super(element, config);
-
-      // Private
-      this._isEnabled = true;
-      this._timeout = 0;
-      this._isHovered = null;
-      this._activeTrigger = {};
-      this._popper = null;
-      this._templateFactory = null;
-      this._newContent = null;
-
-      // Protected
-      this.tip = null;
-      this._setListeners();
-      if (!this._config.selector) {
-        this._fixTitle();
-      }
-    }
-
-    // Getters
-    static get Default() {
-      return Default$3;
-    }
-    static get DefaultType() {
-      return DefaultType$3;
-    }
-    static get NAME() {
-      return NAME$4;
-    }
-
-    // Public
-    enable() {
-      this._isEnabled = true;
-    }
-    disable() {
-      this._isEnabled = false;
-    }
-    toggleEnabled() {
-      this._isEnabled = !this._isEnabled;
-    }
-    toggle() {
-      if (!this._isEnabled) {
-        return;
-      }
-      this._activeTrigger.click = !this._activeTrigger.click;
-      if (this._isShown()) {
-        this._leave();
-        return;
-      }
-      this._enter();
-    }
-    dispose() {
-      clearTimeout(this._timeout);
-      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-      if (this._element.getAttribute('data-bs-original-title')) {
-        this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
-      }
-      this._disposePopper();
-      super.dispose();
-    }
-    show() {
-      if (this._element.style.display === 'none') {
-        throw new Error('Please use show on visible elements');
-      }
-      if (!(this._isWithContent() && this._isEnabled)) {
-        return;
-      }
-      const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
-      const shadowRoot = findShadowRoot(this._element);
-      const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
-      if (showEvent.defaultPrevented || !isInTheDom) {
-        return;
-      }
-
-      // TODO: v6 remove this or make it optional
-      this._disposePopper();
-      const tip = this._getTipElement();
-      this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
-      const {
-        container
-      } = this._config;
-      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
-        container.append(tip);
-        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
-      }
-      this._popper = this._createPopper(tip);
-      tip.classList.add(CLASS_NAME_SHOW$2);
-
-      // If this is a touch-enabled device we add extra
-      // empty mouseover listeners to the body's immediate children;
-      // only needed because of broken event delegation on iOS
-      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-      if ('ontouchstart' in document.documentElement) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.on(element, 'mouseover', noop);
-        }
-      }
-      const complete = () => {
-        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
-        if (this._isHovered === false) {
-          this._leave();
-        }
-        this._isHovered = false;
-      };
-      this._queueCallback(complete, this.tip, this._isAnimated());
-    }
-    hide() {
-      if (!this._isShown()) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      const tip = this._getTipElement();
-      tip.classList.remove(CLASS_NAME_SHOW$2);
-
-      // If this is a touch-enabled device we remove the extra
-      // empty mouseover listeners we added for iOS support
-      if ('ontouchstart' in document.documentElement) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.off(element, 'mouseover', noop);
-        }
-      }
-      this._activeTrigger[TRIGGER_CLICK] = false;
-      this._activeTrigger[TRIGGER_FOCUS] = false;
-      this._activeTrigger[TRIGGER_HOVER] = false;
-      this._isHovered = null; // it is a trick to support manual triggering
-
-      const complete = () => {
-        if (this._isWithActiveTrigger()) {
-          return;
-        }
-        if (!this._isHovered) {
-          this._disposePopper();
-        }
-        this._element.removeAttribute('aria-describedby');
-        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
-      };
-      this._queueCallback(complete, this.tip, this._isAnimated());
-    }
-    update() {
-      if (this._popper) {
-        this._popper.update();
-      }
-    }
-
-    // Protected
-    _isWithContent() {
-      return Boolean(this._getTitle());
-    }
-    _getTipElement() {
-      if (!this.tip) {
-        this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
-      }
-      return this.tip;
-    }
-    _createTipElement(content) {
-      const tip = this._getTemplateFactory(content).toHtml();
-
-      // TODO: remove this check in v6
-      if (!tip) {
-        return null;
-      }
-      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
-      // TODO: v6 the following can be achieved with CSS only
-      tip.classList.add(`bs-${this.constructor.NAME}-auto`);
-      const tipId = getUID(this.constructor.NAME).toString();
-      tip.setAttribute('id', tipId);
-      if (this._isAnimated()) {
-        tip.classList.add(CLASS_NAME_FADE$2);
-      }
-      return tip;
-    }
-    setContent(content) {
-      this._newContent = content;
-      if (this._isShown()) {
-        this._disposePopper();
-        this.show();
-      }
-    }
-    _getTemplateFactory(content) {
-      if (this._templateFactory) {
-        this._templateFactory.changeContent(content);
-      } else {
-        this._templateFactory = new TemplateFactory({
-          ...this._config,
-          // the `content` var has to be after `this._config`
-          // to override config.content in case of popover
-          content,
-          extraClass: this._resolvePossibleFunction(this._config.customClass)
-        });
-      }
-      return this._templateFactory;
-    }
-    _getContentForTemplate() {
-      return {
-        [SELECTOR_TOOLTIP_INNER]: this._getTitle()
-      };
-    }
-    _getTitle() {
-      return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
-    }
-
-    // Private
-    _initializeOnDelegatedTarget(event) {
-      return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
-    }
-    _isAnimated() {
-      return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
-    }
-    _isShown() {
-      return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
-    }
-    _createPopper(tip) {
-      const placement = execute(this._config.placement, [this, tip, this._element]);
-      const attachment = AttachmentMap[placement.toUpperCase()];
-      return createPopper(this._element, tip, this._getPopperConfig(attachment));
-    }
-    _getOffset() {
-      const {
-        offset
-      } = this._config;
-      if (typeof offset === 'string') {
-        return offset.split(',').map(value => Number.parseInt(value, 10));
-      }
-      if (typeof offset === 'function') {
-        return popperData => offset(popperData, this._element);
-      }
-      return offset;
-    }
-    _resolvePossibleFunction(arg) {
-      return execute(arg, [this._element]);
-    }
-    _getPopperConfig(attachment) {
-      const defaultBsPopperConfig = {
-        placement: attachment,
-        modifiers: [{
-          name: 'flip',
-          options: {
-            fallbackPlacements: this._config.fallbackPlacements
-          }
-        }, {
-          name: 'offset',
-          options: {
-            offset: this._getOffset()
-          }
-        }, {
-          name: 'preventOverflow',
-          options: {
-            boundary: this._config.boundary
-          }
-        }, {
-          name: 'arrow',
-          options: {
-            element: `.${this.constructor.NAME}-arrow`
-          }
-        }, {
-          name: 'preSetPlacement',
-          enabled: true,
-          phase: 'beforeMain',
-          fn: data => {
-            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
-            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
-            this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
-          }
-        }]
-      };
-      return {
-        ...defaultBsPopperConfig,
-        ...execute(this._config.popperConfig, [defaultBsPopperConfig])
-      };
-    }
-    _setListeners() {
-      const triggers = this._config.trigger.split(' ');
-      for (const trigger of triggers) {
-        if (trigger === 'click') {
-          EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
-            const context = this._initializeOnDelegatedTarget(event);
-            context.toggle();
-          });
-        } else if (trigger !== TRIGGER_MANUAL) {
-          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
-          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
-          EventHandler.on(this._element, eventIn, this._config.selector, event => {
-            const context = this._initializeOnDelegatedTarget(event);
-            context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
-            context._enter();
-          });
-          EventHandler.on(this._element, eventOut, this._config.selector, event => {
-            const context = this._initializeOnDelegatedTarget(event);
-            context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
-            context._leave();
-          });
-        }
-      }
-      this._hideModalHandler = () => {
-        if (this._element) {
-          this.hide();
-        }
-      };
-      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-    }
-    _fixTitle() {
-      const title = this._element.getAttribute('title');
-      if (!title) {
-        return;
-      }
-      if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
-        this._element.setAttribute('aria-label', title);
-      }
-      this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
-      this._element.removeAttribute('title');
-    }
-    _enter() {
-      if (this._isShown() || this._isHovered) {
-        this._isHovered = true;
-        return;
-      }
-      this._isHovered = true;
-      this._setTimeout(() => {
-        if (this._isHovered) {
-          this.show();
-        }
-      }, this._config.delay.show);
-    }
-    _leave() {
-      if (this._isWithActiveTrigger()) {
-        return;
-      }
-      this._isHovered = false;
-      this._setTimeout(() => {
-        if (!this._isHovered) {
-          this.hide();
-        }
-      }, this._config.delay.hide);
-    }
-    _setTimeout(handler, timeout) {
-      clearTimeout(this._timeout);
-      this._timeout = setTimeout(handler, timeout);
-    }
-    _isWithActiveTrigger() {
-      return Object.values(this._activeTrigger).includes(true);
-    }
-    _getConfig(config) {
-      const dataAttributes = Manipulator.getDataAttributes(this._element);
-      for (const dataAttribute of Object.keys(dataAttributes)) {
-        if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
-          delete dataAttributes[dataAttribute];
-        }
-      }
-      config = {
-        ...dataAttributes,
-        ...(typeof config === 'object' && config ? config : {})
-      };
-      config = this._mergeConfigObj(config);
-      config = this._configAfterMerge(config);
-      this._typeCheckConfig(config);
-      return config;
-    }
-    _configAfterMerge(config) {
-      config.container = config.container === false ? document.body : getElement(config.container);
-      if (typeof config.delay === 'number') {
-        config.delay = {
-          show: config.delay,
-          hide: config.delay
-        };
-      }
-      if (typeof config.title === 'number') {
-        config.title = config.title.toString();
-      }
-      if (typeof config.content === 'number') {
-        config.content = config.content.toString();
-      }
-      return config;
-    }
-    _getDelegateConfig() {
-      const config = {};
-      for (const [key, value] of Object.entries(this._config)) {
-        if (this.constructor.Default[key] !== value) {
-          config[key] = value;
-        }
-      }
-      config.selector = false;
-      config.trigger = 'manual';
-
-      // In the future can be replaced with:
-      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
-      // `Object.fromEntries(keysWithDifferentValues)`
-      return config;
-    }
-    _disposePopper() {
-      if (this._popper) {
-        this._popper.destroy();
-        this._popper = null;
-      }
-      if (this.tip) {
-        this.tip.remove();
-        this.tip = null;
-      }
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Tooltip.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Tooltip);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap popover.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$3 = 'popover';
-  const SELECTOR_TITLE = '.popover-header';
-  const SELECTOR_CONTENT = '.popover-body';
-  const Default$2 = {
-    ...Tooltip.Default,
-    content: '',
-    offset: [0, 8],
-    placement: 'right',
-    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
-    trigger: 'click'
-  };
-  const DefaultType$2 = {
-    ...Tooltip.DefaultType,
-    content: '(null|string|element|function)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Popover extends Tooltip {
-    // Getters
-    static get Default() {
-      return Default$2;
-    }
-    static get DefaultType() {
-      return DefaultType$2;
-    }
-    static get NAME() {
-      return NAME$3;
-    }
-
-    // Overrides
-    _isWithContent() {
-      return this._getTitle() || this._getContent();
-    }
-
-    // Private
-    _getContentForTemplate() {
-      return {
-        [SELECTOR_TITLE]: this._getTitle(),
-        [SELECTOR_CONTENT]: this._getContent()
-      };
-    }
-    _getContent() {
-      return this._resolvePossibleFunction(this._config.content);
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Popover.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Popover);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap scrollspy.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$2 = 'scrollspy';
-  const DATA_KEY$2 = 'bs.scrollspy';
-  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
-  const DATA_API_KEY = '.data-api';
-  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
-  const EVENT_CLICK = `click${EVENT_KEY$2}`;
-  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
-  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
-  const CLASS_NAME_ACTIVE$1 = 'active';
-  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
-  const SELECTOR_TARGET_LINKS = '[href]';
-  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
-  const SELECTOR_NAV_LINKS = '.nav-link';
-  const SELECTOR_NAV_ITEMS = '.nav-item';
-  const SELECTOR_LIST_ITEMS = '.list-group-item';
-  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
-  const SELECTOR_DROPDOWN = '.dropdown';
-  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
-  const Default$1 = {
-    offset: null,
-    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
-    rootMargin: '0px 0px -25%',
-    smoothScroll: false,
-    target: null,
-    threshold: [0.1, 0.5, 1]
-  };
-  const DefaultType$1 = {
-    offset: '(number|null)',
-    // TODO v6 @deprecated, keep it for backwards compatibility reasons
-    rootMargin: 'string',
-    smoothScroll: 'boolean',
-    target: 'element',
-    threshold: 'array'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class ScrollSpy extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-
-      // this._element is the observablesContainer and config.target the menu links wrapper
-      this._targetLinks = new Map();
-      this._observableSections = new Map();
-      this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
-      this._activeTarget = null;
-      this._observer = null;
-      this._previousScrollData = {
-        visibleEntryTop: 0,
-        parentScrollTop: 0
-      };
-      this.refresh(); // initialize
-    }
-
-    // Getters
-    static get Default() {
-      return Default$1;
-    }
-    static get DefaultType() {
-      return DefaultType$1;
-    }
-    static get NAME() {
-      return NAME$2;
-    }
-
-    // Public
-    refresh() {
-      this._initializeTargetsAndObservables();
-      this._maybeEnableSmoothScroll();
-      if (this._observer) {
-        this._observer.disconnect();
-      } else {
-        this._observer = this._getNewObserver();
-      }
-      for (const section of this._observableSections.values()) {
-        this._observer.observe(section);
-      }
-    }
-    dispose() {
-      this._observer.disconnect();
-      super.dispose();
-    }
-
-    // Private
-    _configAfterMerge(config) {
-      // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
-      config.target = getElement(config.target) || document.body;
-
-      // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
-      config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
-      if (typeof config.threshold === 'string') {
-        config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
-      }
-      return config;
-    }
-    _maybeEnableSmoothScroll() {
-      if (!this._config.smoothScroll) {
-        return;
-      }
-
-      // unregister any previous listeners
-      EventHandler.off(this._config.target, EVENT_CLICK);
-      EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
-        const observableSection = this._observableSections.get(event.target.hash);
-        if (observableSection) {
-          event.preventDefault();
-          const root = this._rootElement || window;
-          const height = observableSection.offsetTop - this._element.offsetTop;
-          if (root.scrollTo) {
-            root.scrollTo({
-              top: height,
-              behavior: 'smooth'
-            });
-            return;
-          }
-
-          // Chrome 60 doesn't support `scrollTo`
-          root.scrollTop = height;
-        }
-      });
-    }
-    _getNewObserver() {
-      const options = {
-        root: this._rootElement,
-        threshold: this._config.threshold,
-        rootMargin: this._config.rootMargin
-      };
-      return new IntersectionObserver(entries => this._observerCallback(entries), options);
-    }
-
-    // The logic of selection
-    _observerCallback(entries) {
-      const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
-      const activate = entry => {
-        this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
-        this._process(targetElement(entry));
-      };
-      const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
-      const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
-      this._previousScrollData.parentScrollTop = parentScrollTop;
-      for (const entry of entries) {
-        if (!entry.isIntersecting) {
-          this._activeTarget = null;
-          this._clearActiveClass(targetElement(entry));
-          continue;
-        }
-        const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
-        // if we are scrolling down, pick the bigger offsetTop
-        if (userScrollsDown && entryIsLowerThanPrevious) {
-          activate(entry);
-          // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
-          if (!parentScrollTop) {
-            return;
-          }
-          continue;
-        }
-
-        // if we are scrolling up, pick the smallest offsetTop
-        if (!userScrollsDown && !entryIsLowerThanPrevious) {
-          activate(entry);
-        }
-      }
-    }
-    _initializeTargetsAndObservables() {
-      this._targetLinks = new Map();
-      this._observableSections = new Map();
-      const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
-      for (const anchor of targetLinks) {
-        // ensure that the anchor has an id and is not disabled
-        if (!anchor.hash || isDisabled(anchor)) {
-          continue;
-        }
-        const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
-
-        // ensure that the observableSection exists & is visible
-        if (isVisible(observableSection)) {
-          this._targetLinks.set(decodeURI(anchor.hash), anchor);
-          this._observableSections.set(anchor.hash, observableSection);
-        }
-      }
-    }
-    _process(target) {
-      if (this._activeTarget === target) {
-        return;
-      }
-      this._clearActiveClass(this._config.target);
-      this._activeTarget = target;
-      target.classList.add(CLASS_NAME_ACTIVE$1);
-      this._activateParents(target);
-      EventHandler.trigger(this._element, EVENT_ACTIVATE, {
-        relatedTarget: target
-      });
-    }
-    _activateParents(target) {
-      // Activate dropdown parents
-      if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
-        return;
-      }
-      for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
-        // Set triggered links parents as active
-        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
-        for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
-          item.classList.add(CLASS_NAME_ACTIVE$1);
-        }
-      }
-    }
-    _clearActiveClass(parent) {
-      parent.classList.remove(CLASS_NAME_ACTIVE$1);
-      const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
-      for (const node of activeNodes) {
-        node.classList.remove(CLASS_NAME_ACTIVE$1);
-      }
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = ScrollSpy.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
-    for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
-      ScrollSpy.getOrCreateInstance(spy);
-    }
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(ScrollSpy);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap tab.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$1 = 'tab';
-  const DATA_KEY$1 = 'bs.tab';
-  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
-  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
-  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
-  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
-  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
-  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
-  const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
-  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
-  const ARROW_LEFT_KEY = 'ArrowLeft';
-  const ARROW_RIGHT_KEY = 'ArrowRight';
-  const ARROW_UP_KEY = 'ArrowUp';
-  const ARROW_DOWN_KEY = 'ArrowDown';
-  const HOME_KEY = 'Home';
-  const END_KEY = 'End';
-  const CLASS_NAME_ACTIVE = 'active';
-  const CLASS_NAME_FADE$1 = 'fade';
-  const CLASS_NAME_SHOW$1 = 'show';
-  const CLASS_DROPDOWN = 'dropdown';
-  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
-  const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
-  const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';
-  const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
-  const SELECTOR_OUTER = '.nav-item, .list-group-item';
-  const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
-  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
-  const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
-  const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
-
-  /**
-   * Class definition
-   */
-
-  class Tab extends BaseComponent {
-    constructor(element) {
-      super(element);
-      this._parent = this._element.closest(SELECTOR_TAB_PANEL);
-      if (!this._parent) {
-        return;
-        // TODO: should throw exception in v6
-        // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
-      }
-
-      // Set up initial aria attributes
-      this._setInitialAttributes(this._parent, this._getChildren());
-      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
-    }
-
-    // Getters
-    static get NAME() {
-      return NAME$1;
-    }
-
-    // Public
-    show() {
-      // Shows this elem and deactivate the active sibling if exists
-      const innerElem = this._element;
-      if (this._elemIsActive(innerElem)) {
-        return;
-      }
-
-      // Search for active tab on same parent to deactivate it
-      const active = this._getActiveElem();
-      const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
-        relatedTarget: innerElem
-      }) : null;
-      const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
-        relatedTarget: active
-      });
-      if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
-        return;
-      }
-      this._deactivate(active, innerElem);
-      this._activate(innerElem, active);
-    }
-
-    // Private
-    _activate(element, relatedElem) {
-      if (!element) {
-        return;
-      }
-      element.classList.add(CLASS_NAME_ACTIVE);
-      this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
-
-      const complete = () => {
-        if (element.getAttribute('role') !== 'tab') {
-          element.classList.add(CLASS_NAME_SHOW$1);
-          return;
-        }
-        element.removeAttribute('tabindex');
-        element.setAttribute('aria-selected', true);
-        this._toggleDropDown(element, true);
-        EventHandler.trigger(element, EVENT_SHOWN$1, {
-          relatedTarget: relatedElem
-        });
-      };
-      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
-    }
-    _deactivate(element, relatedElem) {
-      if (!element) {
-        return;
-      }
-      element.classList.remove(CLASS_NAME_ACTIVE);
-      element.blur();
-      this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
-
-      const complete = () => {
-        if (element.getAttribute('role') !== 'tab') {
-          element.classList.remove(CLASS_NAME_SHOW$1);
-          return;
-        }
-        element.setAttribute('aria-selected', false);
-        element.setAttribute('tabindex', '-1');
-        this._toggleDropDown(element, false);
-        EventHandler.trigger(element, EVENT_HIDDEN$1, {
-          relatedTarget: relatedElem
-        });
-      };
-      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
-    }
-    _keydown(event) {
-      if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
-        return;
-      }
-      event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
-      event.preventDefault();
-      const children = this._getChildren().filter(element => !isDisabled(element));
-      let nextActiveElement;
-      if ([HOME_KEY, END_KEY].includes(event.key)) {
-        nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
-      } else {
-        const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
-        nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
-      }
-      if (nextActiveElement) {
-        nextActiveElement.focus({
-          preventScroll: true
-        });
-        Tab.getOrCreateInstance(nextActiveElement).show();
-      }
-    }
-    _getChildren() {
-      // collection of inner elements
-      return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
-    }
-    _getActiveElem() {
-      return this._getChildren().find(child => this._elemIsActive(child)) || null;
-    }
-    _setInitialAttributes(parent, children) {
-      this._setAttributeIfNotExists(parent, 'role', 'tablist');
-      for (const child of children) {
-        this._setInitialAttributesOnChild(child);
-      }
-    }
-    _setInitialAttributesOnChild(child) {
-      child = this._getInnerElement(child);
-      const isActive = this._elemIsActive(child);
-      const outerElem = this._getOuterElement(child);
-      child.setAttribute('aria-selected', isActive);
-      if (outerElem !== child) {
-        this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
-      }
-      if (!isActive) {
-        child.setAttribute('tabindex', '-1');
-      }
-      this._setAttributeIfNotExists(child, 'role', 'tab');
-
-      // set attributes to the related panel too
-      this._setInitialAttributesOnTargetPanel(child);
-    }
-    _setInitialAttributesOnTargetPanel(child) {
-      const target = SelectorEngine.getElementFromSelector(child);
-      if (!target) {
-        return;
-      }
-      this._setAttributeIfNotExists(target, 'role', 'tabpanel');
-      if (child.id) {
-        this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
-      }
-    }
-    _toggleDropDown(element, open) {
-      const outerElem = this._getOuterElement(element);
-      if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
-        return;
-      }
-      const toggle = (selector, className) => {
-        const element = SelectorEngine.findOne(selector, outerElem);
-        if (element) {
-          element.classList.toggle(className, open);
-        }
-      };
-      toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
-      toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
-      outerElem.setAttribute('aria-expanded', open);
-    }
-    _setAttributeIfNotExists(element, attribute, value) {
-      if (!element.hasAttribute(attribute)) {
-        element.setAttribute(attribute, value);
-      }
-    }
-    _elemIsActive(elem) {
-      return elem.classList.contains(CLASS_NAME_ACTIVE);
-    }
-
-    // Try to get the inner element (usually the .nav-link)
-    _getInnerElement(elem) {
-      return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
-    }
-
-    // Try to get the outer element (usually the .nav-item)
-    _getOuterElement(elem) {
-      return elem.closest(SELECTOR_OUTER) || elem;
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Tab.getOrCreateInstance(this);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    if (isDisabled(this)) {
-      return;
-    }
-    Tab.getOrCreateInstance(this).show();
-  });
-
-  /**
-   * Initialize on focus
-   */
-  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
-    for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
-      Tab.getOrCreateInstance(element);
-    }
-  });
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Tab);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap toast.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME = 'toast';
-  const DATA_KEY = 'bs.toast';
-  const EVENT_KEY = `.${DATA_KEY}`;
-  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
-  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
-  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
-  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
-  const EVENT_HIDE = `hide${EVENT_KEY}`;
-  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
-  const EVENT_SHOW = `show${EVENT_KEY}`;
-  const EVENT_SHOWN = `shown${EVENT_KEY}`;
-  const CLASS_NAME_FADE = 'fade';
-  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
-  const CLASS_NAME_SHOW = 'show';
-  const CLASS_NAME_SHOWING = 'showing';
-  const DefaultType = {
-    animation: 'boolean',
-    autohide: 'boolean',
-    delay: 'number'
-  };
-  const Default = {
-    animation: true,
-    autohide: true,
-    delay: 5000
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Toast extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._timeout = null;
-      this._hasMouseInteraction = false;
-      this._hasKeyboardInteraction = false;
-      this._setListeners();
-    }
-
-    // Getters
-    static get Default() {
-      return Default;
-    }
-    static get DefaultType() {
-      return DefaultType;
-    }
-    static get NAME() {
-      return NAME;
-    }
-
-    // Public
-    show() {
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._clearTimeout();
-      if (this._config.animation) {
-        this._element.classList.add(CLASS_NAME_FADE);
-      }
-      const complete = () => {
-        this._element.classList.remove(CLASS_NAME_SHOWING);
-        EventHandler.trigger(this._element, EVENT_SHOWN);
-        this._maybeScheduleHide();
-      };
-      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
-      reflow(this._element);
-      this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
-      this._queueCallback(complete, this._element, this._config.animation);
-    }
-    hide() {
-      if (!this.isShown()) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      const complete = () => {
-        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
-        this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
-        EventHandler.trigger(this._element, EVENT_HIDDEN);
-      };
-      this._element.classList.add(CLASS_NAME_SHOWING);
-      this._queueCallback(complete, this._element, this._config.animation);
-    }
-    dispose() {
-      this._clearTimeout();
-      if (this.isShown()) {
-        this._element.classList.remove(CLASS_NAME_SHOW);
-      }
-      super.dispose();
-    }
-    isShown() {
-      return this._element.classList.contains(CLASS_NAME_SHOW);
-    }
-
-    // Private
-
-    _maybeScheduleHide() {
-      if (!this._config.autohide) {
-        return;
-      }
-      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
-        return;
-      }
-      this._timeout = setTimeout(() => {
-        this.hide();
-      }, this._config.delay);
-    }
-    _onInteraction(event, isInteracting) {
-      switch (event.type) {
-        case 'mouseover':
-        case 'mouseout':
-          {
-            this._hasMouseInteraction = isInteracting;
-            break;
-          }
-        case 'focusin':
-        case 'focusout':
-          {
-            this._hasKeyboardInteraction = isInteracting;
-            break;
-          }
-      }
-      if (isInteracting) {
-        this._clearTimeout();
-        return;
-      }
-      const nextElement = event.relatedTarget;
-      if (this._element === nextElement || this._element.contains(nextElement)) {
-        return;
-      }
-      this._maybeScheduleHide();
-    }
-    _setListeners() {
-      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
-      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
-      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
-      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
-    }
-    _clearTimeout() {
-      clearTimeout(this._timeout);
-      this._timeout = null;
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Toast.getOrCreateInstance(this, config);
-        if (typeof config === 'string') {
-          if (typeof data[config] === 'undefined') {
-            throw new TypeError(`No method named "${config}"`);
-          }
-          data[config](this);
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  enableDismissTrigger(Toast);
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Toast);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap index.umd.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const index_umd = {
-    Alert,
-    Button,
-    Carousel,
-    Collapse,
-    Dropdown,
-    Modal,
-    Offcanvas,
-    Popover,
-    ScrollSpy,
-    Tab,
-    Toast,
-    Tooltip
-  };
-
-  return index_umd;
-
-}));
-//# sourceMappingURL=bootstrap.bundle.js.map

File diff suppressed because it is too large
+ 0 - 0
public/libs/bootstrap/dist/js/bootstrap.bundle.js.map


File diff suppressed because it is too large
+ 0 - 5
public/libs/bootstrap/dist/js/bootstrap.bundle.min.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/bootstrap/dist/js/bootstrap.bundle.min.js.map


+ 0 - 4447
public/libs/bootstrap/dist/js/bootstrap.esm.js

@@ -1,4447 +0,0 @@
-/*!
-  * Bootstrap v5.3.1 (https://getbootstrap.com/)
-  * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */
-import * as Popper from '@popperjs/core';
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dom/data.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-/**
- * Constants
- */
-
-const elementMap = new Map();
-const Data = {
-  set(element, key, instance) {
-    if (!elementMap.has(element)) {
-      elementMap.set(element, new Map());
-    }
-    const instanceMap = elementMap.get(element);
-
-    // make it clear we only want one instance per element
-    // can be removed later when multiple key/instances are fine to be used
-    if (!instanceMap.has(key) && instanceMap.size !== 0) {
-      // eslint-disable-next-line no-console
-      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
-      return;
-    }
-    instanceMap.set(key, instance);
-  },
-  get(element, key) {
-    if (elementMap.has(element)) {
-      return elementMap.get(element).get(key) || null;
-    }
-    return null;
-  },
-  remove(element, key) {
-    if (!elementMap.has(element)) {
-      return;
-    }
-    const instanceMap = elementMap.get(element);
-    instanceMap.delete(key);
-
-    // free up element references if there are no instances left for an element
-    if (instanceMap.size === 0) {
-      elementMap.delete(element);
-    }
-  }
-};
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/index.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-const MAX_UID = 1000000;
-const MILLISECONDS_MULTIPLIER = 1000;
-const TRANSITION_END = 'transitionend';
-
-/**
- * Properly escape IDs selectors to handle weird IDs
- * @param {string} selector
- * @returns {string}
- */
-const parseSelector = selector => {
-  if (selector && window.CSS && window.CSS.escape) {
-    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /
-    selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
-  }
-  return selector;
-};
-
-// Shout-out Angus Croll (https://goo.gl/pxwQGp)
-const toType = object => {
-  if (object === null || object === undefined) {
-    return `${object}`;
-  }
-  return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
-};
-
-/**
- * Public Util API
- */
-
-const getUID = prefix => {
-  do {
-    prefix += Math.floor(Math.random() * MAX_UID);
-  } while (document.getElementById(prefix));
-  return prefix;
-};
-const getTransitionDurationFromElement = element => {
-  if (!element) {
-    return 0;
-  }
-
-  // Get transition-duration of the element
-  let {
-    transitionDuration,
-    transitionDelay
-  } = window.getComputedStyle(element);
-  const floatTransitionDuration = Number.parseFloat(transitionDuration);
-  const floatTransitionDelay = Number.parseFloat(transitionDelay);
-
-  // Return 0 if element or transition duration is not found
-  if (!floatTransitionDuration && !floatTransitionDelay) {
-    return 0;
-  }
-
-  // If multiple durations are defined, take the first
-  transitionDuration = transitionDuration.split(',')[0];
-  transitionDelay = transitionDelay.split(',')[0];
-  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
-};
-const triggerTransitionEnd = element => {
-  element.dispatchEvent(new Event(TRANSITION_END));
-};
-const isElement = object => {
-  if (!object || typeof object !== 'object') {
-    return false;
-  }
-  if (typeof object.jquery !== 'undefined') {
-    object = object[0];
-  }
-  return typeof object.nodeType !== 'undefined';
-};
-const getElement = object => {
-  // it's a jQuery object or a node element
-  if (isElement(object)) {
-    return object.jquery ? object[0] : object;
-  }
-  if (typeof object === 'string' && object.length > 0) {
-    return document.querySelector(parseSelector(object));
-  }
-  return null;
-};
-const isVisible = element => {
-  if (!isElement(element) || element.getClientRects().length === 0) {
-    return false;
-  }
-  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
-  // Handle `details` element as its content may falsie appear visible when it is closed
-  const closedDetails = element.closest('details:not([open])');
-  if (!closedDetails) {
-    return elementIsVisible;
-  }
-  if (closedDetails !== element) {
-    const summary = element.closest('summary');
-    if (summary && summary.parentNode !== closedDetails) {
-      return false;
-    }
-    if (summary === null) {
-      return false;
-    }
-  }
-  return elementIsVisible;
-};
-const isDisabled = element => {
-  if (!element || element.nodeType !== Node.ELEMENT_NODE) {
-    return true;
-  }
-  if (element.classList.contains('disabled')) {
-    return true;
-  }
-  if (typeof element.disabled !== 'undefined') {
-    return element.disabled;
-  }
-  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
-};
-const findShadowRoot = element => {
-  if (!document.documentElement.attachShadow) {
-    return null;
-  }
-
-  // Can find the shadow root otherwise it'll return the document
-  if (typeof element.getRootNode === 'function') {
-    const root = element.getRootNode();
-    return root instanceof ShadowRoot ? root : null;
-  }
-  if (element instanceof ShadowRoot) {
-    return element;
-  }
-
-  // when we don't find a shadow root
-  if (!element.parentNode) {
-    return null;
-  }
-  return findShadowRoot(element.parentNode);
-};
-const noop = () => {};
-
-/**
- * Trick to restart an element's animation
- *
- * @param {HTMLElement} element
- * @return void
- *
- * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
- */
-const reflow = element => {
-  element.offsetHeight; // eslint-disable-line no-unused-expressions
-};
-
-const getjQuery = () => {
-  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
-    return window.jQuery;
-  }
-  return null;
-};
-const DOMContentLoadedCallbacks = [];
-const onDOMContentLoaded = callback => {
-  if (document.readyState === 'loading') {
-    // add listener on the first call when the document is in loading state
-    if (!DOMContentLoadedCallbacks.length) {
-      document.addEventListener('DOMContentLoaded', () => {
-        for (const callback of DOMContentLoadedCallbacks) {
-          callback();
-        }
-      });
-    }
-    DOMContentLoadedCallbacks.push(callback);
-  } else {
-    callback();
-  }
-};
-const isRTL = () => document.documentElement.dir === 'rtl';
-const defineJQueryPlugin = plugin => {
-  onDOMContentLoaded(() => {
-    const $ = getjQuery();
-    /* istanbul ignore if */
-    if ($) {
-      const name = plugin.NAME;
-      const JQUERY_NO_CONFLICT = $.fn[name];
-      $.fn[name] = plugin.jQueryInterface;
-      $.fn[name].Constructor = plugin;
-      $.fn[name].noConflict = () => {
-        $.fn[name] = JQUERY_NO_CONFLICT;
-        return plugin.jQueryInterface;
-      };
-    }
-  });
-};
-const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
-  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;
-};
-const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
-  if (!waitForTransition) {
-    execute(callback);
-    return;
-  }
-  const durationPadding = 5;
-  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
-  let called = false;
-  const handler = ({
-    target
-  }) => {
-    if (target !== transitionElement) {
-      return;
-    }
-    called = true;
-    transitionElement.removeEventListener(TRANSITION_END, handler);
-    execute(callback);
-  };
-  transitionElement.addEventListener(TRANSITION_END, handler);
-  setTimeout(() => {
-    if (!called) {
-      triggerTransitionEnd(transitionElement);
-    }
-  }, emulatedDuration);
-};
-
-/**
- * Return the previous/next element of a list.
- *
- * @param {array} list    The list of elements
- * @param activeElement   The active element
- * @param shouldGetNext   Choose to get next or previous element
- * @param isCycleAllowed
- * @return {Element|elem} The proper element
- */
-const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
-  const listLength = list.length;
-  let index = list.indexOf(activeElement);
-
-  // if the element does not exist in the list return an element
-  // depending on the direction and if cycle is allowed
-  if (index === -1) {
-    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
-  }
-  index += shouldGetNext ? 1 : -1;
-  if (isCycleAllowed) {
-    index = (index + listLength) % listLength;
-  }
-  return list[Math.max(0, Math.min(index, listLength - 1))];
-};
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dom/event-handler.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
-const stripNameRegex = /\..*/;
-const stripUidRegex = /::\d+$/;
-const eventRegistry = {}; // Events storage
-let uidEvent = 1;
-const customEvents = {
-  mouseenter: 'mouseover',
-  mouseleave: 'mouseout'
-};
-const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
-
-/**
- * Private methods
- */
-
-function makeEventUid(element, uid) {
-  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
-}
-function getElementEvents(element) {
-  const uid = makeEventUid(element);
-  element.uidEvent = uid;
-  eventRegistry[uid] = eventRegistry[uid] || {};
-  return eventRegistry[uid];
-}
-function bootstrapHandler(element, fn) {
-  return function handler(event) {
-    hydrateObj(event, {
-      delegateTarget: element
-    });
-    if (handler.oneOff) {
-      EventHandler.off(element, event.type, fn);
-    }
-    return fn.apply(element, [event]);
-  };
-}
-function bootstrapDelegationHandler(element, selector, fn) {
-  return function handler(event) {
-    const domElements = element.querySelectorAll(selector);
-    for (let {
-      target
-    } = event; target && target !== this; target = target.parentNode) {
-      for (const domElement of domElements) {
-        if (domElement !== target) {
-          continue;
-        }
-        hydrateObj(event, {
-          delegateTarget: target
-        });
-        if (handler.oneOff) {
-          EventHandler.off(element, event.type, selector, fn);
-        }
-        return fn.apply(target, [event]);
-      }
-    }
-  };
-}
-function findHandler(events, callable, delegationSelector = null) {
-  return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
-}
-function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
-  const isDelegated = typeof handler === 'string';
-  // TODO: tooltip passes `false` instead of selector, so we need to check
-  const callable = isDelegated ? delegationFunction : handler || delegationFunction;
-  let typeEvent = getTypeEvent(originalTypeEvent);
-  if (!nativeEvents.has(typeEvent)) {
-    typeEvent = originalTypeEvent;
-  }
-  return [isDelegated, callable, typeEvent];
-}
-function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
-  if (typeof originalTypeEvent !== 'string' || !element) {
-    return;
-  }
-  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
-
-  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
-  // this prevents the handler from being dispatched the same way as mouseover or mouseout does
-  if (originalTypeEvent in customEvents) {
-    const wrapFunction = fn => {
-      return function (event) {
-        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
-          return fn.call(this, event);
-        }
-      };
-    };
-    callable = wrapFunction(callable);
-  }
-  const events = getElementEvents(element);
-  const handlers = events[typeEvent] || (events[typeEvent] = {});
-  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
-  if (previousFunction) {
-    previousFunction.oneOff = previousFunction.oneOff && oneOff;
-    return;
-  }
-  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
-  const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
-  fn.delegationSelector = isDelegated ? handler : null;
-  fn.callable = callable;
-  fn.oneOff = oneOff;
-  fn.uidEvent = uid;
-  handlers[uid] = fn;
-  element.addEventListener(typeEvent, fn, isDelegated);
-}
-function removeHandler(element, events, typeEvent, handler, delegationSelector) {
-  const fn = findHandler(events[typeEvent], handler, delegationSelector);
-  if (!fn) {
-    return;
-  }
-  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
-  delete events[typeEvent][fn.uidEvent];
-}
-function removeNamespacedHandlers(element, events, typeEvent, namespace) {
-  const storeElementEvent = events[typeEvent] || {};
-  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
-    if (handlerKey.includes(namespace)) {
-      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
-    }
-  }
-}
-function getTypeEvent(event) {
-  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
-  event = event.replace(stripNameRegex, '');
-  return customEvents[event] || event;
-}
-const EventHandler = {
-  on(element, event, handler, delegationFunction) {
-    addHandler(element, event, handler, delegationFunction, false);
-  },
-  one(element, event, handler, delegationFunction) {
-    addHandler(element, event, handler, delegationFunction, true);
-  },
-  off(element, originalTypeEvent, handler, delegationFunction) {
-    if (typeof originalTypeEvent !== 'string' || !element) {
-      return;
-    }
-    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
-    const inNamespace = typeEvent !== originalTypeEvent;
-    const events = getElementEvents(element);
-    const storeElementEvent = events[typeEvent] || {};
-    const isNamespace = originalTypeEvent.startsWith('.');
-    if (typeof callable !== 'undefined') {
-      // Simplest case: handler is passed, remove that listener ONLY.
-      if (!Object.keys(storeElementEvent).length) {
-        return;
-      }
-      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
-      return;
-    }
-    if (isNamespace) {
-      for (const elementEvent of Object.keys(events)) {
-        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
-      }
-    }
-    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
-      const handlerKey = keyHandlers.replace(stripUidRegex, '');
-      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
-        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
-      }
-    }
-  },
-  trigger(element, event, args) {
-    if (typeof event !== 'string' || !element) {
-      return null;
-    }
-    const $ = getjQuery();
-    const typeEvent = getTypeEvent(event);
-    const inNamespace = event !== typeEvent;
-    let jQueryEvent = null;
-    let bubbles = true;
-    let nativeDispatch = true;
-    let defaultPrevented = false;
-    if (inNamespace && $) {
-      jQueryEvent = $.Event(event, args);
-      $(element).trigger(jQueryEvent);
-      bubbles = !jQueryEvent.isPropagationStopped();
-      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
-      defaultPrevented = jQueryEvent.isDefaultPrevented();
-    }
-    const evt = hydrateObj(new Event(event, {
-      bubbles,
-      cancelable: true
-    }), args);
-    if (defaultPrevented) {
-      evt.preventDefault();
-    }
-    if (nativeDispatch) {
-      element.dispatchEvent(evt);
-    }
-    if (evt.defaultPrevented && jQueryEvent) {
-      jQueryEvent.preventDefault();
-    }
-    return evt;
-  }
-};
-function hydrateObj(obj, meta = {}) {
-  for (const [key, value] of Object.entries(meta)) {
-    try {
-      obj[key] = value;
-    } catch (_unused) {
-      Object.defineProperty(obj, key, {
-        configurable: true,
-        get() {
-          return value;
-        }
-      });
-    }
-  }
-  return obj;
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dom/manipulator.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-function normalizeData(value) {
-  if (value === 'true') {
-    return true;
-  }
-  if (value === 'false') {
-    return false;
-  }
-  if (value === Number(value).toString()) {
-    return Number(value);
-  }
-  if (value === '' || value === 'null') {
-    return null;
-  }
-  if (typeof value !== 'string') {
-    return value;
-  }
-  try {
-    return JSON.parse(decodeURIComponent(value));
-  } catch (_unused) {
-    return value;
-  }
-}
-function normalizeDataKey(key) {
-  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
-}
-const Manipulator = {
-  setDataAttribute(element, key, value) {
-    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
-  },
-  removeDataAttribute(element, key) {
-    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
-  },
-  getDataAttributes(element) {
-    if (!element) {
-      return {};
-    }
-    const attributes = {};
-    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
-    for (const key of bsKeys) {
-      let pureKey = key.replace(/^bs/, '');
-      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
-      attributes[pureKey] = normalizeData(element.dataset[key]);
-    }
-    return attributes;
-  },
-  getDataAttribute(element, key) {
-    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
-  }
-};
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/config.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Class definition
- */
-
-class Config {
-  // Getters
-  static get Default() {
-    return {};
-  }
-  static get DefaultType() {
-    return {};
-  }
-  static get NAME() {
-    throw new Error('You have to implement the static method "NAME", for each component!');
-  }
-  _getConfig(config) {
-    config = this._mergeConfigObj(config);
-    config = this._configAfterMerge(config);
-    this._typeCheckConfig(config);
-    return config;
-  }
-  _configAfterMerge(config) {
-    return config;
-  }
-  _mergeConfigObj(config, element) {
-    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
-
-    return {
-      ...this.constructor.Default,
-      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
-      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),
-      ...(typeof config === 'object' ? config : {})
-    };
-  }
-  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
-    for (const [property, expectedTypes] of Object.entries(configTypes)) {
-      const value = config[property];
-      const valueType = isElement(value) ? 'element' : toType(value);
-      if (!new RegExp(expectedTypes).test(valueType)) {
-        throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
-      }
-    }
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap base-component.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const VERSION = '5.3.1';
-
-/**
- * Class definition
- */
-
-class BaseComponent extends Config {
-  constructor(element, config) {
-    super();
-    element = getElement(element);
-    if (!element) {
-      return;
-    }
-    this._element = element;
-    this._config = this._getConfig(config);
-    Data.set(this._element, this.constructor.DATA_KEY, this);
-  }
-
-  // Public
-  dispose() {
-    Data.remove(this._element, this.constructor.DATA_KEY);
-    EventHandler.off(this._element, this.constructor.EVENT_KEY);
-    for (const propertyName of Object.getOwnPropertyNames(this)) {
-      this[propertyName] = null;
-    }
-  }
-  _queueCallback(callback, element, isAnimated = true) {
-    executeAfterTransition(callback, element, isAnimated);
-  }
-  _getConfig(config) {
-    config = this._mergeConfigObj(config, this._element);
-    config = this._configAfterMerge(config);
-    this._typeCheckConfig(config);
-    return config;
-  }
-
-  // Static
-  static getInstance(element) {
-    return Data.get(getElement(element), this.DATA_KEY);
-  }
-  static getOrCreateInstance(element, config = {}) {
-    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
-  }
-  static get VERSION() {
-    return VERSION;
-  }
-  static get DATA_KEY() {
-    return `bs.${this.NAME}`;
-  }
-  static get EVENT_KEY() {
-    return `.${this.DATA_KEY}`;
-  }
-  static eventName(name) {
-    return `${name}${this.EVENT_KEY}`;
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dom/selector-engine.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-const getSelector = element => {
-  let selector = element.getAttribute('data-bs-target');
-  if (!selector || selector === '#') {
-    let hrefAttribute = element.getAttribute('href');
-
-    // The only valid content that could double as a selector are IDs or classes,
-    // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
-    // `document.querySelector` will rightfully complain it is invalid.
-    // See https://github.com/twbs/bootstrap/issues/32273
-    if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
-      return null;
-    }
-
-    // Just in case some CMS puts out a full URL with the anchor appended
-    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
-      hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
-    }
-    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
-  }
-  return parseSelector(selector);
-};
-const SelectorEngine = {
-  find(selector, element = document.documentElement) {
-    return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
-  },
-  findOne(selector, element = document.documentElement) {
-    return Element.prototype.querySelector.call(element, selector);
-  },
-  children(element, selector) {
-    return [].concat(...element.children).filter(child => child.matches(selector));
-  },
-  parents(element, selector) {
-    const parents = [];
-    let ancestor = element.parentNode.closest(selector);
-    while (ancestor) {
-      parents.push(ancestor);
-      ancestor = ancestor.parentNode.closest(selector);
-    }
-    return parents;
-  },
-  prev(element, selector) {
-    let previous = element.previousElementSibling;
-    while (previous) {
-      if (previous.matches(selector)) {
-        return [previous];
-      }
-      previous = previous.previousElementSibling;
-    }
-    return [];
-  },
-  // TODO: this is now unused; remove later along with prev()
-  next(element, selector) {
-    let next = element.nextElementSibling;
-    while (next) {
-      if (next.matches(selector)) {
-        return [next];
-      }
-      next = next.nextElementSibling;
-    }
-    return [];
-  },
-  focusableChildren(element) {
-    const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
-    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
-  },
-  getSelectorFromElement(element) {
-    const selector = getSelector(element);
-    if (selector) {
-      return SelectorEngine.findOne(selector) ? selector : null;
-    }
-    return null;
-  },
-  getElementFromSelector(element) {
-    const selector = getSelector(element);
-    return selector ? SelectorEngine.findOne(selector) : null;
-  },
-  getMultipleElementsFromSelector(element) {
-    const selector = getSelector(element);
-    return selector ? SelectorEngine.find(selector) : [];
-  }
-};
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/component-functions.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-const enableDismissTrigger = (component, method = 'hide') => {
-  const clickEvent = `click.dismiss${component.EVENT_KEY}`;
-  const name = component.NAME;
-  EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    if (isDisabled(this)) {
-      return;
-    }
-    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
-    const instance = component.getOrCreateInstance(target);
-
-    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
-    instance[method]();
-  });
-};
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap alert.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$f = 'alert';
-const DATA_KEY$a = 'bs.alert';
-const EVENT_KEY$b = `.${DATA_KEY$a}`;
-const EVENT_CLOSE = `close${EVENT_KEY$b}`;
-const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
-const CLASS_NAME_FADE$5 = 'fade';
-const CLASS_NAME_SHOW$8 = 'show';
-
-/**
- * Class definition
- */
-
-class Alert extends BaseComponent {
-  // Getters
-  static get NAME() {
-    return NAME$f;
-  }
-
-  // Public
-  close() {
-    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
-    if (closeEvent.defaultPrevented) {
-      return;
-    }
-    this._element.classList.remove(CLASS_NAME_SHOW$8);
-    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
-    this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
-  }
-
-  // Private
-  _destroyElement() {
-    this._element.remove();
-    EventHandler.trigger(this._element, EVENT_CLOSED);
-    this.dispose();
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Alert.getOrCreateInstance(this);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config](this);
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-enableDismissTrigger(Alert, 'close');
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Alert);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap button.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$e = 'button';
-const DATA_KEY$9 = 'bs.button';
-const EVENT_KEY$a = `.${DATA_KEY$9}`;
-const DATA_API_KEY$6 = '.data-api';
-const CLASS_NAME_ACTIVE$3 = 'active';
-const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
-const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
-
-/**
- * Class definition
- */
-
-class Button extends BaseComponent {
-  // Getters
-  static get NAME() {
-    return NAME$e;
-  }
-
-  // Public
-  toggle() {
-    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
-    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Button.getOrCreateInstance(this);
-      if (config === 'toggle') {
-        data[config]();
-      }
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
-  event.preventDefault();
-  const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
-  const data = Button.getOrCreateInstance(button);
-  data.toggle();
-});
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Button);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/swipe.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$d = 'swipe';
-const EVENT_KEY$9 = '.bs.swipe';
-const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
-const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
-const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
-const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
-const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
-const POINTER_TYPE_TOUCH = 'touch';
-const POINTER_TYPE_PEN = 'pen';
-const CLASS_NAME_POINTER_EVENT = 'pointer-event';
-const SWIPE_THRESHOLD = 40;
-const Default$c = {
-  endCallback: null,
-  leftCallback: null,
-  rightCallback: null
-};
-const DefaultType$c = {
-  endCallback: '(function|null)',
-  leftCallback: '(function|null)',
-  rightCallback: '(function|null)'
-};
-
-/**
- * Class definition
- */
-
-class Swipe extends Config {
-  constructor(element, config) {
-    super();
-    this._element = element;
-    if (!element || !Swipe.isSupported()) {
-      return;
-    }
-    this._config = this._getConfig(config);
-    this._deltaX = 0;
-    this._supportPointerEvents = Boolean(window.PointerEvent);
-    this._initEvents();
-  }
-
-  // Getters
-  static get Default() {
-    return Default$c;
-  }
-  static get DefaultType() {
-    return DefaultType$c;
-  }
-  static get NAME() {
-    return NAME$d;
-  }
-
-  // Public
-  dispose() {
-    EventHandler.off(this._element, EVENT_KEY$9);
-  }
-
-  // Private
-  _start(event) {
-    if (!this._supportPointerEvents) {
-      this._deltaX = event.touches[0].clientX;
-      return;
-    }
-    if (this._eventIsPointerPenTouch(event)) {
-      this._deltaX = event.clientX;
-    }
-  }
-  _end(event) {
-    if (this._eventIsPointerPenTouch(event)) {
-      this._deltaX = event.clientX - this._deltaX;
-    }
-    this._handleSwipe();
-    execute(this._config.endCallback);
-  }
-  _move(event) {
-    this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
-  }
-  _handleSwipe() {
-    const absDeltaX = Math.abs(this._deltaX);
-    if (absDeltaX <= SWIPE_THRESHOLD) {
-      return;
-    }
-    const direction = absDeltaX / this._deltaX;
-    this._deltaX = 0;
-    if (!direction) {
-      return;
-    }
-    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
-  }
-  _initEvents() {
-    if (this._supportPointerEvents) {
-      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
-      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
-      this._element.classList.add(CLASS_NAME_POINTER_EVENT);
-    } else {
-      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
-      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
-      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
-    }
-  }
-  _eventIsPointerPenTouch(event) {
-    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
-  }
-
-  // Static
-  static isSupported() {
-    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap carousel.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$c = 'carousel';
-const DATA_KEY$8 = 'bs.carousel';
-const EVENT_KEY$8 = `.${DATA_KEY$8}`;
-const DATA_API_KEY$5 = '.data-api';
-const ARROW_LEFT_KEY$1 = 'ArrowLeft';
-const ARROW_RIGHT_KEY$1 = 'ArrowRight';
-const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
-
-const ORDER_NEXT = 'next';
-const ORDER_PREV = 'prev';
-const DIRECTION_LEFT = 'left';
-const DIRECTION_RIGHT = 'right';
-const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
-const EVENT_SLID = `slid${EVENT_KEY$8}`;
-const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
-const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
-const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
-const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
-const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
-const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
-const CLASS_NAME_CAROUSEL = 'carousel';
-const CLASS_NAME_ACTIVE$2 = 'active';
-const CLASS_NAME_SLIDE = 'slide';
-const CLASS_NAME_END = 'carousel-item-end';
-const CLASS_NAME_START = 'carousel-item-start';
-const CLASS_NAME_NEXT = 'carousel-item-next';
-const CLASS_NAME_PREV = 'carousel-item-prev';
-const SELECTOR_ACTIVE = '.active';
-const SELECTOR_ITEM = '.carousel-item';
-const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
-const SELECTOR_ITEM_IMG = '.carousel-item img';
-const SELECTOR_INDICATORS = '.carousel-indicators';
-const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
-const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
-const KEY_TO_DIRECTION = {
-  [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
-  [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
-};
-const Default$b = {
-  interval: 5000,
-  keyboard: true,
-  pause: 'hover',
-  ride: false,
-  touch: true,
-  wrap: true
-};
-const DefaultType$b = {
-  interval: '(number|boolean)',
-  // TODO:v6 remove boolean support
-  keyboard: 'boolean',
-  pause: '(string|boolean)',
-  ride: '(boolean|string)',
-  touch: 'boolean',
-  wrap: 'boolean'
-};
-
-/**
- * Class definition
- */
-
-class Carousel extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._interval = null;
-    this._activeElement = null;
-    this._isSliding = false;
-    this.touchTimeout = null;
-    this._swipeHelper = null;
-    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
-    this._addEventListeners();
-    if (this._config.ride === CLASS_NAME_CAROUSEL) {
-      this.cycle();
-    }
-  }
-
-  // Getters
-  static get Default() {
-    return Default$b;
-  }
-  static get DefaultType() {
-    return DefaultType$b;
-  }
-  static get NAME() {
-    return NAME$c;
-  }
-
-  // Public
-  next() {
-    this._slide(ORDER_NEXT);
-  }
-  nextWhenVisible() {
-    // FIXME TODO use `document.visibilityState`
-    // Don't call next when the page isn't visible
-    // or the carousel or its parent isn't visible
-    if (!document.hidden && isVisible(this._element)) {
-      this.next();
-    }
-  }
-  prev() {
-    this._slide(ORDER_PREV);
-  }
-  pause() {
-    if (this._isSliding) {
-      triggerTransitionEnd(this._element);
-    }
-    this._clearInterval();
-  }
-  cycle() {
-    this._clearInterval();
-    this._updateInterval();
-    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
-  }
-  _maybeEnableCycle() {
-    if (!this._config.ride) {
-      return;
-    }
-    if (this._isSliding) {
-      EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
-      return;
-    }
-    this.cycle();
-  }
-  to(index) {
-    const items = this._getItems();
-    if (index > items.length - 1 || index < 0) {
-      return;
-    }
-    if (this._isSliding) {
-      EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
-      return;
-    }
-    const activeIndex = this._getItemIndex(this._getActive());
-    if (activeIndex === index) {
-      return;
-    }
-    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
-    this._slide(order, items[index]);
-  }
-  dispose() {
-    if (this._swipeHelper) {
-      this._swipeHelper.dispose();
-    }
-    super.dispose();
-  }
-
-  // Private
-  _configAfterMerge(config) {
-    config.defaultInterval = config.interval;
-    return config;
-  }
-  _addEventListeners() {
-    if (this._config.keyboard) {
-      EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
-    }
-    if (this._config.pause === 'hover') {
-      EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
-      EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
-    }
-    if (this._config.touch && Swipe.isSupported()) {
-      this._addTouchEventListeners();
-    }
-  }
-  _addTouchEventListeners() {
-    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
-      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
-    }
-    const endCallBack = () => {
-      if (this._config.pause !== 'hover') {
-        return;
-      }
-
-      // If it's a touch-enabled device, mouseenter/leave are fired as
-      // part of the mouse compatibility events on first tap - the carousel
-      // would stop cycling until user tapped out of it;
-      // here, we listen for touchend, explicitly pause the carousel
-      // (as if it's the second time we tap on it, mouseenter compat event
-      // is NOT fired) and after a timeout (to allow for mouse compatibility
-      // events to fire) we explicitly restart cycling
-
-      this.pause();
-      if (this.touchTimeout) {
-        clearTimeout(this.touchTimeout);
-      }
-      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
-    };
-    const swipeConfig = {
-      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
-      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
-      endCallback: endCallBack
-    };
-    this._swipeHelper = new Swipe(this._element, swipeConfig);
-  }
-  _keydown(event) {
-    if (/input|textarea/i.test(event.target.tagName)) {
-      return;
-    }
-    const direction = KEY_TO_DIRECTION[event.key];
-    if (direction) {
-      event.preventDefault();
-      this._slide(this._directionToOrder(direction));
-    }
-  }
-  _getItemIndex(element) {
-    return this._getItems().indexOf(element);
-  }
-  _setActiveIndicatorElement(index) {
-    if (!this._indicatorsElement) {
-      return;
-    }
-    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
-    activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
-    activeIndicator.removeAttribute('aria-current');
-    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
-    if (newActiveIndicator) {
-      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
-      newActiveIndicator.setAttribute('aria-current', 'true');
-    }
-  }
-  _updateInterval() {
-    const element = this._activeElement || this._getActive();
-    if (!element) {
-      return;
-    }
-    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
-    this._config.interval = elementInterval || this._config.defaultInterval;
-  }
-  _slide(order, element = null) {
-    if (this._isSliding) {
-      return;
-    }
-    const activeElement = this._getActive();
-    const isNext = order === ORDER_NEXT;
-    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
-    if (nextElement === activeElement) {
-      return;
-    }
-    const nextElementIndex = this._getItemIndex(nextElement);
-    const triggerEvent = eventName => {
-      return EventHandler.trigger(this._element, eventName, {
-        relatedTarget: nextElement,
-        direction: this._orderToDirection(order),
-        from: this._getItemIndex(activeElement),
-        to: nextElementIndex
-      });
-    };
-    const slideEvent = triggerEvent(EVENT_SLIDE);
-    if (slideEvent.defaultPrevented) {
-      return;
-    }
-    if (!activeElement || !nextElement) {
-      // Some weirdness is happening, so we bail
-      // TODO: change tests that use empty divs to avoid this check
-      return;
-    }
-    const isCycling = Boolean(this._interval);
-    this.pause();
-    this._isSliding = true;
-    this._setActiveIndicatorElement(nextElementIndex);
-    this._activeElement = nextElement;
-    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
-    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
-    nextElement.classList.add(orderClassName);
-    reflow(nextElement);
-    activeElement.classList.add(directionalClassName);
-    nextElement.classList.add(directionalClassName);
-    const completeCallBack = () => {
-      nextElement.classList.remove(directionalClassName, orderClassName);
-      nextElement.classList.add(CLASS_NAME_ACTIVE$2);
-      activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
-      this._isSliding = false;
-      triggerEvent(EVENT_SLID);
-    };
-    this._queueCallback(completeCallBack, activeElement, this._isAnimated());
-    if (isCycling) {
-      this.cycle();
-    }
-  }
-  _isAnimated() {
-    return this._element.classList.contains(CLASS_NAME_SLIDE);
-  }
-  _getActive() {
-    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
-  }
-  _getItems() {
-    return SelectorEngine.find(SELECTOR_ITEM, this._element);
-  }
-  _clearInterval() {
-    if (this._interval) {
-      clearInterval(this._interval);
-      this._interval = null;
-    }
-  }
-  _directionToOrder(direction) {
-    if (isRTL()) {
-      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
-    }
-    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
-  }
-  _orderToDirection(order) {
-    if (isRTL()) {
-      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
-    }
-    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Carousel.getOrCreateInstance(this, config);
-      if (typeof config === 'number') {
-        data.to(config);
-        return;
-      }
-      if (typeof config === 'string') {
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      }
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
-  const target = SelectorEngine.getElementFromSelector(this);
-  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
-    return;
-  }
-  event.preventDefault();
-  const carousel = Carousel.getOrCreateInstance(target);
-  const slideIndex = this.getAttribute('data-bs-slide-to');
-  if (slideIndex) {
-    carousel.to(slideIndex);
-    carousel._maybeEnableCycle();
-    return;
-  }
-  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
-    carousel.next();
-    carousel._maybeEnableCycle();
-    return;
-  }
-  carousel.prev();
-  carousel._maybeEnableCycle();
-});
-EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
-  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
-  for (const carousel of carousels) {
-    Carousel.getOrCreateInstance(carousel);
-  }
-});
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Carousel);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap collapse.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$b = 'collapse';
-const DATA_KEY$7 = 'bs.collapse';
-const EVENT_KEY$7 = `.${DATA_KEY$7}`;
-const DATA_API_KEY$4 = '.data-api';
-const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
-const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
-const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
-const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
-const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
-const CLASS_NAME_SHOW$7 = 'show';
-const CLASS_NAME_COLLAPSE = 'collapse';
-const CLASS_NAME_COLLAPSING = 'collapsing';
-const CLASS_NAME_COLLAPSED = 'collapsed';
-const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
-const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
-const WIDTH = 'width';
-const HEIGHT = 'height';
-const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
-const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
-const Default$a = {
-  parent: null,
-  toggle: true
-};
-const DefaultType$a = {
-  parent: '(null|element)',
-  toggle: 'boolean'
-};
-
-/**
- * Class definition
- */
-
-class Collapse extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._isTransitioning = false;
-    this._triggerArray = [];
-    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
-    for (const elem of toggleList) {
-      const selector = SelectorEngine.getSelectorFromElement(elem);
-      const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
-      if (selector !== null && filterElement.length) {
-        this._triggerArray.push(elem);
-      }
-    }
-    this._initializeChildren();
-    if (!this._config.parent) {
-      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
-    }
-    if (this._config.toggle) {
-      this.toggle();
-    }
-  }
-
-  // Getters
-  static get Default() {
-    return Default$a;
-  }
-  static get DefaultType() {
-    return DefaultType$a;
-  }
-  static get NAME() {
-    return NAME$b;
-  }
-
-  // Public
-  toggle() {
-    if (this._isShown()) {
-      this.hide();
-    } else {
-      this.show();
-    }
-  }
-  show() {
-    if (this._isTransitioning || this._isShown()) {
-      return;
-    }
-    let activeChildren = [];
-
-    // find active children
-    if (this._config.parent) {
-      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
-        toggle: false
-      }));
-    }
-    if (activeChildren.length && activeChildren[0]._isTransitioning) {
-      return;
-    }
-    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
-    if (startEvent.defaultPrevented) {
-      return;
-    }
-    for (const activeInstance of activeChildren) {
-      activeInstance.hide();
-    }
-    const dimension = this._getDimension();
-    this._element.classList.remove(CLASS_NAME_COLLAPSE);
-    this._element.classList.add(CLASS_NAME_COLLAPSING);
-    this._element.style[dimension] = 0;
-    this._addAriaAndCollapsedClass(this._triggerArray, true);
-    this._isTransitioning = true;
-    const complete = () => {
-      this._isTransitioning = false;
-      this._element.classList.remove(CLASS_NAME_COLLAPSING);
-      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-      this._element.style[dimension] = '';
-      EventHandler.trigger(this._element, EVENT_SHOWN$6);
-    };
-    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
-    const scrollSize = `scroll${capitalizedDimension}`;
-    this._queueCallback(complete, this._element, true);
-    this._element.style[dimension] = `${this._element[scrollSize]}px`;
-  }
-  hide() {
-    if (this._isTransitioning || !this._isShown()) {
-      return;
-    }
-    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
-    if (startEvent.defaultPrevented) {
-      return;
-    }
-    const dimension = this._getDimension();
-    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
-    reflow(this._element);
-    this._element.classList.add(CLASS_NAME_COLLAPSING);
-    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-    for (const trigger of this._triggerArray) {
-      const element = SelectorEngine.getElementFromSelector(trigger);
-      if (element && !this._isShown(element)) {
-        this._addAriaAndCollapsedClass([trigger], false);
-      }
-    }
-    this._isTransitioning = true;
-    const complete = () => {
-      this._isTransitioning = false;
-      this._element.classList.remove(CLASS_NAME_COLLAPSING);
-      this._element.classList.add(CLASS_NAME_COLLAPSE);
-      EventHandler.trigger(this._element, EVENT_HIDDEN$6);
-    };
-    this._element.style[dimension] = '';
-    this._queueCallback(complete, this._element, true);
-  }
-  _isShown(element = this._element) {
-    return element.classList.contains(CLASS_NAME_SHOW$7);
-  }
-
-  // Private
-  _configAfterMerge(config) {
-    config.toggle = Boolean(config.toggle); // Coerce string values
-    config.parent = getElement(config.parent);
-    return config;
-  }
-  _getDimension() {
-    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
-  }
-  _initializeChildren() {
-    if (!this._config.parent) {
-      return;
-    }
-    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
-    for (const element of children) {
-      const selected = SelectorEngine.getElementFromSelector(element);
-      if (selected) {
-        this._addAriaAndCollapsedClass([element], this._isShown(selected));
-      }
-    }
-  }
-  _getFirstLevelChildren(selector) {
-    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
-    // remove children if greater depth
-    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
-  }
-  _addAriaAndCollapsedClass(triggerArray, isOpen) {
-    if (!triggerArray.length) {
-      return;
-    }
-    for (const element of triggerArray) {
-      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
-      element.setAttribute('aria-expanded', isOpen);
-    }
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    const _config = {};
-    if (typeof config === 'string' && /show|hide/.test(config)) {
-      _config.toggle = false;
-    }
-    return this.each(function () {
-      const data = Collapse.getOrCreateInstance(this, _config);
-      if (typeof config === 'string') {
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      }
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
-  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
-  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
-    event.preventDefault();
-  }
-  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
-    Collapse.getOrCreateInstance(element, {
-      toggle: false
-    }).toggle();
-  }
-});
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Collapse);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dropdown.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$a = 'dropdown';
-const DATA_KEY$6 = 'bs.dropdown';
-const EVENT_KEY$6 = `.${DATA_KEY$6}`;
-const DATA_API_KEY$3 = '.data-api';
-const ESCAPE_KEY$2 = 'Escape';
-const TAB_KEY$1 = 'Tab';
-const ARROW_UP_KEY$1 = 'ArrowUp';
-const ARROW_DOWN_KEY$1 = 'ArrowDown';
-const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
-
-const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
-const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
-const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
-const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
-const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
-const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
-const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
-const CLASS_NAME_SHOW$6 = 'show';
-const CLASS_NAME_DROPUP = 'dropup';
-const CLASS_NAME_DROPEND = 'dropend';
-const CLASS_NAME_DROPSTART = 'dropstart';
-const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
-const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
-const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
-const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
-const SELECTOR_MENU = '.dropdown-menu';
-const SELECTOR_NAVBAR = '.navbar';
-const SELECTOR_NAVBAR_NAV = '.navbar-nav';
-const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
-const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
-const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
-const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
-const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
-const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
-const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
-const PLACEMENT_TOPCENTER = 'top';
-const PLACEMENT_BOTTOMCENTER = 'bottom';
-const Default$9 = {
-  autoClose: true,
-  boundary: 'clippingParents',
-  display: 'dynamic',
-  offset: [0, 2],
-  popperConfig: null,
-  reference: 'toggle'
-};
-const DefaultType$9 = {
-  autoClose: '(boolean|string)',
-  boundary: '(string|element)',
-  display: 'string',
-  offset: '(array|string|function)',
-  popperConfig: '(null|object|function)',
-  reference: '(string|element|object)'
-};
-
-/**
- * Class definition
- */
-
-class Dropdown extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._popper = null;
-    this._parent = this._element.parentNode; // dropdown wrapper
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
-    this._inNavbar = this._detectNavbar();
-  }
-
-  // Getters
-  static get Default() {
-    return Default$9;
-  }
-  static get DefaultType() {
-    return DefaultType$9;
-  }
-  static get NAME() {
-    return NAME$a;
-  }
-
-  // Public
-  toggle() {
-    return this._isShown() ? this.hide() : this.show();
-  }
-  show() {
-    if (isDisabled(this._element) || this._isShown()) {
-      return;
-    }
-    const relatedTarget = {
-      relatedTarget: this._element
-    };
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._createPopper();
-
-    // If this is a touch-enabled device we add extra
-    // empty mouseover listeners to the body's immediate children;
-    // only needed because of broken event delegation on iOS
-    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.on(element, 'mouseover', noop);
-      }
-    }
-    this._element.focus();
-    this._element.setAttribute('aria-expanded', true);
-    this._menu.classList.add(CLASS_NAME_SHOW$6);
-    this._element.classList.add(CLASS_NAME_SHOW$6);
-    EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
-  }
-  hide() {
-    if (isDisabled(this._element) || !this._isShown()) {
-      return;
-    }
-    const relatedTarget = {
-      relatedTarget: this._element
-    };
-    this._completeHide(relatedTarget);
-  }
-  dispose() {
-    if (this._popper) {
-      this._popper.destroy();
-    }
-    super.dispose();
-  }
-  update() {
-    this._inNavbar = this._detectNavbar();
-    if (this._popper) {
-      this._popper.update();
-    }
-  }
-
-  // Private
-  _completeHide(relatedTarget) {
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-
-    // If this is a touch-enabled device we remove the extra
-    // empty mouseover listeners we added for iOS support
-    if ('ontouchstart' in document.documentElement) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.off(element, 'mouseover', noop);
-      }
-    }
-    if (this._popper) {
-      this._popper.destroy();
-    }
-    this._menu.classList.remove(CLASS_NAME_SHOW$6);
-    this._element.classList.remove(CLASS_NAME_SHOW$6);
-    this._element.setAttribute('aria-expanded', 'false');
-    Manipulator.removeDataAttribute(this._menu, 'popper');
-    EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
-  }
-  _getConfig(config) {
-    config = super._getConfig(config);
-    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
-      // Popper virtual elements require a getBoundingClientRect method
-      throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
-    }
-    return config;
-  }
-  _createPopper() {
-    if (typeof Popper === 'undefined') {
-      throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
-    }
-    let referenceElement = this._element;
-    if (this._config.reference === 'parent') {
-      referenceElement = this._parent;
-    } else if (isElement(this._config.reference)) {
-      referenceElement = getElement(this._config.reference);
-    } else if (typeof this._config.reference === 'object') {
-      referenceElement = this._config.reference;
-    }
-    const popperConfig = this._getPopperConfig();
-    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);
-  }
-  _isShown() {
-    return this._menu.classList.contains(CLASS_NAME_SHOW$6);
-  }
-  _getPlacement() {
-    const parentDropdown = this._parent;
-    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
-      return PLACEMENT_RIGHT;
-    }
-    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
-      return PLACEMENT_LEFT;
-    }
-    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
-      return PLACEMENT_TOPCENTER;
-    }
-    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
-      return PLACEMENT_BOTTOMCENTER;
-    }
-
-    // We need to trim the value because custom properties can also include spaces
-    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
-    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
-      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
-    }
-    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
-  }
-  _detectNavbar() {
-    return this._element.closest(SELECTOR_NAVBAR) !== null;
-  }
-  _getOffset() {
-    const {
-      offset
-    } = this._config;
-    if (typeof offset === 'string') {
-      return offset.split(',').map(value => Number.parseInt(value, 10));
-    }
-    if (typeof offset === 'function') {
-      return popperData => offset(popperData, this._element);
-    }
-    return offset;
-  }
-  _getPopperConfig() {
-    const defaultBsPopperConfig = {
-      placement: this._getPlacement(),
-      modifiers: [{
-        name: 'preventOverflow',
-        options: {
-          boundary: this._config.boundary
-        }
-      }, {
-        name: 'offset',
-        options: {
-          offset: this._getOffset()
-        }
-      }]
-    };
-
-    // Disable Popper if we have a static display or Dropdown is in Navbar
-    if (this._inNavbar || this._config.display === 'static') {
-      Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
-      defaultBsPopperConfig.modifiers = [{
-        name: 'applyStyles',
-        enabled: false
-      }];
-    }
-    return {
-      ...defaultBsPopperConfig,
-      ...execute(this._config.popperConfig, [defaultBsPopperConfig])
-    };
-  }
-  _selectMenuItem({
-    key,
-    target
-  }) {
-    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
-    if (!items.length) {
-      return;
-    }
-
-    // if target isn't included in items (e.g. when expanding the dropdown)
-    // allow cycling to get the last item in case key equals ARROW_UP_KEY
-    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Dropdown.getOrCreateInstance(this, config);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (typeof data[config] === 'undefined') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config]();
-    });
-  }
-  static clearMenus(event) {
-    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
-      return;
-    }
-    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-    for (const toggle of openToggles) {
-      const context = Dropdown.getInstance(toggle);
-      if (!context || context._config.autoClose === false) {
-        continue;
-      }
-      const composedPath = event.composedPath();
-      const isMenuTarget = composedPath.includes(context._menu);
-      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
-        continue;
-      }
-
-      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
-        continue;
-      }
-      const relatedTarget = {
-        relatedTarget: context._element
-      };
-      if (event.type === 'click') {
-        relatedTarget.clickEvent = event;
-      }
-      context._completeHide(relatedTarget);
-    }
-  }
-  static dataApiKeydownHandler(event) {
-    // If not an UP | DOWN | ESCAPE key => not a dropdown command
-    // If input/textarea && if key is other than ESCAPE => not a dropdown command
-
-    const isInput = /input|textarea/i.test(event.target.tagName);
-    const isEscapeEvent = event.key === ESCAPE_KEY$2;
-    const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
-    if (!isUpOrDownEvent && !isEscapeEvent) {
-      return;
-    }
-    if (isInput && !isEscapeEvent) {
-      return;
-    }
-    event.preventDefault();
-
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
-    const instance = Dropdown.getOrCreateInstance(getToggleButton);
-    if (isUpOrDownEvent) {
-      event.stopPropagation();
-      instance.show();
-      instance._selectMenuItem(event);
-      return;
-    }
-    if (instance._isShown()) {
-      // else is escape and we check if it is shown
-      event.stopPropagation();
-      instance.hide();
-      getToggleButton.focus();
-    }
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
-EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
-EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
-  event.preventDefault();
-  Dropdown.getOrCreateInstance(this).toggle();
-});
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Dropdown);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/backdrop.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$9 = 'backdrop';
-const CLASS_NAME_FADE$4 = 'fade';
-const CLASS_NAME_SHOW$5 = 'show';
-const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
-const Default$8 = {
-  className: 'modal-backdrop',
-  clickCallback: null,
-  isAnimated: false,
-  isVisible: true,
-  // if false, we use the backdrop helper without adding any element to the dom
-  rootElement: 'body' // give the choice to place backdrop under different elements
-};
-
-const DefaultType$8 = {
-  className: 'string',
-  clickCallback: '(function|null)',
-  isAnimated: 'boolean',
-  isVisible: 'boolean',
-  rootElement: '(element|string)'
-};
-
-/**
- * Class definition
- */
-
-class Backdrop extends Config {
-  constructor(config) {
-    super();
-    this._config = this._getConfig(config);
-    this._isAppended = false;
-    this._element = null;
-  }
-
-  // Getters
-  static get Default() {
-    return Default$8;
-  }
-  static get DefaultType() {
-    return DefaultType$8;
-  }
-  static get NAME() {
-    return NAME$9;
-  }
-
-  // Public
-  show(callback) {
-    if (!this._config.isVisible) {
-      execute(callback);
-      return;
-    }
-    this._append();
-    const element = this._getElement();
-    if (this._config.isAnimated) {
-      reflow(element);
-    }
-    element.classList.add(CLASS_NAME_SHOW$5);
-    this._emulateAnimation(() => {
-      execute(callback);
-    });
-  }
-  hide(callback) {
-    if (!this._config.isVisible) {
-      execute(callback);
-      return;
-    }
-    this._getElement().classList.remove(CLASS_NAME_SHOW$5);
-    this._emulateAnimation(() => {
-      this.dispose();
-      execute(callback);
-    });
-  }
-  dispose() {
-    if (!this._isAppended) {
-      return;
-    }
-    EventHandler.off(this._element, EVENT_MOUSEDOWN);
-    this._element.remove();
-    this._isAppended = false;
-  }
-
-  // Private
-  _getElement() {
-    if (!this._element) {
-      const backdrop = document.createElement('div');
-      backdrop.className = this._config.className;
-      if (this._config.isAnimated) {
-        backdrop.classList.add(CLASS_NAME_FADE$4);
-      }
-      this._element = backdrop;
-    }
-    return this._element;
-  }
-  _configAfterMerge(config) {
-    // use getElement() with the default "body" to get a fresh Element on each instantiation
-    config.rootElement = getElement(config.rootElement);
-    return config;
-  }
-  _append() {
-    if (this._isAppended) {
-      return;
-    }
-    const element = this._getElement();
-    this._config.rootElement.append(element);
-    EventHandler.on(element, EVENT_MOUSEDOWN, () => {
-      execute(this._config.clickCallback);
-    });
-    this._isAppended = true;
-  }
-  _emulateAnimation(callback) {
-    executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/focustrap.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$8 = 'focustrap';
-const DATA_KEY$5 = 'bs.focustrap';
-const EVENT_KEY$5 = `.${DATA_KEY$5}`;
-const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
-const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
-const TAB_KEY = 'Tab';
-const TAB_NAV_FORWARD = 'forward';
-const TAB_NAV_BACKWARD = 'backward';
-const Default$7 = {
-  autofocus: true,
-  trapElement: null // The element to trap focus inside of
-};
-
-const DefaultType$7 = {
-  autofocus: 'boolean',
-  trapElement: 'element'
-};
-
-/**
- * Class definition
- */
-
-class FocusTrap extends Config {
-  constructor(config) {
-    super();
-    this._config = this._getConfig(config);
-    this._isActive = false;
-    this._lastTabNavDirection = null;
-  }
-
-  // Getters
-  static get Default() {
-    return Default$7;
-  }
-  static get DefaultType() {
-    return DefaultType$7;
-  }
-  static get NAME() {
-    return NAME$8;
-  }
-
-  // Public
-  activate() {
-    if (this._isActive) {
-      return;
-    }
-    if (this._config.autofocus) {
-      this._config.trapElement.focus();
-    }
-    EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
-    EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
-    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
-    this._isActive = true;
-  }
-  deactivate() {
-    if (!this._isActive) {
-      return;
-    }
-    this._isActive = false;
-    EventHandler.off(document, EVENT_KEY$5);
-  }
-
-  // Private
-  _handleFocusin(event) {
-    const {
-      trapElement
-    } = this._config;
-    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
-      return;
-    }
-    const elements = SelectorEngine.focusableChildren(trapElement);
-    if (elements.length === 0) {
-      trapElement.focus();
-    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
-      elements[elements.length - 1].focus();
-    } else {
-      elements[0].focus();
-    }
-  }
-  _handleKeydown(event) {
-    if (event.key !== TAB_KEY) {
-      return;
-    }
-    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/scrollBar.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
-const SELECTOR_STICKY_CONTENT = '.sticky-top';
-const PROPERTY_PADDING = 'padding-right';
-const PROPERTY_MARGIN = 'margin-right';
-
-/**
- * Class definition
- */
-
-class ScrollBarHelper {
-  constructor() {
-    this._element = document.body;
-  }
-
-  // Public
-  getWidth() {
-    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
-    const documentWidth = document.documentElement.clientWidth;
-    return Math.abs(window.innerWidth - documentWidth);
-  }
-  hide() {
-    const width = this.getWidth();
-    this._disableOverFlow();
-    // give padding to element to balance the hidden scrollbar width
-    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
-    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
-    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
-    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
-  }
-  reset() {
-    this._resetElementAttributes(this._element, 'overflow');
-    this._resetElementAttributes(this._element, PROPERTY_PADDING);
-    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
-    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
-  }
-  isOverflowing() {
-    return this.getWidth() > 0;
-  }
-
-  // Private
-  _disableOverFlow() {
-    this._saveInitialAttribute(this._element, 'overflow');
-    this._element.style.overflow = 'hidden';
-  }
-  _setElementAttributes(selector, styleProperty, callback) {
-    const scrollbarWidth = this.getWidth();
-    const manipulationCallBack = element => {
-      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
-        return;
-      }
-      this._saveInitialAttribute(element, styleProperty);
-      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
-      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
-    };
-    this._applyManipulationCallback(selector, manipulationCallBack);
-  }
-  _saveInitialAttribute(element, styleProperty) {
-    const actualValue = element.style.getPropertyValue(styleProperty);
-    if (actualValue) {
-      Manipulator.setDataAttribute(element, styleProperty, actualValue);
-    }
-  }
-  _resetElementAttributes(selector, styleProperty) {
-    const manipulationCallBack = element => {
-      const value = Manipulator.getDataAttribute(element, styleProperty);
-      // We only want to remove the property if the value is `null`; the value can also be zero
-      if (value === null) {
-        element.style.removeProperty(styleProperty);
-        return;
-      }
-      Manipulator.removeDataAttribute(element, styleProperty);
-      element.style.setProperty(styleProperty, value);
-    };
-    this._applyManipulationCallback(selector, manipulationCallBack);
-  }
-  _applyManipulationCallback(selector, callBack) {
-    if (isElement(selector)) {
-      callBack(selector);
-      return;
-    }
-    for (const sel of SelectorEngine.find(selector, this._element)) {
-      callBack(sel);
-    }
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap modal.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$7 = 'modal';
-const DATA_KEY$4 = 'bs.modal';
-const EVENT_KEY$4 = `.${DATA_KEY$4}`;
-const DATA_API_KEY$2 = '.data-api';
-const ESCAPE_KEY$1 = 'Escape';
-const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
-const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
-const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
-const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
-const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
-const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
-const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
-const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
-const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
-const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
-const CLASS_NAME_OPEN = 'modal-open';
-const CLASS_NAME_FADE$3 = 'fade';
-const CLASS_NAME_SHOW$4 = 'show';
-const CLASS_NAME_STATIC = 'modal-static';
-const OPEN_SELECTOR$1 = '.modal.show';
-const SELECTOR_DIALOG = '.modal-dialog';
-const SELECTOR_MODAL_BODY = '.modal-body';
-const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
-const Default$6 = {
-  backdrop: true,
-  focus: true,
-  keyboard: true
-};
-const DefaultType$6 = {
-  backdrop: '(boolean|string)',
-  focus: 'boolean',
-  keyboard: 'boolean'
-};
-
-/**
- * Class definition
- */
-
-class Modal extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
-    this._backdrop = this._initializeBackDrop();
-    this._focustrap = this._initializeFocusTrap();
-    this._isShown = false;
-    this._isTransitioning = false;
-    this._scrollBar = new ScrollBarHelper();
-    this._addEventListeners();
-  }
-
-  // Getters
-  static get Default() {
-    return Default$6;
-  }
-  static get DefaultType() {
-    return DefaultType$6;
-  }
-  static get NAME() {
-    return NAME$7;
-  }
-
-  // Public
-  toggle(relatedTarget) {
-    return this._isShown ? this.hide() : this.show(relatedTarget);
-  }
-  show(relatedTarget) {
-    if (this._isShown || this._isTransitioning) {
-      return;
-    }
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
-      relatedTarget
-    });
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._isShown = true;
-    this._isTransitioning = true;
-    this._scrollBar.hide();
-    document.body.classList.add(CLASS_NAME_OPEN);
-    this._adjustDialog();
-    this._backdrop.show(() => this._showElement(relatedTarget));
-  }
-  hide() {
-    if (!this._isShown || this._isTransitioning) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    this._isShown = false;
-    this._isTransitioning = true;
-    this._focustrap.deactivate();
-    this._element.classList.remove(CLASS_NAME_SHOW$4);
-    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
-  }
-  dispose() {
-    EventHandler.off(window, EVENT_KEY$4);
-    EventHandler.off(this._dialog, EVENT_KEY$4);
-    this._backdrop.dispose();
-    this._focustrap.deactivate();
-    super.dispose();
-  }
-  handleUpdate() {
-    this._adjustDialog();
-  }
-
-  // Private
-  _initializeBackDrop() {
-    return new Backdrop({
-      isVisible: Boolean(this._config.backdrop),
-      // 'static' option will be translated to true, and booleans will keep their value,
-      isAnimated: this._isAnimated()
-    });
-  }
-  _initializeFocusTrap() {
-    return new FocusTrap({
-      trapElement: this._element
-    });
-  }
-  _showElement(relatedTarget) {
-    // try to append dynamic modal
-    if (!document.body.contains(this._element)) {
-      document.body.append(this._element);
-    }
-    this._element.style.display = 'block';
-    this._element.removeAttribute('aria-hidden');
-    this._element.setAttribute('aria-modal', true);
-    this._element.setAttribute('role', 'dialog');
-    this._element.scrollTop = 0;
-    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
-    if (modalBody) {
-      modalBody.scrollTop = 0;
-    }
-    reflow(this._element);
-    this._element.classList.add(CLASS_NAME_SHOW$4);
-    const transitionComplete = () => {
-      if (this._config.focus) {
-        this._focustrap.activate();
-      }
-      this._isTransitioning = false;
-      EventHandler.trigger(this._element, EVENT_SHOWN$4, {
-        relatedTarget
-      });
-    };
-    this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
-  }
-  _addEventListeners() {
-    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
-      if (event.key !== ESCAPE_KEY$1) {
-        return;
-      }
-      if (this._config.keyboard) {
-        this.hide();
-        return;
-      }
-      this._triggerBackdropTransition();
-    });
-    EventHandler.on(window, EVENT_RESIZE$1, () => {
-      if (this._isShown && !this._isTransitioning) {
-        this._adjustDialog();
-      }
-    });
-    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
-      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
-      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
-        if (this._element !== event.target || this._element !== event2.target) {
-          return;
-        }
-        if (this._config.backdrop === 'static') {
-          this._triggerBackdropTransition();
-          return;
-        }
-        if (this._config.backdrop) {
-          this.hide();
-        }
-      });
-    });
-  }
-  _hideModal() {
-    this._element.style.display = 'none';
-    this._element.setAttribute('aria-hidden', true);
-    this._element.removeAttribute('aria-modal');
-    this._element.removeAttribute('role');
-    this._isTransitioning = false;
-    this._backdrop.hide(() => {
-      document.body.classList.remove(CLASS_NAME_OPEN);
-      this._resetAdjustments();
-      this._scrollBar.reset();
-      EventHandler.trigger(this._element, EVENT_HIDDEN$4);
-    });
-  }
-  _isAnimated() {
-    return this._element.classList.contains(CLASS_NAME_FADE$3);
-  }
-  _triggerBackdropTransition() {
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-    const initialOverflowY = this._element.style.overflowY;
-    // return if the following background transition hasn't yet completed
-    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
-      return;
-    }
-    if (!isModalOverflowing) {
-      this._element.style.overflowY = 'hidden';
-    }
-    this._element.classList.add(CLASS_NAME_STATIC);
-    this._queueCallback(() => {
-      this._element.classList.remove(CLASS_NAME_STATIC);
-      this._queueCallback(() => {
-        this._element.style.overflowY = initialOverflowY;
-      }, this._dialog);
-    }, this._dialog);
-    this._element.focus();
-  }
-
-  /**
-   * The following methods are used to handle overflowing modals
-   */
-
-  _adjustDialog() {
-    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-    const scrollbarWidth = this._scrollBar.getWidth();
-    const isBodyOverflowing = scrollbarWidth > 0;
-    if (isBodyOverflowing && !isModalOverflowing) {
-      const property = isRTL() ? 'paddingLeft' : 'paddingRight';
-      this._element.style[property] = `${scrollbarWidth}px`;
-    }
-    if (!isBodyOverflowing && isModalOverflowing) {
-      const property = isRTL() ? 'paddingRight' : 'paddingLeft';
-      this._element.style[property] = `${scrollbarWidth}px`;
-    }
-  }
-  _resetAdjustments() {
-    this._element.style.paddingLeft = '';
-    this._element.style.paddingRight = '';
-  }
-
-  // Static
-  static jQueryInterface(config, relatedTarget) {
-    return this.each(function () {
-      const data = Modal.getOrCreateInstance(this, config);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (typeof data[config] === 'undefined') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config](relatedTarget);
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
-  const target = SelectorEngine.getElementFromSelector(this);
-  if (['A', 'AREA'].includes(this.tagName)) {
-    event.preventDefault();
-  }
-  EventHandler.one(target, EVENT_SHOW$4, showEvent => {
-    if (showEvent.defaultPrevented) {
-      // only register focus restorer if modal will actually get shown
-      return;
-    }
-    EventHandler.one(target, EVENT_HIDDEN$4, () => {
-      if (isVisible(this)) {
-        this.focus();
-      }
-    });
-  });
-
-  // avoid conflict when clicking modal toggler while another one is open
-  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
-  if (alreadyOpen) {
-    Modal.getInstance(alreadyOpen).hide();
-  }
-  const data = Modal.getOrCreateInstance(target);
-  data.toggle(this);
-});
-enableDismissTrigger(Modal);
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Modal);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap offcanvas.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$6 = 'offcanvas';
-const DATA_KEY$3 = 'bs.offcanvas';
-const EVENT_KEY$3 = `.${DATA_KEY$3}`;
-const DATA_API_KEY$1 = '.data-api';
-const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
-const ESCAPE_KEY = 'Escape';
-const CLASS_NAME_SHOW$3 = 'show';
-const CLASS_NAME_SHOWING$1 = 'showing';
-const CLASS_NAME_HIDING = 'hiding';
-const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
-const OPEN_SELECTOR = '.offcanvas.show';
-const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
-const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
-const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
-const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
-const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
-const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
-const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
-const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
-const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
-const Default$5 = {
-  backdrop: true,
-  keyboard: true,
-  scroll: false
-};
-const DefaultType$5 = {
-  backdrop: '(boolean|string)',
-  keyboard: 'boolean',
-  scroll: 'boolean'
-};
-
-/**
- * Class definition
- */
-
-class Offcanvas extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._isShown = false;
-    this._backdrop = this._initializeBackDrop();
-    this._focustrap = this._initializeFocusTrap();
-    this._addEventListeners();
-  }
-
-  // Getters
-  static get Default() {
-    return Default$5;
-  }
-  static get DefaultType() {
-    return DefaultType$5;
-  }
-  static get NAME() {
-    return NAME$6;
-  }
-
-  // Public
-  toggle(relatedTarget) {
-    return this._isShown ? this.hide() : this.show(relatedTarget);
-  }
-  show(relatedTarget) {
-    if (this._isShown) {
-      return;
-    }
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
-      relatedTarget
-    });
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._isShown = true;
-    this._backdrop.show();
-    if (!this._config.scroll) {
-      new ScrollBarHelper().hide();
-    }
-    this._element.setAttribute('aria-modal', true);
-    this._element.setAttribute('role', 'dialog');
-    this._element.classList.add(CLASS_NAME_SHOWING$1);
-    const completeCallBack = () => {
-      if (!this._config.scroll || this._config.backdrop) {
-        this._focustrap.activate();
-      }
-      this._element.classList.add(CLASS_NAME_SHOW$3);
-      this._element.classList.remove(CLASS_NAME_SHOWING$1);
-      EventHandler.trigger(this._element, EVENT_SHOWN$3, {
-        relatedTarget
-      });
-    };
-    this._queueCallback(completeCallBack, this._element, true);
-  }
-  hide() {
-    if (!this._isShown) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    this._focustrap.deactivate();
-    this._element.blur();
-    this._isShown = false;
-    this._element.classList.add(CLASS_NAME_HIDING);
-    this._backdrop.hide();
-    const completeCallback = () => {
-      this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
-      this._element.removeAttribute('aria-modal');
-      this._element.removeAttribute('role');
-      if (!this._config.scroll) {
-        new ScrollBarHelper().reset();
-      }
-      EventHandler.trigger(this._element, EVENT_HIDDEN$3);
-    };
-    this._queueCallback(completeCallback, this._element, true);
-  }
-  dispose() {
-    this._backdrop.dispose();
-    this._focustrap.deactivate();
-    super.dispose();
-  }
-
-  // Private
-  _initializeBackDrop() {
-    const clickCallback = () => {
-      if (this._config.backdrop === 'static') {
-        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
-        return;
-      }
-      this.hide();
-    };
-
-    // 'static' option will be translated to true, and booleans will keep their value
-    const isVisible = Boolean(this._config.backdrop);
-    return new Backdrop({
-      className: CLASS_NAME_BACKDROP,
-      isVisible,
-      isAnimated: true,
-      rootElement: this._element.parentNode,
-      clickCallback: isVisible ? clickCallback : null
-    });
-  }
-  _initializeFocusTrap() {
-    return new FocusTrap({
-      trapElement: this._element
-    });
-  }
-  _addEventListeners() {
-    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
-      if (event.key !== ESCAPE_KEY) {
-        return;
-      }
-      if (this._config.keyboard) {
-        this.hide();
-        return;
-      }
-      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
-    });
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Offcanvas.getOrCreateInstance(this, config);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config](this);
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
-  const target = SelectorEngine.getElementFromSelector(this);
-  if (['A', 'AREA'].includes(this.tagName)) {
-    event.preventDefault();
-  }
-  if (isDisabled(this)) {
-    return;
-  }
-  EventHandler.one(target, EVENT_HIDDEN$3, () => {
-    // focus on trigger when it is closed
-    if (isVisible(this)) {
-      this.focus();
-    }
-  });
-
-  // avoid conflict when clicking a toggler of an offcanvas, while another is open
-  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
-  if (alreadyOpen && alreadyOpen !== target) {
-    Offcanvas.getInstance(alreadyOpen).hide();
-  }
-  const data = Offcanvas.getOrCreateInstance(target);
-  data.toggle(this);
-});
-EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
-  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
-    Offcanvas.getOrCreateInstance(selector).show();
-  }
-});
-EventHandler.on(window, EVENT_RESIZE, () => {
-  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
-    if (getComputedStyle(element).position !== 'fixed') {
-      Offcanvas.getOrCreateInstance(element).hide();
-    }
-  }
-});
-enableDismissTrigger(Offcanvas);
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Offcanvas);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/sanitizer.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-// js-docs-start allow-list
-const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
-const DefaultAllowlist = {
-  // Global attributes allowed on any supplied element below.
-  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
-  a: ['target', 'href', 'title', 'rel'],
-  area: [],
-  b: [],
-  br: [],
-  col: [],
-  code: [],
-  div: [],
-  em: [],
-  hr: [],
-  h1: [],
-  h2: [],
-  h3: [],
-  h4: [],
-  h5: [],
-  h6: [],
-  i: [],
-  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
-  li: [],
-  ol: [],
-  p: [],
-  pre: [],
-  s: [],
-  small: [],
-  span: [],
-  sub: [],
-  sup: [],
-  strong: [],
-  u: [],
-  ul: []
-};
-// js-docs-end allow-list
-
-const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
-
-/**
- * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
- * contexts.
- *
- * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
- */
-// eslint-disable-next-line unicorn/better-regex
-const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
-const allowedAttribute = (attribute, allowedAttributeList) => {
-  const attributeName = attribute.nodeName.toLowerCase();
-  if (allowedAttributeList.includes(attributeName)) {
-    if (uriAttributes.has(attributeName)) {
-      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
-    }
-    return true;
-  }
-
-  // Check if a regular expression validates the attribute.
-  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
-};
-function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
-  if (!unsafeHtml.length) {
-    return unsafeHtml;
-  }
-  if (sanitizeFunction && typeof sanitizeFunction === 'function') {
-    return sanitizeFunction(unsafeHtml);
-  }
-  const domParser = new window.DOMParser();
-  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
-  const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
-  for (const element of elements) {
-    const elementName = element.nodeName.toLowerCase();
-    if (!Object.keys(allowList).includes(elementName)) {
-      element.remove();
-      continue;
-    }
-    const attributeList = [].concat(...element.attributes);
-    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
-    for (const attribute of attributeList) {
-      if (!allowedAttribute(attribute, allowedAttributes)) {
-        element.removeAttribute(attribute.nodeName);
-      }
-    }
-  }
-  return createdDocument.body.innerHTML;
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/template-factory.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$5 = 'TemplateFactory';
-const Default$4 = {
-  allowList: DefaultAllowlist,
-  content: {},
-  // { selector : text ,  selector2 : text2 , }
-  extraClass: '',
-  html: false,
-  sanitize: true,
-  sanitizeFn: null,
-  template: '<div></div>'
-};
-const DefaultType$4 = {
-  allowList: 'object',
-  content: 'object',
-  extraClass: '(string|function)',
-  html: 'boolean',
-  sanitize: 'boolean',
-  sanitizeFn: '(null|function)',
-  template: 'string'
-};
-const DefaultContentType = {
-  entry: '(string|element|function|null)',
-  selector: '(string|element)'
-};
-
-/**
- * Class definition
- */
-
-class TemplateFactory extends Config {
-  constructor(config) {
-    super();
-    this._config = this._getConfig(config);
-  }
-
-  // Getters
-  static get Default() {
-    return Default$4;
-  }
-  static get DefaultType() {
-    return DefaultType$4;
-  }
-  static get NAME() {
-    return NAME$5;
-  }
-
-  // Public
-  getContent() {
-    return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
-  }
-  hasContent() {
-    return this.getContent().length > 0;
-  }
-  changeContent(content) {
-    this._checkContent(content);
-    this._config.content = {
-      ...this._config.content,
-      ...content
-    };
-    return this;
-  }
-  toHtml() {
-    const templateWrapper = document.createElement('div');
-    templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
-    for (const [selector, text] of Object.entries(this._config.content)) {
-      this._setContent(templateWrapper, text, selector);
-    }
-    const template = templateWrapper.children[0];
-    const extraClass = this._resolvePossibleFunction(this._config.extraClass);
-    if (extraClass) {
-      template.classList.add(...extraClass.split(' '));
-    }
-    return template;
-  }
-
-  // Private
-  _typeCheckConfig(config) {
-    super._typeCheckConfig(config);
-    this._checkContent(config.content);
-  }
-  _checkContent(arg) {
-    for (const [selector, content] of Object.entries(arg)) {
-      super._typeCheckConfig({
-        selector,
-        entry: content
-      }, DefaultContentType);
-    }
-  }
-  _setContent(template, content, selector) {
-    const templateElement = SelectorEngine.findOne(selector, template);
-    if (!templateElement) {
-      return;
-    }
-    content = this._resolvePossibleFunction(content);
-    if (!content) {
-      templateElement.remove();
-      return;
-    }
-    if (isElement(content)) {
-      this._putElementInTemplate(getElement(content), templateElement);
-      return;
-    }
-    if (this._config.html) {
-      templateElement.innerHTML = this._maybeSanitize(content);
-      return;
-    }
-    templateElement.textContent = content;
-  }
-  _maybeSanitize(arg) {
-    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
-  }
-  _resolvePossibleFunction(arg) {
-    return execute(arg, [this]);
-  }
-  _putElementInTemplate(element, templateElement) {
-    if (this._config.html) {
-      templateElement.innerHTML = '';
-      templateElement.append(element);
-      return;
-    }
-    templateElement.textContent = element.textContent;
-  }
-}
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap tooltip.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$4 = 'tooltip';
-const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
-const CLASS_NAME_FADE$2 = 'fade';
-const CLASS_NAME_MODAL = 'modal';
-const CLASS_NAME_SHOW$2 = 'show';
-const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
-const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
-const EVENT_MODAL_HIDE = 'hide.bs.modal';
-const TRIGGER_HOVER = 'hover';
-const TRIGGER_FOCUS = 'focus';
-const TRIGGER_CLICK = 'click';
-const TRIGGER_MANUAL = 'manual';
-const EVENT_HIDE$2 = 'hide';
-const EVENT_HIDDEN$2 = 'hidden';
-const EVENT_SHOW$2 = 'show';
-const EVENT_SHOWN$2 = 'shown';
-const EVENT_INSERTED = 'inserted';
-const EVENT_CLICK$1 = 'click';
-const EVENT_FOCUSIN$1 = 'focusin';
-const EVENT_FOCUSOUT$1 = 'focusout';
-const EVENT_MOUSEENTER = 'mouseenter';
-const EVENT_MOUSELEAVE = 'mouseleave';
-const AttachmentMap = {
-  AUTO: 'auto',
-  TOP: 'top',
-  RIGHT: isRTL() ? 'left' : 'right',
-  BOTTOM: 'bottom',
-  LEFT: isRTL() ? 'right' : 'left'
-};
-const Default$3 = {
-  allowList: DefaultAllowlist,
-  animation: true,
-  boundary: 'clippingParents',
-  container: false,
-  customClass: '',
-  delay: 0,
-  fallbackPlacements: ['top', 'right', 'bottom', 'left'],
-  html: false,
-  offset: [0, 6],
-  placement: 'top',
-  popperConfig: null,
-  sanitize: true,
-  sanitizeFn: null,
-  selector: false,
-  template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
-  title: '',
-  trigger: 'hover focus'
-};
-const DefaultType$3 = {
-  allowList: 'object',
-  animation: 'boolean',
-  boundary: '(string|element)',
-  container: '(string|element|boolean)',
-  customClass: '(string|function)',
-  delay: '(number|object)',
-  fallbackPlacements: 'array',
-  html: 'boolean',
-  offset: '(array|string|function)',
-  placement: '(string|function)',
-  popperConfig: '(null|object|function)',
-  sanitize: 'boolean',
-  sanitizeFn: '(null|function)',
-  selector: '(string|boolean)',
-  template: 'string',
-  title: '(string|element|function)',
-  trigger: 'string'
-};
-
-/**
- * Class definition
- */
-
-class Tooltip extends BaseComponent {
-  constructor(element, config) {
-    if (typeof Popper === 'undefined') {
-      throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
-    }
-    super(element, config);
-
-    // Private
-    this._isEnabled = true;
-    this._timeout = 0;
-    this._isHovered = null;
-    this._activeTrigger = {};
-    this._popper = null;
-    this._templateFactory = null;
-    this._newContent = null;
-
-    // Protected
-    this.tip = null;
-    this._setListeners();
-    if (!this._config.selector) {
-      this._fixTitle();
-    }
-  }
-
-  // Getters
-  static get Default() {
-    return Default$3;
-  }
-  static get DefaultType() {
-    return DefaultType$3;
-  }
-  static get NAME() {
-    return NAME$4;
-  }
-
-  // Public
-  enable() {
-    this._isEnabled = true;
-  }
-  disable() {
-    this._isEnabled = false;
-  }
-  toggleEnabled() {
-    this._isEnabled = !this._isEnabled;
-  }
-  toggle() {
-    if (!this._isEnabled) {
-      return;
-    }
-    this._activeTrigger.click = !this._activeTrigger.click;
-    if (this._isShown()) {
-      this._leave();
-      return;
-    }
-    this._enter();
-  }
-  dispose() {
-    clearTimeout(this._timeout);
-    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-    if (this._element.getAttribute('data-bs-original-title')) {
-      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
-    }
-    this._disposePopper();
-    super.dispose();
-  }
-  show() {
-    if (this._element.style.display === 'none') {
-      throw new Error('Please use show on visible elements');
-    }
-    if (!(this._isWithContent() && this._isEnabled)) {
-      return;
-    }
-    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
-    const shadowRoot = findShadowRoot(this._element);
-    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
-    if (showEvent.defaultPrevented || !isInTheDom) {
-      return;
-    }
-
-    // TODO: v6 remove this or make it optional
-    this._disposePopper();
-    const tip = this._getTipElement();
-    this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
-    const {
-      container
-    } = this._config;
-    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
-      container.append(tip);
-      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
-    }
-    this._popper = this._createPopper(tip);
-    tip.classList.add(CLASS_NAME_SHOW$2);
-
-    // If this is a touch-enabled device we add extra
-    // empty mouseover listeners to the body's immediate children;
-    // only needed because of broken event delegation on iOS
-    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-    if ('ontouchstart' in document.documentElement) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.on(element, 'mouseover', noop);
-      }
-    }
-    const complete = () => {
-      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
-      if (this._isHovered === false) {
-        this._leave();
-      }
-      this._isHovered = false;
-    };
-    this._queueCallback(complete, this.tip, this._isAnimated());
-  }
-  hide() {
-    if (!this._isShown()) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    const tip = this._getTipElement();
-    tip.classList.remove(CLASS_NAME_SHOW$2);
-
-    // If this is a touch-enabled device we remove the extra
-    // empty mouseover listeners we added for iOS support
-    if ('ontouchstart' in document.documentElement) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.off(element, 'mouseover', noop);
-      }
-    }
-    this._activeTrigger[TRIGGER_CLICK] = false;
-    this._activeTrigger[TRIGGER_FOCUS] = false;
-    this._activeTrigger[TRIGGER_HOVER] = false;
-    this._isHovered = null; // it is a trick to support manual triggering
-
-    const complete = () => {
-      if (this._isWithActiveTrigger()) {
-        return;
-      }
-      if (!this._isHovered) {
-        this._disposePopper();
-      }
-      this._element.removeAttribute('aria-describedby');
-      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
-    };
-    this._queueCallback(complete, this.tip, this._isAnimated());
-  }
-  update() {
-    if (this._popper) {
-      this._popper.update();
-    }
-  }
-
-  // Protected
-  _isWithContent() {
-    return Boolean(this._getTitle());
-  }
-  _getTipElement() {
-    if (!this.tip) {
-      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
-    }
-    return this.tip;
-  }
-  _createTipElement(content) {
-    const tip = this._getTemplateFactory(content).toHtml();
-
-    // TODO: remove this check in v6
-    if (!tip) {
-      return null;
-    }
-    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
-    // TODO: v6 the following can be achieved with CSS only
-    tip.classList.add(`bs-${this.constructor.NAME}-auto`);
-    const tipId = getUID(this.constructor.NAME).toString();
-    tip.setAttribute('id', tipId);
-    if (this._isAnimated()) {
-      tip.classList.add(CLASS_NAME_FADE$2);
-    }
-    return tip;
-  }
-  setContent(content) {
-    this._newContent = content;
-    if (this._isShown()) {
-      this._disposePopper();
-      this.show();
-    }
-  }
-  _getTemplateFactory(content) {
-    if (this._templateFactory) {
-      this._templateFactory.changeContent(content);
-    } else {
-      this._templateFactory = new TemplateFactory({
-        ...this._config,
-        // the `content` var has to be after `this._config`
-        // to override config.content in case of popover
-        content,
-        extraClass: this._resolvePossibleFunction(this._config.customClass)
-      });
-    }
-    return this._templateFactory;
-  }
-  _getContentForTemplate() {
-    return {
-      [SELECTOR_TOOLTIP_INNER]: this._getTitle()
-    };
-  }
-  _getTitle() {
-    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
-  }
-
-  // Private
-  _initializeOnDelegatedTarget(event) {
-    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
-  }
-  _isAnimated() {
-    return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
-  }
-  _isShown() {
-    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
-  }
-  _createPopper(tip) {
-    const placement = execute(this._config.placement, [this, tip, this._element]);
-    const attachment = AttachmentMap[placement.toUpperCase()];
-    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));
-  }
-  _getOffset() {
-    const {
-      offset
-    } = this._config;
-    if (typeof offset === 'string') {
-      return offset.split(',').map(value => Number.parseInt(value, 10));
-    }
-    if (typeof offset === 'function') {
-      return popperData => offset(popperData, this._element);
-    }
-    return offset;
-  }
-  _resolvePossibleFunction(arg) {
-    return execute(arg, [this._element]);
-  }
-  _getPopperConfig(attachment) {
-    const defaultBsPopperConfig = {
-      placement: attachment,
-      modifiers: [{
-        name: 'flip',
-        options: {
-          fallbackPlacements: this._config.fallbackPlacements
-        }
-      }, {
-        name: 'offset',
-        options: {
-          offset: this._getOffset()
-        }
-      }, {
-        name: 'preventOverflow',
-        options: {
-          boundary: this._config.boundary
-        }
-      }, {
-        name: 'arrow',
-        options: {
-          element: `.${this.constructor.NAME}-arrow`
-        }
-      }, {
-        name: 'preSetPlacement',
-        enabled: true,
-        phase: 'beforeMain',
-        fn: data => {
-          // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
-          // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
-          this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
-        }
-      }]
-    };
-    return {
-      ...defaultBsPopperConfig,
-      ...execute(this._config.popperConfig, [defaultBsPopperConfig])
-    };
-  }
-  _setListeners() {
-    const triggers = this._config.trigger.split(' ');
-    for (const trigger of triggers) {
-      if (trigger === 'click') {
-        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
-          const context = this._initializeOnDelegatedTarget(event);
-          context.toggle();
-        });
-      } else if (trigger !== TRIGGER_MANUAL) {
-        const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
-        const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
-        EventHandler.on(this._element, eventIn, this._config.selector, event => {
-          const context = this._initializeOnDelegatedTarget(event);
-          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
-          context._enter();
-        });
-        EventHandler.on(this._element, eventOut, this._config.selector, event => {
-          const context = this._initializeOnDelegatedTarget(event);
-          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
-          context._leave();
-        });
-      }
-    }
-    this._hideModalHandler = () => {
-      if (this._element) {
-        this.hide();
-      }
-    };
-    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-  }
-  _fixTitle() {
-    const title = this._element.getAttribute('title');
-    if (!title) {
-      return;
-    }
-    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
-      this._element.setAttribute('aria-label', title);
-    }
-    this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
-    this._element.removeAttribute('title');
-  }
-  _enter() {
-    if (this._isShown() || this._isHovered) {
-      this._isHovered = true;
-      return;
-    }
-    this._isHovered = true;
-    this._setTimeout(() => {
-      if (this._isHovered) {
-        this.show();
-      }
-    }, this._config.delay.show);
-  }
-  _leave() {
-    if (this._isWithActiveTrigger()) {
-      return;
-    }
-    this._isHovered = false;
-    this._setTimeout(() => {
-      if (!this._isHovered) {
-        this.hide();
-      }
-    }, this._config.delay.hide);
-  }
-  _setTimeout(handler, timeout) {
-    clearTimeout(this._timeout);
-    this._timeout = setTimeout(handler, timeout);
-  }
-  _isWithActiveTrigger() {
-    return Object.values(this._activeTrigger).includes(true);
-  }
-  _getConfig(config) {
-    const dataAttributes = Manipulator.getDataAttributes(this._element);
-    for (const dataAttribute of Object.keys(dataAttributes)) {
-      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
-        delete dataAttributes[dataAttribute];
-      }
-    }
-    config = {
-      ...dataAttributes,
-      ...(typeof config === 'object' && config ? config : {})
-    };
-    config = this._mergeConfigObj(config);
-    config = this._configAfterMerge(config);
-    this._typeCheckConfig(config);
-    return config;
-  }
-  _configAfterMerge(config) {
-    config.container = config.container === false ? document.body : getElement(config.container);
-    if (typeof config.delay === 'number') {
-      config.delay = {
-        show: config.delay,
-        hide: config.delay
-      };
-    }
-    if (typeof config.title === 'number') {
-      config.title = config.title.toString();
-    }
-    if (typeof config.content === 'number') {
-      config.content = config.content.toString();
-    }
-    return config;
-  }
-  _getDelegateConfig() {
-    const config = {};
-    for (const [key, value] of Object.entries(this._config)) {
-      if (this.constructor.Default[key] !== value) {
-        config[key] = value;
-      }
-    }
-    config.selector = false;
-    config.trigger = 'manual';
-
-    // In the future can be replaced with:
-    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
-    // `Object.fromEntries(keysWithDifferentValues)`
-    return config;
-  }
-  _disposePopper() {
-    if (this._popper) {
-      this._popper.destroy();
-      this._popper = null;
-    }
-    if (this.tip) {
-      this.tip.remove();
-      this.tip = null;
-    }
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Tooltip.getOrCreateInstance(this, config);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (typeof data[config] === 'undefined') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config]();
-    });
-  }
-}
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Tooltip);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap popover.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$3 = 'popover';
-const SELECTOR_TITLE = '.popover-header';
-const SELECTOR_CONTENT = '.popover-body';
-const Default$2 = {
-  ...Tooltip.Default,
-  content: '',
-  offset: [0, 8],
-  placement: 'right',
-  template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
-  trigger: 'click'
-};
-const DefaultType$2 = {
-  ...Tooltip.DefaultType,
-  content: '(null|string|element|function)'
-};
-
-/**
- * Class definition
- */
-
-class Popover extends Tooltip {
-  // Getters
-  static get Default() {
-    return Default$2;
-  }
-  static get DefaultType() {
-    return DefaultType$2;
-  }
-  static get NAME() {
-    return NAME$3;
-  }
-
-  // Overrides
-  _isWithContent() {
-    return this._getTitle() || this._getContent();
-  }
-
-  // Private
-  _getContentForTemplate() {
-    return {
-      [SELECTOR_TITLE]: this._getTitle(),
-      [SELECTOR_CONTENT]: this._getContent()
-    };
-  }
-  _getContent() {
-    return this._resolvePossibleFunction(this._config.content);
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Popover.getOrCreateInstance(this, config);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (typeof data[config] === 'undefined') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config]();
-    });
-  }
-}
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Popover);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap scrollspy.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$2 = 'scrollspy';
-const DATA_KEY$2 = 'bs.scrollspy';
-const EVENT_KEY$2 = `.${DATA_KEY$2}`;
-const DATA_API_KEY = '.data-api';
-const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
-const EVENT_CLICK = `click${EVENT_KEY$2}`;
-const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
-const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
-const CLASS_NAME_ACTIVE$1 = 'active';
-const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
-const SELECTOR_TARGET_LINKS = '[href]';
-const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
-const SELECTOR_NAV_LINKS = '.nav-link';
-const SELECTOR_NAV_ITEMS = '.nav-item';
-const SELECTOR_LIST_ITEMS = '.list-group-item';
-const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
-const SELECTOR_DROPDOWN = '.dropdown';
-const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
-const Default$1 = {
-  offset: null,
-  // TODO: v6 @deprecated, keep it for backwards compatibility reasons
-  rootMargin: '0px 0px -25%',
-  smoothScroll: false,
-  target: null,
-  threshold: [0.1, 0.5, 1]
-};
-const DefaultType$1 = {
-  offset: '(number|null)',
-  // TODO v6 @deprecated, keep it for backwards compatibility reasons
-  rootMargin: 'string',
-  smoothScroll: 'boolean',
-  target: 'element',
-  threshold: 'array'
-};
-
-/**
- * Class definition
- */
-
-class ScrollSpy extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-
-    // this._element is the observablesContainer and config.target the menu links wrapper
-    this._targetLinks = new Map();
-    this._observableSections = new Map();
-    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
-    this._activeTarget = null;
-    this._observer = null;
-    this._previousScrollData = {
-      visibleEntryTop: 0,
-      parentScrollTop: 0
-    };
-    this.refresh(); // initialize
-  }
-
-  // Getters
-  static get Default() {
-    return Default$1;
-  }
-  static get DefaultType() {
-    return DefaultType$1;
-  }
-  static get NAME() {
-    return NAME$2;
-  }
-
-  // Public
-  refresh() {
-    this._initializeTargetsAndObservables();
-    this._maybeEnableSmoothScroll();
-    if (this._observer) {
-      this._observer.disconnect();
-    } else {
-      this._observer = this._getNewObserver();
-    }
-    for (const section of this._observableSections.values()) {
-      this._observer.observe(section);
-    }
-  }
-  dispose() {
-    this._observer.disconnect();
-    super.dispose();
-  }
-
-  // Private
-  _configAfterMerge(config) {
-    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
-    config.target = getElement(config.target) || document.body;
-
-    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
-    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
-    if (typeof config.threshold === 'string') {
-      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
-    }
-    return config;
-  }
-  _maybeEnableSmoothScroll() {
-    if (!this._config.smoothScroll) {
-      return;
-    }
-
-    // unregister any previous listeners
-    EventHandler.off(this._config.target, EVENT_CLICK);
-    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
-      const observableSection = this._observableSections.get(event.target.hash);
-      if (observableSection) {
-        event.preventDefault();
-        const root = this._rootElement || window;
-        const height = observableSection.offsetTop - this._element.offsetTop;
-        if (root.scrollTo) {
-          root.scrollTo({
-            top: height,
-            behavior: 'smooth'
-          });
-          return;
-        }
-
-        // Chrome 60 doesn't support `scrollTo`
-        root.scrollTop = height;
-      }
-    });
-  }
-  _getNewObserver() {
-    const options = {
-      root: this._rootElement,
-      threshold: this._config.threshold,
-      rootMargin: this._config.rootMargin
-    };
-    return new IntersectionObserver(entries => this._observerCallback(entries), options);
-  }
-
-  // The logic of selection
-  _observerCallback(entries) {
-    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
-    const activate = entry => {
-      this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
-      this._process(targetElement(entry));
-    };
-    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
-    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
-    this._previousScrollData.parentScrollTop = parentScrollTop;
-    for (const entry of entries) {
-      if (!entry.isIntersecting) {
-        this._activeTarget = null;
-        this._clearActiveClass(targetElement(entry));
-        continue;
-      }
-      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
-      // if we are scrolling down, pick the bigger offsetTop
-      if (userScrollsDown && entryIsLowerThanPrevious) {
-        activate(entry);
-        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
-        if (!parentScrollTop) {
-          return;
-        }
-        continue;
-      }
-
-      // if we are scrolling up, pick the smallest offsetTop
-      if (!userScrollsDown && !entryIsLowerThanPrevious) {
-        activate(entry);
-      }
-    }
-  }
-  _initializeTargetsAndObservables() {
-    this._targetLinks = new Map();
-    this._observableSections = new Map();
-    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
-    for (const anchor of targetLinks) {
-      // ensure that the anchor has an id and is not disabled
-      if (!anchor.hash || isDisabled(anchor)) {
-        continue;
-      }
-      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
-
-      // ensure that the observableSection exists & is visible
-      if (isVisible(observableSection)) {
-        this._targetLinks.set(decodeURI(anchor.hash), anchor);
-        this._observableSections.set(anchor.hash, observableSection);
-      }
-    }
-  }
-  _process(target) {
-    if (this._activeTarget === target) {
-      return;
-    }
-    this._clearActiveClass(this._config.target);
-    this._activeTarget = target;
-    target.classList.add(CLASS_NAME_ACTIVE$1);
-    this._activateParents(target);
-    EventHandler.trigger(this._element, EVENT_ACTIVATE, {
-      relatedTarget: target
-    });
-  }
-  _activateParents(target) {
-    // Activate dropdown parents
-    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
-      return;
-    }
-    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
-      // Set triggered links parents as active
-      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
-      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
-        item.classList.add(CLASS_NAME_ACTIVE$1);
-      }
-    }
-  }
-  _clearActiveClass(parent) {
-    parent.classList.remove(CLASS_NAME_ACTIVE$1);
-    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
-    for (const node of activeNodes) {
-      node.classList.remove(CLASS_NAME_ACTIVE$1);
-    }
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = ScrollSpy.getOrCreateInstance(this, config);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config]();
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
-  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
-    ScrollSpy.getOrCreateInstance(spy);
-  }
-});
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(ScrollSpy);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap tab.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$1 = 'tab';
-const DATA_KEY$1 = 'bs.tab';
-const EVENT_KEY$1 = `.${DATA_KEY$1}`;
-const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
-const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
-const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
-const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
-const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
-const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
-const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
-const ARROW_LEFT_KEY = 'ArrowLeft';
-const ARROW_RIGHT_KEY = 'ArrowRight';
-const ARROW_UP_KEY = 'ArrowUp';
-const ARROW_DOWN_KEY = 'ArrowDown';
-const HOME_KEY = 'Home';
-const END_KEY = 'End';
-const CLASS_NAME_ACTIVE = 'active';
-const CLASS_NAME_FADE$1 = 'fade';
-const CLASS_NAME_SHOW$1 = 'show';
-const CLASS_DROPDOWN = 'dropdown';
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
-const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
-const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';
-const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
-const SELECTOR_OUTER = '.nav-item, .list-group-item';
-const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
-const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
-const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
-const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
-
-/**
- * Class definition
- */
-
-class Tab extends BaseComponent {
-  constructor(element) {
-    super(element);
-    this._parent = this._element.closest(SELECTOR_TAB_PANEL);
-    if (!this._parent) {
-      return;
-      // TODO: should throw exception in v6
-      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
-    }
-
-    // Set up initial aria attributes
-    this._setInitialAttributes(this._parent, this._getChildren());
-    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
-  }
-
-  // Getters
-  static get NAME() {
-    return NAME$1;
-  }
-
-  // Public
-  show() {
-    // Shows this elem and deactivate the active sibling if exists
-    const innerElem = this._element;
-    if (this._elemIsActive(innerElem)) {
-      return;
-    }
-
-    // Search for active tab on same parent to deactivate it
-    const active = this._getActiveElem();
-    const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
-      relatedTarget: innerElem
-    }) : null;
-    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
-      relatedTarget: active
-    });
-    if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
-      return;
-    }
-    this._deactivate(active, innerElem);
-    this._activate(innerElem, active);
-  }
-
-  // Private
-  _activate(element, relatedElem) {
-    if (!element) {
-      return;
-    }
-    element.classList.add(CLASS_NAME_ACTIVE);
-    this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
-
-    const complete = () => {
-      if (element.getAttribute('role') !== 'tab') {
-        element.classList.add(CLASS_NAME_SHOW$1);
-        return;
-      }
-      element.removeAttribute('tabindex');
-      element.setAttribute('aria-selected', true);
-      this._toggleDropDown(element, true);
-      EventHandler.trigger(element, EVENT_SHOWN$1, {
-        relatedTarget: relatedElem
-      });
-    };
-    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
-  }
-  _deactivate(element, relatedElem) {
-    if (!element) {
-      return;
-    }
-    element.classList.remove(CLASS_NAME_ACTIVE);
-    element.blur();
-    this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
-
-    const complete = () => {
-      if (element.getAttribute('role') !== 'tab') {
-        element.classList.remove(CLASS_NAME_SHOW$1);
-        return;
-      }
-      element.setAttribute('aria-selected', false);
-      element.setAttribute('tabindex', '-1');
-      this._toggleDropDown(element, false);
-      EventHandler.trigger(element, EVENT_HIDDEN$1, {
-        relatedTarget: relatedElem
-      });
-    };
-    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
-  }
-  _keydown(event) {
-    if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
-      return;
-    }
-    event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
-    event.preventDefault();
-    const children = this._getChildren().filter(element => !isDisabled(element));
-    let nextActiveElement;
-    if ([HOME_KEY, END_KEY].includes(event.key)) {
-      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
-    } else {
-      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
-      nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
-    }
-    if (nextActiveElement) {
-      nextActiveElement.focus({
-        preventScroll: true
-      });
-      Tab.getOrCreateInstance(nextActiveElement).show();
-    }
-  }
-  _getChildren() {
-    // collection of inner elements
-    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
-  }
-  _getActiveElem() {
-    return this._getChildren().find(child => this._elemIsActive(child)) || null;
-  }
-  _setInitialAttributes(parent, children) {
-    this._setAttributeIfNotExists(parent, 'role', 'tablist');
-    for (const child of children) {
-      this._setInitialAttributesOnChild(child);
-    }
-  }
-  _setInitialAttributesOnChild(child) {
-    child = this._getInnerElement(child);
-    const isActive = this._elemIsActive(child);
-    const outerElem = this._getOuterElement(child);
-    child.setAttribute('aria-selected', isActive);
-    if (outerElem !== child) {
-      this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
-    }
-    if (!isActive) {
-      child.setAttribute('tabindex', '-1');
-    }
-    this._setAttributeIfNotExists(child, 'role', 'tab');
-
-    // set attributes to the related panel too
-    this._setInitialAttributesOnTargetPanel(child);
-  }
-  _setInitialAttributesOnTargetPanel(child) {
-    const target = SelectorEngine.getElementFromSelector(child);
-    if (!target) {
-      return;
-    }
-    this._setAttributeIfNotExists(target, 'role', 'tabpanel');
-    if (child.id) {
-      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
-    }
-  }
-  _toggleDropDown(element, open) {
-    const outerElem = this._getOuterElement(element);
-    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
-      return;
-    }
-    const toggle = (selector, className) => {
-      const element = SelectorEngine.findOne(selector, outerElem);
-      if (element) {
-        element.classList.toggle(className, open);
-      }
-    };
-    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
-    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
-    outerElem.setAttribute('aria-expanded', open);
-  }
-  _setAttributeIfNotExists(element, attribute, value) {
-    if (!element.hasAttribute(attribute)) {
-      element.setAttribute(attribute, value);
-    }
-  }
-  _elemIsActive(elem) {
-    return elem.classList.contains(CLASS_NAME_ACTIVE);
-  }
-
-  // Try to get the inner element (usually the .nav-link)
-  _getInnerElement(elem) {
-    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
-  }
-
-  // Try to get the outer element (usually the .nav-item)
-  _getOuterElement(elem) {
-    return elem.closest(SELECTOR_OUTER) || elem;
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Tab.getOrCreateInstance(this);
-      if (typeof config !== 'string') {
-        return;
-      }
-      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-        throw new TypeError(`No method named "${config}"`);
-      }
-      data[config]();
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
-  if (['A', 'AREA'].includes(this.tagName)) {
-    event.preventDefault();
-  }
-  if (isDisabled(this)) {
-    return;
-  }
-  Tab.getOrCreateInstance(this).show();
-});
-
-/**
- * Initialize on focus
- */
-EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
-  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
-    Tab.getOrCreateInstance(element);
-  }
-});
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Tab);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap toast.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME = 'toast';
-const DATA_KEY = 'bs.toast';
-const EVENT_KEY = `.${DATA_KEY}`;
-const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
-const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
-const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
-const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
-const EVENT_HIDE = `hide${EVENT_KEY}`;
-const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
-const EVENT_SHOW = `show${EVENT_KEY}`;
-const EVENT_SHOWN = `shown${EVENT_KEY}`;
-const CLASS_NAME_FADE = 'fade';
-const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
-const CLASS_NAME_SHOW = 'show';
-const CLASS_NAME_SHOWING = 'showing';
-const DefaultType = {
-  animation: 'boolean',
-  autohide: 'boolean',
-  delay: 'number'
-};
-const Default = {
-  animation: true,
-  autohide: true,
-  delay: 5000
-};
-
-/**
- * Class definition
- */
-
-class Toast extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._timeout = null;
-    this._hasMouseInteraction = false;
-    this._hasKeyboardInteraction = false;
-    this._setListeners();
-  }
-
-  // Getters
-  static get Default() {
-    return Default;
-  }
-  static get DefaultType() {
-    return DefaultType;
-  }
-  static get NAME() {
-    return NAME;
-  }
-
-  // Public
-  show() {
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._clearTimeout();
-    if (this._config.animation) {
-      this._element.classList.add(CLASS_NAME_FADE);
-    }
-    const complete = () => {
-      this._element.classList.remove(CLASS_NAME_SHOWING);
-      EventHandler.trigger(this._element, EVENT_SHOWN);
-      this._maybeScheduleHide();
-    };
-    this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
-    reflow(this._element);
-    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
-    this._queueCallback(complete, this._element, this._config.animation);
-  }
-  hide() {
-    if (!this.isShown()) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    const complete = () => {
-      this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
-      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
-      EventHandler.trigger(this._element, EVENT_HIDDEN);
-    };
-    this._element.classList.add(CLASS_NAME_SHOWING);
-    this._queueCallback(complete, this._element, this._config.animation);
-  }
-  dispose() {
-    this._clearTimeout();
-    if (this.isShown()) {
-      this._element.classList.remove(CLASS_NAME_SHOW);
-    }
-    super.dispose();
-  }
-  isShown() {
-    return this._element.classList.contains(CLASS_NAME_SHOW);
-  }
-
-  // Private
-
-  _maybeScheduleHide() {
-    if (!this._config.autohide) {
-      return;
-    }
-    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
-      return;
-    }
-    this._timeout = setTimeout(() => {
-      this.hide();
-    }, this._config.delay);
-  }
-  _onInteraction(event, isInteracting) {
-    switch (event.type) {
-      case 'mouseover':
-      case 'mouseout':
-        {
-          this._hasMouseInteraction = isInteracting;
-          break;
-        }
-      case 'focusin':
-      case 'focusout':
-        {
-          this._hasKeyboardInteraction = isInteracting;
-          break;
-        }
-    }
-    if (isInteracting) {
-      this._clearTimeout();
-      return;
-    }
-    const nextElement = event.relatedTarget;
-    if (this._element === nextElement || this._element.contains(nextElement)) {
-      return;
-    }
-    this._maybeScheduleHide();
-  }
-  _setListeners() {
-    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
-    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
-    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
-    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
-  }
-  _clearTimeout() {
-    clearTimeout(this._timeout);
-    this._timeout = null;
-  }
-
-  // Static
-  static jQueryInterface(config) {
-    return this.each(function () {
-      const data = Toast.getOrCreateInstance(this, config);
-      if (typeof config === 'string') {
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](this);
-      }
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-enableDismissTrigger(Toast);
-
-/**
- * jQuery
- */
-
-defineJQueryPlugin(Toast);
-
-export { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };
-//# sourceMappingURL=bootstrap.esm.js.map

File diff suppressed because it is too large
+ 0 - 0
public/libs/bootstrap/dist/js/bootstrap.esm.js.map


File diff suppressed because it is too large
+ 0 - 5
public/libs/bootstrap/dist/js/bootstrap.esm.min.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/bootstrap/dist/js/bootstrap.esm.min.js.map


+ 0 - 4494
public/libs/bootstrap/dist/js/bootstrap.js

@@ -1,4494 +0,0 @@
-/*!
-  * Bootstrap v5.3.1 (https://getbootstrap.com/)
-  * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) :
-  typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) :
-  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper));
-})(this, (function (Popper) { 'use strict';
-
-  function _interopNamespaceDefault(e) {
-    const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
-    if (e) {
-      for (const k in e) {
-        if (k !== 'default') {
-          const d = Object.getOwnPropertyDescriptor(e, k);
-          Object.defineProperty(n, k, d.get ? d : {
-            enumerable: true,
-            get: () => e[k]
-          });
-        }
-      }
-    }
-    n.default = e;
-    return Object.freeze(n);
-  }
-
-  const Popper__namespace = /*#__PURE__*/_interopNamespaceDefault(Popper);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/data.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  /**
-   * Constants
-   */
-
-  const elementMap = new Map();
-  const Data = {
-    set(element, key, instance) {
-      if (!elementMap.has(element)) {
-        elementMap.set(element, new Map());
-      }
-      const instanceMap = elementMap.get(element);
-
-      // make it clear we only want one instance per element
-      // can be removed later when multiple key/instances are fine to be used
-      if (!instanceMap.has(key) && instanceMap.size !== 0) {
-        // eslint-disable-next-line no-console
-        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
-        return;
-      }
-      instanceMap.set(key, instance);
-    },
-    get(element, key) {
-      if (elementMap.has(element)) {
-        return elementMap.get(element).get(key) || null;
-      }
-      return null;
-    },
-    remove(element, key) {
-      if (!elementMap.has(element)) {
-        return;
-      }
-      const instanceMap = elementMap.get(element);
-      instanceMap.delete(key);
-
-      // free up element references if there are no instances left for an element
-      if (instanceMap.size === 0) {
-        elementMap.delete(element);
-      }
-    }
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/index.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const MAX_UID = 1000000;
-  const MILLISECONDS_MULTIPLIER = 1000;
-  const TRANSITION_END = 'transitionend';
-
-  /**
-   * Properly escape IDs selectors to handle weird IDs
-   * @param {string} selector
-   * @returns {string}
-   */
-  const parseSelector = selector => {
-    if (selector && window.CSS && window.CSS.escape) {
-      // document.querySelector needs escaping to handle IDs (html5+) containing for instance /
-      selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
-    }
-    return selector;
-  };
-
-  // Shout-out Angus Croll (https://goo.gl/pxwQGp)
-  const toType = object => {
-    if (object === null || object === undefined) {
-      return `${object}`;
-    }
-    return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
-  };
-
-  /**
-   * Public Util API
-   */
-
-  const getUID = prefix => {
-    do {
-      prefix += Math.floor(Math.random() * MAX_UID);
-    } while (document.getElementById(prefix));
-    return prefix;
-  };
-  const getTransitionDurationFromElement = element => {
-    if (!element) {
-      return 0;
-    }
-
-    // Get transition-duration of the element
-    let {
-      transitionDuration,
-      transitionDelay
-    } = window.getComputedStyle(element);
-    const floatTransitionDuration = Number.parseFloat(transitionDuration);
-    const floatTransitionDelay = Number.parseFloat(transitionDelay);
-
-    // Return 0 if element or transition duration is not found
-    if (!floatTransitionDuration && !floatTransitionDelay) {
-      return 0;
-    }
-
-    // If multiple durations are defined, take the first
-    transitionDuration = transitionDuration.split(',')[0];
-    transitionDelay = transitionDelay.split(',')[0];
-    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
-  };
-  const triggerTransitionEnd = element => {
-    element.dispatchEvent(new Event(TRANSITION_END));
-  };
-  const isElement = object => {
-    if (!object || typeof object !== 'object') {
-      return false;
-    }
-    if (typeof object.jquery !== 'undefined') {
-      object = object[0];
-    }
-    return typeof object.nodeType !== 'undefined';
-  };
-  const getElement = object => {
-    // it's a jQuery object or a node element
-    if (isElement(object)) {
-      return object.jquery ? object[0] : object;
-    }
-    if (typeof object === 'string' && object.length > 0) {
-      return document.querySelector(parseSelector(object));
-    }
-    return null;
-  };
-  const isVisible = element => {
-    if (!isElement(element) || element.getClientRects().length === 0) {
-      return false;
-    }
-    const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
-    // Handle `details` element as its content may falsie appear visible when it is closed
-    const closedDetails = element.closest('details:not([open])');
-    if (!closedDetails) {
-      return elementIsVisible;
-    }
-    if (closedDetails !== element) {
-      const summary = element.closest('summary');
-      if (summary && summary.parentNode !== closedDetails) {
-        return false;
-      }
-      if (summary === null) {
-        return false;
-      }
-    }
-    return elementIsVisible;
-  };
-  const isDisabled = element => {
-    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
-      return true;
-    }
-    if (element.classList.contains('disabled')) {
-      return true;
-    }
-    if (typeof element.disabled !== 'undefined') {
-      return element.disabled;
-    }
-    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
-  };
-  const findShadowRoot = element => {
-    if (!document.documentElement.attachShadow) {
-      return null;
-    }
-
-    // Can find the shadow root otherwise it'll return the document
-    if (typeof element.getRootNode === 'function') {
-      const root = element.getRootNode();
-      return root instanceof ShadowRoot ? root : null;
-    }
-    if (element instanceof ShadowRoot) {
-      return element;
-    }
-
-    // when we don't find a shadow root
-    if (!element.parentNode) {
-      return null;
-    }
-    return findShadowRoot(element.parentNode);
-  };
-  const noop = () => {};
-
-  /**
-   * Trick to restart an element's animation
-   *
-   * @param {HTMLElement} element
-   * @return void
-   *
-   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
-   */
-  const reflow = element => {
-    element.offsetHeight; // eslint-disable-line no-unused-expressions
-  };
-
-  const getjQuery = () => {
-    if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
-      return window.jQuery;
-    }
-    return null;
-  };
-  const DOMContentLoadedCallbacks = [];
-  const onDOMContentLoaded = callback => {
-    if (document.readyState === 'loading') {
-      // add listener on the first call when the document is in loading state
-      if (!DOMContentLoadedCallbacks.length) {
-        document.addEventListener('DOMContentLoaded', () => {
-          for (const callback of DOMContentLoadedCallbacks) {
-            callback();
-          }
-        });
-      }
-      DOMContentLoadedCallbacks.push(callback);
-    } else {
-      callback();
-    }
-  };
-  const isRTL = () => document.documentElement.dir === 'rtl';
-  const defineJQueryPlugin = plugin => {
-    onDOMContentLoaded(() => {
-      const $ = getjQuery();
-      /* istanbul ignore if */
-      if ($) {
-        const name = plugin.NAME;
-        const JQUERY_NO_CONFLICT = $.fn[name];
-        $.fn[name] = plugin.jQueryInterface;
-        $.fn[name].Constructor = plugin;
-        $.fn[name].noConflict = () => {
-          $.fn[name] = JQUERY_NO_CONFLICT;
-          return plugin.jQueryInterface;
-        };
-      }
-    });
-  };
-  const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
-    return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;
-  };
-  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
-    if (!waitForTransition) {
-      execute(callback);
-      return;
-    }
-    const durationPadding = 5;
-    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
-    let called = false;
-    const handler = ({
-      target
-    }) => {
-      if (target !== transitionElement) {
-        return;
-      }
-      called = true;
-      transitionElement.removeEventListener(TRANSITION_END, handler);
-      execute(callback);
-    };
-    transitionElement.addEventListener(TRANSITION_END, handler);
-    setTimeout(() => {
-      if (!called) {
-        triggerTransitionEnd(transitionElement);
-      }
-    }, emulatedDuration);
-  };
-
-  /**
-   * Return the previous/next element of a list.
-   *
-   * @param {array} list    The list of elements
-   * @param activeElement   The active element
-   * @param shouldGetNext   Choose to get next or previous element
-   * @param isCycleAllowed
-   * @return {Element|elem} The proper element
-   */
-  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
-    const listLength = list.length;
-    let index = list.indexOf(activeElement);
-
-    // if the element does not exist in the list return an element
-    // depending on the direction and if cycle is allowed
-    if (index === -1) {
-      return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
-    }
-    index += shouldGetNext ? 1 : -1;
-    if (isCycleAllowed) {
-      index = (index + listLength) % listLength;
-    }
-    return list[Math.max(0, Math.min(index, listLength - 1))];
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/event-handler.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
-  const stripNameRegex = /\..*/;
-  const stripUidRegex = /::\d+$/;
-  const eventRegistry = {}; // Events storage
-  let uidEvent = 1;
-  const customEvents = {
-    mouseenter: 'mouseover',
-    mouseleave: 'mouseout'
-  };
-  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
-
-  /**
-   * Private methods
-   */
-
-  function makeEventUid(element, uid) {
-    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
-  }
-  function getElementEvents(element) {
-    const uid = makeEventUid(element);
-    element.uidEvent = uid;
-    eventRegistry[uid] = eventRegistry[uid] || {};
-    return eventRegistry[uid];
-  }
-  function bootstrapHandler(element, fn) {
-    return function handler(event) {
-      hydrateObj(event, {
-        delegateTarget: element
-      });
-      if (handler.oneOff) {
-        EventHandler.off(element, event.type, fn);
-      }
-      return fn.apply(element, [event]);
-    };
-  }
-  function bootstrapDelegationHandler(element, selector, fn) {
-    return function handler(event) {
-      const domElements = element.querySelectorAll(selector);
-      for (let {
-        target
-      } = event; target && target !== this; target = target.parentNode) {
-        for (const domElement of domElements) {
-          if (domElement !== target) {
-            continue;
-          }
-          hydrateObj(event, {
-            delegateTarget: target
-          });
-          if (handler.oneOff) {
-            EventHandler.off(element, event.type, selector, fn);
-          }
-          return fn.apply(target, [event]);
-        }
-      }
-    };
-  }
-  function findHandler(events, callable, delegationSelector = null) {
-    return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
-  }
-  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
-    const isDelegated = typeof handler === 'string';
-    // TODO: tooltip passes `false` instead of selector, so we need to check
-    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
-    let typeEvent = getTypeEvent(originalTypeEvent);
-    if (!nativeEvents.has(typeEvent)) {
-      typeEvent = originalTypeEvent;
-    }
-    return [isDelegated, callable, typeEvent];
-  }
-  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
-    if (typeof originalTypeEvent !== 'string' || !element) {
-      return;
-    }
-    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
-
-    // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
-    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
-    if (originalTypeEvent in customEvents) {
-      const wrapFunction = fn => {
-        return function (event) {
-          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
-            return fn.call(this, event);
-          }
-        };
-      };
-      callable = wrapFunction(callable);
-    }
-    const events = getElementEvents(element);
-    const handlers = events[typeEvent] || (events[typeEvent] = {});
-    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
-    if (previousFunction) {
-      previousFunction.oneOff = previousFunction.oneOff && oneOff;
-      return;
-    }
-    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
-    const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
-    fn.delegationSelector = isDelegated ? handler : null;
-    fn.callable = callable;
-    fn.oneOff = oneOff;
-    fn.uidEvent = uid;
-    handlers[uid] = fn;
-    element.addEventListener(typeEvent, fn, isDelegated);
-  }
-  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
-    const fn = findHandler(events[typeEvent], handler, delegationSelector);
-    if (!fn) {
-      return;
-    }
-    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
-    delete events[typeEvent][fn.uidEvent];
-  }
-  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
-    const storeElementEvent = events[typeEvent] || {};
-    for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
-      if (handlerKey.includes(namespace)) {
-        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
-      }
-    }
-  }
-  function getTypeEvent(event) {
-    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
-    event = event.replace(stripNameRegex, '');
-    return customEvents[event] || event;
-  }
-  const EventHandler = {
-    on(element, event, handler, delegationFunction) {
-      addHandler(element, event, handler, delegationFunction, false);
-    },
-    one(element, event, handler, delegationFunction) {
-      addHandler(element, event, handler, delegationFunction, true);
-    },
-    off(element, originalTypeEvent, handler, delegationFunction) {
-      if (typeof originalTypeEvent !== 'string' || !element) {
-        return;
-      }
-      const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
-      const inNamespace = typeEvent !== originalTypeEvent;
-      const events = getElementEvents(element);
-      const storeElementEvent = events[typeEvent] || {};
-      const isNamespace = originalTypeEvent.startsWith('.');
-      if (typeof callable !== 'undefined') {
-        // Simplest case: handler is passed, remove that listener ONLY.
-        if (!Object.keys(storeElementEvent).length) {
-          return;
-        }
-        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
-        return;
-      }
-      if (isNamespace) {
-        for (const elementEvent of Object.keys(events)) {
-          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
-        }
-      }
-      for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
-        const handlerKey = keyHandlers.replace(stripUidRegex, '');
-        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
-          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
-        }
-      }
-    },
-    trigger(element, event, args) {
-      if (typeof event !== 'string' || !element) {
-        return null;
-      }
-      const $ = getjQuery();
-      const typeEvent = getTypeEvent(event);
-      const inNamespace = event !== typeEvent;
-      let jQueryEvent = null;
-      let bubbles = true;
-      let nativeDispatch = true;
-      let defaultPrevented = false;
-      if (inNamespace && $) {
-        jQueryEvent = $.Event(event, args);
-        $(element).trigger(jQueryEvent);
-        bubbles = !jQueryEvent.isPropagationStopped();
-        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
-        defaultPrevented = jQueryEvent.isDefaultPrevented();
-      }
-      const evt = hydrateObj(new Event(event, {
-        bubbles,
-        cancelable: true
-      }), args);
-      if (defaultPrevented) {
-        evt.preventDefault();
-      }
-      if (nativeDispatch) {
-        element.dispatchEvent(evt);
-      }
-      if (evt.defaultPrevented && jQueryEvent) {
-        jQueryEvent.preventDefault();
-      }
-      return evt;
-    }
-  };
-  function hydrateObj(obj, meta = {}) {
-    for (const [key, value] of Object.entries(meta)) {
-      try {
-        obj[key] = value;
-      } catch (_unused) {
-        Object.defineProperty(obj, key, {
-          configurable: true,
-          get() {
-            return value;
-          }
-        });
-      }
-    }
-    return obj;
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/manipulator.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  function normalizeData(value) {
-    if (value === 'true') {
-      return true;
-    }
-    if (value === 'false') {
-      return false;
-    }
-    if (value === Number(value).toString()) {
-      return Number(value);
-    }
-    if (value === '' || value === 'null') {
-      return null;
-    }
-    if (typeof value !== 'string') {
-      return value;
-    }
-    try {
-      return JSON.parse(decodeURIComponent(value));
-    } catch (_unused) {
-      return value;
-    }
-  }
-  function normalizeDataKey(key) {
-    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
-  }
-  const Manipulator = {
-    setDataAttribute(element, key, value) {
-      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
-    },
-    removeDataAttribute(element, key) {
-      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
-    },
-    getDataAttributes(element) {
-      if (!element) {
-        return {};
-      }
-      const attributes = {};
-      const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
-      for (const key of bsKeys) {
-        let pureKey = key.replace(/^bs/, '');
-        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
-        attributes[pureKey] = normalizeData(element.dataset[key]);
-      }
-      return attributes;
-    },
-    getDataAttribute(element, key) {
-      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
-    }
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/config.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Class definition
-   */
-
-  class Config {
-    // Getters
-    static get Default() {
-      return {};
-    }
-    static get DefaultType() {
-      return {};
-    }
-    static get NAME() {
-      throw new Error('You have to implement the static method "NAME", for each component!');
-    }
-    _getConfig(config) {
-      config = this._mergeConfigObj(config);
-      config = this._configAfterMerge(config);
-      this._typeCheckConfig(config);
-      return config;
-    }
-    _configAfterMerge(config) {
-      return config;
-    }
-    _mergeConfigObj(config, element) {
-      const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
-
-      return {
-        ...this.constructor.Default,
-        ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
-        ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),
-        ...(typeof config === 'object' ? config : {})
-      };
-    }
-    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
-      for (const [property, expectedTypes] of Object.entries(configTypes)) {
-        const value = config[property];
-        const valueType = isElement(value) ? 'element' : toType(value);
-        if (!new RegExp(expectedTypes).test(valueType)) {
-          throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
-        }
-      }
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap base-component.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const VERSION = '5.3.1';
-
-  /**
-   * Class definition
-   */
-
-  class BaseComponent extends Config {
-    constructor(element, config) {
-      super();
-      element = getElement(element);
-      if (!element) {
-        return;
-      }
-      this._element = element;
-      this._config = this._getConfig(config);
-      Data.set(this._element, this.constructor.DATA_KEY, this);
-    }
-
-    // Public
-    dispose() {
-      Data.remove(this._element, this.constructor.DATA_KEY);
-      EventHandler.off(this._element, this.constructor.EVENT_KEY);
-      for (const propertyName of Object.getOwnPropertyNames(this)) {
-        this[propertyName] = null;
-      }
-    }
-    _queueCallback(callback, element, isAnimated = true) {
-      executeAfterTransition(callback, element, isAnimated);
-    }
-    _getConfig(config) {
-      config = this._mergeConfigObj(config, this._element);
-      config = this._configAfterMerge(config);
-      this._typeCheckConfig(config);
-      return config;
-    }
-
-    // Static
-    static getInstance(element) {
-      return Data.get(getElement(element), this.DATA_KEY);
-    }
-    static getOrCreateInstance(element, config = {}) {
-      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
-    }
-    static get VERSION() {
-      return VERSION;
-    }
-    static get DATA_KEY() {
-      return `bs.${this.NAME}`;
-    }
-    static get EVENT_KEY() {
-      return `.${this.DATA_KEY}`;
-    }
-    static eventName(name) {
-      return `${name}${this.EVENT_KEY}`;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dom/selector-engine.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const getSelector = element => {
-    let selector = element.getAttribute('data-bs-target');
-    if (!selector || selector === '#') {
-      let hrefAttribute = element.getAttribute('href');
-
-      // The only valid content that could double as a selector are IDs or classes,
-      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
-      // `document.querySelector` will rightfully complain it is invalid.
-      // See https://github.com/twbs/bootstrap/issues/32273
-      if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
-        return null;
-      }
-
-      // Just in case some CMS puts out a full URL with the anchor appended
-      if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
-        hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
-      }
-      selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
-    }
-    return parseSelector(selector);
-  };
-  const SelectorEngine = {
-    find(selector, element = document.documentElement) {
-      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
-    },
-    findOne(selector, element = document.documentElement) {
-      return Element.prototype.querySelector.call(element, selector);
-    },
-    children(element, selector) {
-      return [].concat(...element.children).filter(child => child.matches(selector));
-    },
-    parents(element, selector) {
-      const parents = [];
-      let ancestor = element.parentNode.closest(selector);
-      while (ancestor) {
-        parents.push(ancestor);
-        ancestor = ancestor.parentNode.closest(selector);
-      }
-      return parents;
-    },
-    prev(element, selector) {
-      let previous = element.previousElementSibling;
-      while (previous) {
-        if (previous.matches(selector)) {
-          return [previous];
-        }
-        previous = previous.previousElementSibling;
-      }
-      return [];
-    },
-    // TODO: this is now unused; remove later along with prev()
-    next(element, selector) {
-      let next = element.nextElementSibling;
-      while (next) {
-        if (next.matches(selector)) {
-          return [next];
-        }
-        next = next.nextElementSibling;
-      }
-      return [];
-    },
-    focusableChildren(element) {
-      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
-      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
-    },
-    getSelectorFromElement(element) {
-      const selector = getSelector(element);
-      if (selector) {
-        return SelectorEngine.findOne(selector) ? selector : null;
-      }
-      return null;
-    },
-    getElementFromSelector(element) {
-      const selector = getSelector(element);
-      return selector ? SelectorEngine.findOne(selector) : null;
-    },
-    getMultipleElementsFromSelector(element) {
-      const selector = getSelector(element);
-      return selector ? SelectorEngine.find(selector) : [];
-    }
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/component-functions.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const enableDismissTrigger = (component, method = 'hide') => {
-    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
-    const name = component.NAME;
-    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
-      if (['A', 'AREA'].includes(this.tagName)) {
-        event.preventDefault();
-      }
-      if (isDisabled(this)) {
-        return;
-      }
-      const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
-      const instance = component.getOrCreateInstance(target);
-
-      // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
-      instance[method]();
-    });
-  };
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap alert.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$f = 'alert';
-  const DATA_KEY$a = 'bs.alert';
-  const EVENT_KEY$b = `.${DATA_KEY$a}`;
-  const EVENT_CLOSE = `close${EVENT_KEY$b}`;
-  const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
-  const CLASS_NAME_FADE$5 = 'fade';
-  const CLASS_NAME_SHOW$8 = 'show';
-
-  /**
-   * Class definition
-   */
-
-  class Alert extends BaseComponent {
-    // Getters
-    static get NAME() {
-      return NAME$f;
-    }
-
-    // Public
-    close() {
-      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
-      if (closeEvent.defaultPrevented) {
-        return;
-      }
-      this._element.classList.remove(CLASS_NAME_SHOW$8);
-      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
-      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
-    }
-
-    // Private
-    _destroyElement() {
-      this._element.remove();
-      EventHandler.trigger(this._element, EVENT_CLOSED);
-      this.dispose();
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Alert.getOrCreateInstance(this);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](this);
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  enableDismissTrigger(Alert, 'close');
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Alert);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap button.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$e = 'button';
-  const DATA_KEY$9 = 'bs.button';
-  const EVENT_KEY$a = `.${DATA_KEY$9}`;
-  const DATA_API_KEY$6 = '.data-api';
-  const CLASS_NAME_ACTIVE$3 = 'active';
-  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
-  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
-
-  /**
-   * Class definition
-   */
-
-  class Button extends BaseComponent {
-    // Getters
-    static get NAME() {
-      return NAME$e;
-    }
-
-    // Public
-    toggle() {
-      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
-      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Button.getOrCreateInstance(this);
-        if (config === 'toggle') {
-          data[config]();
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
-    event.preventDefault();
-    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
-    const data = Button.getOrCreateInstance(button);
-    data.toggle();
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Button);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/swipe.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$d = 'swipe';
-  const EVENT_KEY$9 = '.bs.swipe';
-  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
-  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
-  const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
-  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
-  const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
-  const POINTER_TYPE_TOUCH = 'touch';
-  const POINTER_TYPE_PEN = 'pen';
-  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
-  const SWIPE_THRESHOLD = 40;
-  const Default$c = {
-    endCallback: null,
-    leftCallback: null,
-    rightCallback: null
-  };
-  const DefaultType$c = {
-    endCallback: '(function|null)',
-    leftCallback: '(function|null)',
-    rightCallback: '(function|null)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Swipe extends Config {
-    constructor(element, config) {
-      super();
-      this._element = element;
-      if (!element || !Swipe.isSupported()) {
-        return;
-      }
-      this._config = this._getConfig(config);
-      this._deltaX = 0;
-      this._supportPointerEvents = Boolean(window.PointerEvent);
-      this._initEvents();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$c;
-    }
-    static get DefaultType() {
-      return DefaultType$c;
-    }
-    static get NAME() {
-      return NAME$d;
-    }
-
-    // Public
-    dispose() {
-      EventHandler.off(this._element, EVENT_KEY$9);
-    }
-
-    // Private
-    _start(event) {
-      if (!this._supportPointerEvents) {
-        this._deltaX = event.touches[0].clientX;
-        return;
-      }
-      if (this._eventIsPointerPenTouch(event)) {
-        this._deltaX = event.clientX;
-      }
-    }
-    _end(event) {
-      if (this._eventIsPointerPenTouch(event)) {
-        this._deltaX = event.clientX - this._deltaX;
-      }
-      this._handleSwipe();
-      execute(this._config.endCallback);
-    }
-    _move(event) {
-      this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
-    }
-    _handleSwipe() {
-      const absDeltaX = Math.abs(this._deltaX);
-      if (absDeltaX <= SWIPE_THRESHOLD) {
-        return;
-      }
-      const direction = absDeltaX / this._deltaX;
-      this._deltaX = 0;
-      if (!direction) {
-        return;
-      }
-      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
-    }
-    _initEvents() {
-      if (this._supportPointerEvents) {
-        EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
-        EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
-        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
-      } else {
-        EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
-        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
-        EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
-      }
-    }
-    _eventIsPointerPenTouch(event) {
-      return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
-    }
-
-    // Static
-    static isSupported() {
-      return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap carousel.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$c = 'carousel';
-  const DATA_KEY$8 = 'bs.carousel';
-  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
-  const DATA_API_KEY$5 = '.data-api';
-  const ARROW_LEFT_KEY$1 = 'ArrowLeft';
-  const ARROW_RIGHT_KEY$1 = 'ArrowRight';
-  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
-
-  const ORDER_NEXT = 'next';
-  const ORDER_PREV = 'prev';
-  const DIRECTION_LEFT = 'left';
-  const DIRECTION_RIGHT = 'right';
-  const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
-  const EVENT_SLID = `slid${EVENT_KEY$8}`;
-  const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
-  const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
-  const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
-  const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
-  const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
-  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
-  const CLASS_NAME_CAROUSEL = 'carousel';
-  const CLASS_NAME_ACTIVE$2 = 'active';
-  const CLASS_NAME_SLIDE = 'slide';
-  const CLASS_NAME_END = 'carousel-item-end';
-  const CLASS_NAME_START = 'carousel-item-start';
-  const CLASS_NAME_NEXT = 'carousel-item-next';
-  const CLASS_NAME_PREV = 'carousel-item-prev';
-  const SELECTOR_ACTIVE = '.active';
-  const SELECTOR_ITEM = '.carousel-item';
-  const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
-  const SELECTOR_ITEM_IMG = '.carousel-item img';
-  const SELECTOR_INDICATORS = '.carousel-indicators';
-  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
-  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
-  const KEY_TO_DIRECTION = {
-    [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
-    [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
-  };
-  const Default$b = {
-    interval: 5000,
-    keyboard: true,
-    pause: 'hover',
-    ride: false,
-    touch: true,
-    wrap: true
-  };
-  const DefaultType$b = {
-    interval: '(number|boolean)',
-    // TODO:v6 remove boolean support
-    keyboard: 'boolean',
-    pause: '(string|boolean)',
-    ride: '(boolean|string)',
-    touch: 'boolean',
-    wrap: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Carousel extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._interval = null;
-      this._activeElement = null;
-      this._isSliding = false;
-      this.touchTimeout = null;
-      this._swipeHelper = null;
-      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
-      this._addEventListeners();
-      if (this._config.ride === CLASS_NAME_CAROUSEL) {
-        this.cycle();
-      }
-    }
-
-    // Getters
-    static get Default() {
-      return Default$b;
-    }
-    static get DefaultType() {
-      return DefaultType$b;
-    }
-    static get NAME() {
-      return NAME$c;
-    }
-
-    // Public
-    next() {
-      this._slide(ORDER_NEXT);
-    }
-    nextWhenVisible() {
-      // FIXME TODO use `document.visibilityState`
-      // Don't call next when the page isn't visible
-      // or the carousel or its parent isn't visible
-      if (!document.hidden && isVisible(this._element)) {
-        this.next();
-      }
-    }
-    prev() {
-      this._slide(ORDER_PREV);
-    }
-    pause() {
-      if (this._isSliding) {
-        triggerTransitionEnd(this._element);
-      }
-      this._clearInterval();
-    }
-    cycle() {
-      this._clearInterval();
-      this._updateInterval();
-      this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
-    }
-    _maybeEnableCycle() {
-      if (!this._config.ride) {
-        return;
-      }
-      if (this._isSliding) {
-        EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
-        return;
-      }
-      this.cycle();
-    }
-    to(index) {
-      const items = this._getItems();
-      if (index > items.length - 1 || index < 0) {
-        return;
-      }
-      if (this._isSliding) {
-        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
-        return;
-      }
-      const activeIndex = this._getItemIndex(this._getActive());
-      if (activeIndex === index) {
-        return;
-      }
-      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
-      this._slide(order, items[index]);
-    }
-    dispose() {
-      if (this._swipeHelper) {
-        this._swipeHelper.dispose();
-      }
-      super.dispose();
-    }
-
-    // Private
-    _configAfterMerge(config) {
-      config.defaultInterval = config.interval;
-      return config;
-    }
-    _addEventListeners() {
-      if (this._config.keyboard) {
-        EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
-      }
-      if (this._config.pause === 'hover') {
-        EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
-        EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
-      }
-      if (this._config.touch && Swipe.isSupported()) {
-        this._addTouchEventListeners();
-      }
-    }
-    _addTouchEventListeners() {
-      for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
-        EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
-      }
-      const endCallBack = () => {
-        if (this._config.pause !== 'hover') {
-          return;
-        }
-
-        // If it's a touch-enabled device, mouseenter/leave are fired as
-        // part of the mouse compatibility events on first tap - the carousel
-        // would stop cycling until user tapped out of it;
-        // here, we listen for touchend, explicitly pause the carousel
-        // (as if it's the second time we tap on it, mouseenter compat event
-        // is NOT fired) and after a timeout (to allow for mouse compatibility
-        // events to fire) we explicitly restart cycling
-
-        this.pause();
-        if (this.touchTimeout) {
-          clearTimeout(this.touchTimeout);
-        }
-        this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
-      };
-      const swipeConfig = {
-        leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
-        rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
-        endCallback: endCallBack
-      };
-      this._swipeHelper = new Swipe(this._element, swipeConfig);
-    }
-    _keydown(event) {
-      if (/input|textarea/i.test(event.target.tagName)) {
-        return;
-      }
-      const direction = KEY_TO_DIRECTION[event.key];
-      if (direction) {
-        event.preventDefault();
-        this._slide(this._directionToOrder(direction));
-      }
-    }
-    _getItemIndex(element) {
-      return this._getItems().indexOf(element);
-    }
-    _setActiveIndicatorElement(index) {
-      if (!this._indicatorsElement) {
-        return;
-      }
-      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
-      activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
-      activeIndicator.removeAttribute('aria-current');
-      const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
-      if (newActiveIndicator) {
-        newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
-        newActiveIndicator.setAttribute('aria-current', 'true');
-      }
-    }
-    _updateInterval() {
-      const element = this._activeElement || this._getActive();
-      if (!element) {
-        return;
-      }
-      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
-      this._config.interval = elementInterval || this._config.defaultInterval;
-    }
-    _slide(order, element = null) {
-      if (this._isSliding) {
-        return;
-      }
-      const activeElement = this._getActive();
-      const isNext = order === ORDER_NEXT;
-      const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
-      if (nextElement === activeElement) {
-        return;
-      }
-      const nextElementIndex = this._getItemIndex(nextElement);
-      const triggerEvent = eventName => {
-        return EventHandler.trigger(this._element, eventName, {
-          relatedTarget: nextElement,
-          direction: this._orderToDirection(order),
-          from: this._getItemIndex(activeElement),
-          to: nextElementIndex
-        });
-      };
-      const slideEvent = triggerEvent(EVENT_SLIDE);
-      if (slideEvent.defaultPrevented) {
-        return;
-      }
-      if (!activeElement || !nextElement) {
-        // Some weirdness is happening, so we bail
-        // TODO: change tests that use empty divs to avoid this check
-        return;
-      }
-      const isCycling = Boolean(this._interval);
-      this.pause();
-      this._isSliding = true;
-      this._setActiveIndicatorElement(nextElementIndex);
-      this._activeElement = nextElement;
-      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
-      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
-      nextElement.classList.add(orderClassName);
-      reflow(nextElement);
-      activeElement.classList.add(directionalClassName);
-      nextElement.classList.add(directionalClassName);
-      const completeCallBack = () => {
-        nextElement.classList.remove(directionalClassName, orderClassName);
-        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
-        activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
-        this._isSliding = false;
-        triggerEvent(EVENT_SLID);
-      };
-      this._queueCallback(completeCallBack, activeElement, this._isAnimated());
-      if (isCycling) {
-        this.cycle();
-      }
-    }
-    _isAnimated() {
-      return this._element.classList.contains(CLASS_NAME_SLIDE);
-    }
-    _getActive() {
-      return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
-    }
-    _getItems() {
-      return SelectorEngine.find(SELECTOR_ITEM, this._element);
-    }
-    _clearInterval() {
-      if (this._interval) {
-        clearInterval(this._interval);
-        this._interval = null;
-      }
-    }
-    _directionToOrder(direction) {
-      if (isRTL()) {
-        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
-      }
-      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
-    }
-    _orderToDirection(order) {
-      if (isRTL()) {
-        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
-      }
-      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Carousel.getOrCreateInstance(this, config);
-        if (typeof config === 'number') {
-          data.to(config);
-          return;
-        }
-        if (typeof config === 'string') {
-          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-            throw new TypeError(`No method named "${config}"`);
-          }
-          data[config]();
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
-    const target = SelectorEngine.getElementFromSelector(this);
-    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
-      return;
-    }
-    event.preventDefault();
-    const carousel = Carousel.getOrCreateInstance(target);
-    const slideIndex = this.getAttribute('data-bs-slide-to');
-    if (slideIndex) {
-      carousel.to(slideIndex);
-      carousel._maybeEnableCycle();
-      return;
-    }
-    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
-      carousel.next();
-      carousel._maybeEnableCycle();
-      return;
-    }
-    carousel.prev();
-    carousel._maybeEnableCycle();
-  });
-  EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
-    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
-    for (const carousel of carousels) {
-      Carousel.getOrCreateInstance(carousel);
-    }
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Carousel);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap collapse.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$b = 'collapse';
-  const DATA_KEY$7 = 'bs.collapse';
-  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
-  const DATA_API_KEY$4 = '.data-api';
-  const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
-  const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
-  const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
-  const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
-  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
-  const CLASS_NAME_SHOW$7 = 'show';
-  const CLASS_NAME_COLLAPSE = 'collapse';
-  const CLASS_NAME_COLLAPSING = 'collapsing';
-  const CLASS_NAME_COLLAPSED = 'collapsed';
-  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
-  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
-  const WIDTH = 'width';
-  const HEIGHT = 'height';
-  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
-  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
-  const Default$a = {
-    parent: null,
-    toggle: true
-  };
-  const DefaultType$a = {
-    parent: '(null|element)',
-    toggle: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Collapse extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._isTransitioning = false;
-      this._triggerArray = [];
-      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
-      for (const elem of toggleList) {
-        const selector = SelectorEngine.getSelectorFromElement(elem);
-        const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
-        if (selector !== null && filterElement.length) {
-          this._triggerArray.push(elem);
-        }
-      }
-      this._initializeChildren();
-      if (!this._config.parent) {
-        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
-      }
-      if (this._config.toggle) {
-        this.toggle();
-      }
-    }
-
-    // Getters
-    static get Default() {
-      return Default$a;
-    }
-    static get DefaultType() {
-      return DefaultType$a;
-    }
-    static get NAME() {
-      return NAME$b;
-    }
-
-    // Public
-    toggle() {
-      if (this._isShown()) {
-        this.hide();
-      } else {
-        this.show();
-      }
-    }
-    show() {
-      if (this._isTransitioning || this._isShown()) {
-        return;
-      }
-      let activeChildren = [];
-
-      // find active children
-      if (this._config.parent) {
-        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
-          toggle: false
-        }));
-      }
-      if (activeChildren.length && activeChildren[0]._isTransitioning) {
-        return;
-      }
-      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
-      if (startEvent.defaultPrevented) {
-        return;
-      }
-      for (const activeInstance of activeChildren) {
-        activeInstance.hide();
-      }
-      const dimension = this._getDimension();
-      this._element.classList.remove(CLASS_NAME_COLLAPSE);
-      this._element.classList.add(CLASS_NAME_COLLAPSING);
-      this._element.style[dimension] = 0;
-      this._addAriaAndCollapsedClass(this._triggerArray, true);
-      this._isTransitioning = true;
-      const complete = () => {
-        this._isTransitioning = false;
-        this._element.classList.remove(CLASS_NAME_COLLAPSING);
-        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-        this._element.style[dimension] = '';
-        EventHandler.trigger(this._element, EVENT_SHOWN$6);
-      };
-      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
-      const scrollSize = `scroll${capitalizedDimension}`;
-      this._queueCallback(complete, this._element, true);
-      this._element.style[dimension] = `${this._element[scrollSize]}px`;
-    }
-    hide() {
-      if (this._isTransitioning || !this._isShown()) {
-        return;
-      }
-      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
-      if (startEvent.defaultPrevented) {
-        return;
-      }
-      const dimension = this._getDimension();
-      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
-      reflow(this._element);
-      this._element.classList.add(CLASS_NAME_COLLAPSING);
-      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
-      for (const trigger of this._triggerArray) {
-        const element = SelectorEngine.getElementFromSelector(trigger);
-        if (element && !this._isShown(element)) {
-          this._addAriaAndCollapsedClass([trigger], false);
-        }
-      }
-      this._isTransitioning = true;
-      const complete = () => {
-        this._isTransitioning = false;
-        this._element.classList.remove(CLASS_NAME_COLLAPSING);
-        this._element.classList.add(CLASS_NAME_COLLAPSE);
-        EventHandler.trigger(this._element, EVENT_HIDDEN$6);
-      };
-      this._element.style[dimension] = '';
-      this._queueCallback(complete, this._element, true);
-    }
-    _isShown(element = this._element) {
-      return element.classList.contains(CLASS_NAME_SHOW$7);
-    }
-
-    // Private
-    _configAfterMerge(config) {
-      config.toggle = Boolean(config.toggle); // Coerce string values
-      config.parent = getElement(config.parent);
-      return config;
-    }
-    _getDimension() {
-      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
-    }
-    _initializeChildren() {
-      if (!this._config.parent) {
-        return;
-      }
-      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
-      for (const element of children) {
-        const selected = SelectorEngine.getElementFromSelector(element);
-        if (selected) {
-          this._addAriaAndCollapsedClass([element], this._isShown(selected));
-        }
-      }
-    }
-    _getFirstLevelChildren(selector) {
-      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
-      // remove children if greater depth
-      return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
-    }
-    _addAriaAndCollapsedClass(triggerArray, isOpen) {
-      if (!triggerArray.length) {
-        return;
-      }
-      for (const element of triggerArray) {
-        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
-        element.setAttribute('aria-expanded', isOpen);
-      }
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      const _config = {};
-      if (typeof config === 'string' && /show|hide/.test(config)) {
-        _config.toggle = false;
-      }
-      return this.each(function () {
-        const data = Collapse.getOrCreateInstance(this, _config);
-        if (typeof config === 'string') {
-          if (typeof data[config] === 'undefined') {
-            throw new TypeError(`No method named "${config}"`);
-          }
-          data[config]();
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
-    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
-    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
-      event.preventDefault();
-    }
-    for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
-      Collapse.getOrCreateInstance(element, {
-        toggle: false
-      }).toggle();
-    }
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Collapse);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap dropdown.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$a = 'dropdown';
-  const DATA_KEY$6 = 'bs.dropdown';
-  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
-  const DATA_API_KEY$3 = '.data-api';
-  const ESCAPE_KEY$2 = 'Escape';
-  const TAB_KEY$1 = 'Tab';
-  const ARROW_UP_KEY$1 = 'ArrowUp';
-  const ARROW_DOWN_KEY$1 = 'ArrowDown';
-  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
-
-  const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
-  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
-  const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
-  const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
-  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
-  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
-  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
-  const CLASS_NAME_SHOW$6 = 'show';
-  const CLASS_NAME_DROPUP = 'dropup';
-  const CLASS_NAME_DROPEND = 'dropend';
-  const CLASS_NAME_DROPSTART = 'dropstart';
-  const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
-  const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
-  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
-  const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
-  const SELECTOR_MENU = '.dropdown-menu';
-  const SELECTOR_NAVBAR = '.navbar';
-  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
-  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
-  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
-  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
-  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
-  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
-  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
-  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
-  const PLACEMENT_TOPCENTER = 'top';
-  const PLACEMENT_BOTTOMCENTER = 'bottom';
-  const Default$9 = {
-    autoClose: true,
-    boundary: 'clippingParents',
-    display: 'dynamic',
-    offset: [0, 2],
-    popperConfig: null,
-    reference: 'toggle'
-  };
-  const DefaultType$9 = {
-    autoClose: '(boolean|string)',
-    boundary: '(string|element)',
-    display: 'string',
-    offset: '(array|string|function)',
-    popperConfig: '(null|object|function)',
-    reference: '(string|element|object)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Dropdown extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._popper = null;
-      this._parent = this._element.parentNode; // dropdown wrapper
-      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-      this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
-      this._inNavbar = this._detectNavbar();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$9;
-    }
-    static get DefaultType() {
-      return DefaultType$9;
-    }
-    static get NAME() {
-      return NAME$a;
-    }
-
-    // Public
-    toggle() {
-      return this._isShown() ? this.hide() : this.show();
-    }
-    show() {
-      if (isDisabled(this._element) || this._isShown()) {
-        return;
-      }
-      const relatedTarget = {
-        relatedTarget: this._element
-      };
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._createPopper();
-
-      // If this is a touch-enabled device we add extra
-      // empty mouseover listeners to the body's immediate children;
-      // only needed because of broken event delegation on iOS
-      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-      if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.on(element, 'mouseover', noop);
-        }
-      }
-      this._element.focus();
-      this._element.setAttribute('aria-expanded', true);
-      this._menu.classList.add(CLASS_NAME_SHOW$6);
-      this._element.classList.add(CLASS_NAME_SHOW$6);
-      EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
-    }
-    hide() {
-      if (isDisabled(this._element) || !this._isShown()) {
-        return;
-      }
-      const relatedTarget = {
-        relatedTarget: this._element
-      };
-      this._completeHide(relatedTarget);
-    }
-    dispose() {
-      if (this._popper) {
-        this._popper.destroy();
-      }
-      super.dispose();
-    }
-    update() {
-      this._inNavbar = this._detectNavbar();
-      if (this._popper) {
-        this._popper.update();
-      }
-    }
-
-    // Private
-    _completeHide(relatedTarget) {
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-
-      // If this is a touch-enabled device we remove the extra
-      // empty mouseover listeners we added for iOS support
-      if ('ontouchstart' in document.documentElement) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.off(element, 'mouseover', noop);
-        }
-      }
-      if (this._popper) {
-        this._popper.destroy();
-      }
-      this._menu.classList.remove(CLASS_NAME_SHOW$6);
-      this._element.classList.remove(CLASS_NAME_SHOW$6);
-      this._element.setAttribute('aria-expanded', 'false');
-      Manipulator.removeDataAttribute(this._menu, 'popper');
-      EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
-    }
-    _getConfig(config) {
-      config = super._getConfig(config);
-      if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
-        // Popper virtual elements require a getBoundingClientRect method
-        throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
-      }
-      return config;
-    }
-    _createPopper() {
-      if (typeof Popper__namespace === 'undefined') {
-        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
-      }
-      let referenceElement = this._element;
-      if (this._config.reference === 'parent') {
-        referenceElement = this._parent;
-      } else if (isElement(this._config.reference)) {
-        referenceElement = getElement(this._config.reference);
-      } else if (typeof this._config.reference === 'object') {
-        referenceElement = this._config.reference;
-      }
-      const popperConfig = this._getPopperConfig();
-      this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);
-    }
-    _isShown() {
-      return this._menu.classList.contains(CLASS_NAME_SHOW$6);
-    }
-    _getPlacement() {
-      const parentDropdown = this._parent;
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
-        return PLACEMENT_RIGHT;
-      }
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
-        return PLACEMENT_LEFT;
-      }
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
-        return PLACEMENT_TOPCENTER;
-      }
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
-        return PLACEMENT_BOTTOMCENTER;
-      }
-
-      // We need to trim the value because custom properties can also include spaces
-      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
-      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
-        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
-      }
-      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
-    }
-    _detectNavbar() {
-      return this._element.closest(SELECTOR_NAVBAR) !== null;
-    }
-    _getOffset() {
-      const {
-        offset
-      } = this._config;
-      if (typeof offset === 'string') {
-        return offset.split(',').map(value => Number.parseInt(value, 10));
-      }
-      if (typeof offset === 'function') {
-        return popperData => offset(popperData, this._element);
-      }
-      return offset;
-    }
-    _getPopperConfig() {
-      const defaultBsPopperConfig = {
-        placement: this._getPlacement(),
-        modifiers: [{
-          name: 'preventOverflow',
-          options: {
-            boundary: this._config.boundary
-          }
-        }, {
-          name: 'offset',
-          options: {
-            offset: this._getOffset()
-          }
-        }]
-      };
-
-      // Disable Popper if we have a static display or Dropdown is in Navbar
-      if (this._inNavbar || this._config.display === 'static') {
-        Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
-        defaultBsPopperConfig.modifiers = [{
-          name: 'applyStyles',
-          enabled: false
-        }];
-      }
-      return {
-        ...defaultBsPopperConfig,
-        ...execute(this._config.popperConfig, [defaultBsPopperConfig])
-      };
-    }
-    _selectMenuItem({
-      key,
-      target
-    }) {
-      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
-      if (!items.length) {
-        return;
-      }
-
-      // if target isn't included in items (e.g. when expanding the dropdown)
-      // allow cycling to get the last item in case key equals ARROW_UP_KEY
-      getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Dropdown.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-    static clearMenus(event) {
-      if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
-        return;
-      }
-      const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-      for (const toggle of openToggles) {
-        const context = Dropdown.getInstance(toggle);
-        if (!context || context._config.autoClose === false) {
-          continue;
-        }
-        const composedPath = event.composedPath();
-        const isMenuTarget = composedPath.includes(context._menu);
-        if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
-          continue;
-        }
-
-        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-        if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
-          continue;
-        }
-        const relatedTarget = {
-          relatedTarget: context._element
-        };
-        if (event.type === 'click') {
-          relatedTarget.clickEvent = event;
-        }
-        context._completeHide(relatedTarget);
-      }
-    }
-    static dataApiKeydownHandler(event) {
-      // If not an UP | DOWN | ESCAPE key => not a dropdown command
-      // If input/textarea && if key is other than ESCAPE => not a dropdown command
-
-      const isInput = /input|textarea/i.test(event.target.tagName);
-      const isEscapeEvent = event.key === ESCAPE_KEY$2;
-      const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
-      if (!isUpOrDownEvent && !isEscapeEvent) {
-        return;
-      }
-      if (isInput && !isEscapeEvent) {
-        return;
-      }
-      event.preventDefault();
-
-      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
-      const instance = Dropdown.getOrCreateInstance(getToggleButton);
-      if (isUpOrDownEvent) {
-        event.stopPropagation();
-        instance.show();
-        instance._selectMenuItem(event);
-        return;
-      }
-      if (instance._isShown()) {
-        // else is escape and we check if it is shown
-        event.stopPropagation();
-        instance.hide();
-        getToggleButton.focus();
-      }
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
-  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
-  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
-  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
-  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
-    event.preventDefault();
-    Dropdown.getOrCreateInstance(this).toggle();
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Dropdown);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/backdrop.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$9 = 'backdrop';
-  const CLASS_NAME_FADE$4 = 'fade';
-  const CLASS_NAME_SHOW$5 = 'show';
-  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
-  const Default$8 = {
-    className: 'modal-backdrop',
-    clickCallback: null,
-    isAnimated: false,
-    isVisible: true,
-    // if false, we use the backdrop helper without adding any element to the dom
-    rootElement: 'body' // give the choice to place backdrop under different elements
-  };
-
-  const DefaultType$8 = {
-    className: 'string',
-    clickCallback: '(function|null)',
-    isAnimated: 'boolean',
-    isVisible: 'boolean',
-    rootElement: '(element|string)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Backdrop extends Config {
-    constructor(config) {
-      super();
-      this._config = this._getConfig(config);
-      this._isAppended = false;
-      this._element = null;
-    }
-
-    // Getters
-    static get Default() {
-      return Default$8;
-    }
-    static get DefaultType() {
-      return DefaultType$8;
-    }
-    static get NAME() {
-      return NAME$9;
-    }
-
-    // Public
-    show(callback) {
-      if (!this._config.isVisible) {
-        execute(callback);
-        return;
-      }
-      this._append();
-      const element = this._getElement();
-      if (this._config.isAnimated) {
-        reflow(element);
-      }
-      element.classList.add(CLASS_NAME_SHOW$5);
-      this._emulateAnimation(() => {
-        execute(callback);
-      });
-    }
-    hide(callback) {
-      if (!this._config.isVisible) {
-        execute(callback);
-        return;
-      }
-      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
-      this._emulateAnimation(() => {
-        this.dispose();
-        execute(callback);
-      });
-    }
-    dispose() {
-      if (!this._isAppended) {
-        return;
-      }
-      EventHandler.off(this._element, EVENT_MOUSEDOWN);
-      this._element.remove();
-      this._isAppended = false;
-    }
-
-    // Private
-    _getElement() {
-      if (!this._element) {
-        const backdrop = document.createElement('div');
-        backdrop.className = this._config.className;
-        if (this._config.isAnimated) {
-          backdrop.classList.add(CLASS_NAME_FADE$4);
-        }
-        this._element = backdrop;
-      }
-      return this._element;
-    }
-    _configAfterMerge(config) {
-      // use getElement() with the default "body" to get a fresh Element on each instantiation
-      config.rootElement = getElement(config.rootElement);
-      return config;
-    }
-    _append() {
-      if (this._isAppended) {
-        return;
-      }
-      const element = this._getElement();
-      this._config.rootElement.append(element);
-      EventHandler.on(element, EVENT_MOUSEDOWN, () => {
-        execute(this._config.clickCallback);
-      });
-      this._isAppended = true;
-    }
-    _emulateAnimation(callback) {
-      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/focustrap.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$8 = 'focustrap';
-  const DATA_KEY$5 = 'bs.focustrap';
-  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
-  const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
-  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
-  const TAB_KEY = 'Tab';
-  const TAB_NAV_FORWARD = 'forward';
-  const TAB_NAV_BACKWARD = 'backward';
-  const Default$7 = {
-    autofocus: true,
-    trapElement: null // The element to trap focus inside of
-  };
-
-  const DefaultType$7 = {
-    autofocus: 'boolean',
-    trapElement: 'element'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class FocusTrap extends Config {
-    constructor(config) {
-      super();
-      this._config = this._getConfig(config);
-      this._isActive = false;
-      this._lastTabNavDirection = null;
-    }
-
-    // Getters
-    static get Default() {
-      return Default$7;
-    }
-    static get DefaultType() {
-      return DefaultType$7;
-    }
-    static get NAME() {
-      return NAME$8;
-    }
-
-    // Public
-    activate() {
-      if (this._isActive) {
-        return;
-      }
-      if (this._config.autofocus) {
-        this._config.trapElement.focus();
-      }
-      EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
-      EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
-      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
-      this._isActive = true;
-    }
-    deactivate() {
-      if (!this._isActive) {
-        return;
-      }
-      this._isActive = false;
-      EventHandler.off(document, EVENT_KEY$5);
-    }
-
-    // Private
-    _handleFocusin(event) {
-      const {
-        trapElement
-      } = this._config;
-      if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
-        return;
-      }
-      const elements = SelectorEngine.focusableChildren(trapElement);
-      if (elements.length === 0) {
-        trapElement.focus();
-      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
-        elements[elements.length - 1].focus();
-      } else {
-        elements[0].focus();
-      }
-    }
-    _handleKeydown(event) {
-      if (event.key !== TAB_KEY) {
-        return;
-      }
-      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/scrollBar.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
-  const SELECTOR_STICKY_CONTENT = '.sticky-top';
-  const PROPERTY_PADDING = 'padding-right';
-  const PROPERTY_MARGIN = 'margin-right';
-
-  /**
-   * Class definition
-   */
-
-  class ScrollBarHelper {
-    constructor() {
-      this._element = document.body;
-    }
-
-    // Public
-    getWidth() {
-      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
-      const documentWidth = document.documentElement.clientWidth;
-      return Math.abs(window.innerWidth - documentWidth);
-    }
-    hide() {
-      const width = this.getWidth();
-      this._disableOverFlow();
-      // give padding to element to balance the hidden scrollbar width
-      this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
-      // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
-      this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
-      this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
-    }
-    reset() {
-      this._resetElementAttributes(this._element, 'overflow');
-      this._resetElementAttributes(this._element, PROPERTY_PADDING);
-      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
-      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
-    }
-    isOverflowing() {
-      return this.getWidth() > 0;
-    }
-
-    // Private
-    _disableOverFlow() {
-      this._saveInitialAttribute(this._element, 'overflow');
-      this._element.style.overflow = 'hidden';
-    }
-    _setElementAttributes(selector, styleProperty, callback) {
-      const scrollbarWidth = this.getWidth();
-      const manipulationCallBack = element => {
-        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
-          return;
-        }
-        this._saveInitialAttribute(element, styleProperty);
-        const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
-        element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
-      };
-      this._applyManipulationCallback(selector, manipulationCallBack);
-    }
-    _saveInitialAttribute(element, styleProperty) {
-      const actualValue = element.style.getPropertyValue(styleProperty);
-      if (actualValue) {
-        Manipulator.setDataAttribute(element, styleProperty, actualValue);
-      }
-    }
-    _resetElementAttributes(selector, styleProperty) {
-      const manipulationCallBack = element => {
-        const value = Manipulator.getDataAttribute(element, styleProperty);
-        // We only want to remove the property if the value is `null`; the value can also be zero
-        if (value === null) {
-          element.style.removeProperty(styleProperty);
-          return;
-        }
-        Manipulator.removeDataAttribute(element, styleProperty);
-        element.style.setProperty(styleProperty, value);
-      };
-      this._applyManipulationCallback(selector, manipulationCallBack);
-    }
-    _applyManipulationCallback(selector, callBack) {
-      if (isElement(selector)) {
-        callBack(selector);
-        return;
-      }
-      for (const sel of SelectorEngine.find(selector, this._element)) {
-        callBack(sel);
-      }
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap modal.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$7 = 'modal';
-  const DATA_KEY$4 = 'bs.modal';
-  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
-  const DATA_API_KEY$2 = '.data-api';
-  const ESCAPE_KEY$1 = 'Escape';
-  const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
-  const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
-  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
-  const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
-  const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
-  const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
-  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
-  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
-  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
-  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
-  const CLASS_NAME_OPEN = 'modal-open';
-  const CLASS_NAME_FADE$3 = 'fade';
-  const CLASS_NAME_SHOW$4 = 'show';
-  const CLASS_NAME_STATIC = 'modal-static';
-  const OPEN_SELECTOR$1 = '.modal.show';
-  const SELECTOR_DIALOG = '.modal-dialog';
-  const SELECTOR_MODAL_BODY = '.modal-body';
-  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
-  const Default$6 = {
-    backdrop: true,
-    focus: true,
-    keyboard: true
-  };
-  const DefaultType$6 = {
-    backdrop: '(boolean|string)',
-    focus: 'boolean',
-    keyboard: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Modal extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
-      this._backdrop = this._initializeBackDrop();
-      this._focustrap = this._initializeFocusTrap();
-      this._isShown = false;
-      this._isTransitioning = false;
-      this._scrollBar = new ScrollBarHelper();
-      this._addEventListeners();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$6;
-    }
-    static get DefaultType() {
-      return DefaultType$6;
-    }
-    static get NAME() {
-      return NAME$7;
-    }
-
-    // Public
-    toggle(relatedTarget) {
-      return this._isShown ? this.hide() : this.show(relatedTarget);
-    }
-    show(relatedTarget) {
-      if (this._isShown || this._isTransitioning) {
-        return;
-      }
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
-        relatedTarget
-      });
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._isShown = true;
-      this._isTransitioning = true;
-      this._scrollBar.hide();
-      document.body.classList.add(CLASS_NAME_OPEN);
-      this._adjustDialog();
-      this._backdrop.show(() => this._showElement(relatedTarget));
-    }
-    hide() {
-      if (!this._isShown || this._isTransitioning) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      this._isShown = false;
-      this._isTransitioning = true;
-      this._focustrap.deactivate();
-      this._element.classList.remove(CLASS_NAME_SHOW$4);
-      this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
-    }
-    dispose() {
-      EventHandler.off(window, EVENT_KEY$4);
-      EventHandler.off(this._dialog, EVENT_KEY$4);
-      this._backdrop.dispose();
-      this._focustrap.deactivate();
-      super.dispose();
-    }
-    handleUpdate() {
-      this._adjustDialog();
-    }
-
-    // Private
-    _initializeBackDrop() {
-      return new Backdrop({
-        isVisible: Boolean(this._config.backdrop),
-        // 'static' option will be translated to true, and booleans will keep their value,
-        isAnimated: this._isAnimated()
-      });
-    }
-    _initializeFocusTrap() {
-      return new FocusTrap({
-        trapElement: this._element
-      });
-    }
-    _showElement(relatedTarget) {
-      // try to append dynamic modal
-      if (!document.body.contains(this._element)) {
-        document.body.append(this._element);
-      }
-      this._element.style.display = 'block';
-      this._element.removeAttribute('aria-hidden');
-      this._element.setAttribute('aria-modal', true);
-      this._element.setAttribute('role', 'dialog');
-      this._element.scrollTop = 0;
-      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
-      if (modalBody) {
-        modalBody.scrollTop = 0;
-      }
-      reflow(this._element);
-      this._element.classList.add(CLASS_NAME_SHOW$4);
-      const transitionComplete = () => {
-        if (this._config.focus) {
-          this._focustrap.activate();
-        }
-        this._isTransitioning = false;
-        EventHandler.trigger(this._element, EVENT_SHOWN$4, {
-          relatedTarget
-        });
-      };
-      this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
-    }
-    _addEventListeners() {
-      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
-        if (event.key !== ESCAPE_KEY$1) {
-          return;
-        }
-        if (this._config.keyboard) {
-          this.hide();
-          return;
-        }
-        this._triggerBackdropTransition();
-      });
-      EventHandler.on(window, EVENT_RESIZE$1, () => {
-        if (this._isShown && !this._isTransitioning) {
-          this._adjustDialog();
-        }
-      });
-      EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
-        // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
-        EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
-          if (this._element !== event.target || this._element !== event2.target) {
-            return;
-          }
-          if (this._config.backdrop === 'static') {
-            this._triggerBackdropTransition();
-            return;
-          }
-          if (this._config.backdrop) {
-            this.hide();
-          }
-        });
-      });
-    }
-    _hideModal() {
-      this._element.style.display = 'none';
-      this._element.setAttribute('aria-hidden', true);
-      this._element.removeAttribute('aria-modal');
-      this._element.removeAttribute('role');
-      this._isTransitioning = false;
-      this._backdrop.hide(() => {
-        document.body.classList.remove(CLASS_NAME_OPEN);
-        this._resetAdjustments();
-        this._scrollBar.reset();
-        EventHandler.trigger(this._element, EVENT_HIDDEN$4);
-      });
-    }
-    _isAnimated() {
-      return this._element.classList.contains(CLASS_NAME_FADE$3);
-    }
-    _triggerBackdropTransition() {
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-      const initialOverflowY = this._element.style.overflowY;
-      // return if the following background transition hasn't yet completed
-      if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
-        return;
-      }
-      if (!isModalOverflowing) {
-        this._element.style.overflowY = 'hidden';
-      }
-      this._element.classList.add(CLASS_NAME_STATIC);
-      this._queueCallback(() => {
-        this._element.classList.remove(CLASS_NAME_STATIC);
-        this._queueCallback(() => {
-          this._element.style.overflowY = initialOverflowY;
-        }, this._dialog);
-      }, this._dialog);
-      this._element.focus();
-    }
-
-    /**
-     * The following methods are used to handle overflowing modals
-     */
-
-    _adjustDialog() {
-      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
-      const scrollbarWidth = this._scrollBar.getWidth();
-      const isBodyOverflowing = scrollbarWidth > 0;
-      if (isBodyOverflowing && !isModalOverflowing) {
-        const property = isRTL() ? 'paddingLeft' : 'paddingRight';
-        this._element.style[property] = `${scrollbarWidth}px`;
-      }
-      if (!isBodyOverflowing && isModalOverflowing) {
-        const property = isRTL() ? 'paddingRight' : 'paddingLeft';
-        this._element.style[property] = `${scrollbarWidth}px`;
-      }
-    }
-    _resetAdjustments() {
-      this._element.style.paddingLeft = '';
-      this._element.style.paddingRight = '';
-    }
-
-    // Static
-    static jQueryInterface(config, relatedTarget) {
-      return this.each(function () {
-        const data = Modal.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](relatedTarget);
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
-    const target = SelectorEngine.getElementFromSelector(this);
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    EventHandler.one(target, EVENT_SHOW$4, showEvent => {
-      if (showEvent.defaultPrevented) {
-        // only register focus restorer if modal will actually get shown
-        return;
-      }
-      EventHandler.one(target, EVENT_HIDDEN$4, () => {
-        if (isVisible(this)) {
-          this.focus();
-        }
-      });
-    });
-
-    // avoid conflict when clicking modal toggler while another one is open
-    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
-    if (alreadyOpen) {
-      Modal.getInstance(alreadyOpen).hide();
-    }
-    const data = Modal.getOrCreateInstance(target);
-    data.toggle(this);
-  });
-  enableDismissTrigger(Modal);
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Modal);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap offcanvas.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$6 = 'offcanvas';
-  const DATA_KEY$3 = 'bs.offcanvas';
-  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
-  const DATA_API_KEY$1 = '.data-api';
-  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
-  const ESCAPE_KEY = 'Escape';
-  const CLASS_NAME_SHOW$3 = 'show';
-  const CLASS_NAME_SHOWING$1 = 'showing';
-  const CLASS_NAME_HIDING = 'hiding';
-  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
-  const OPEN_SELECTOR = '.offcanvas.show';
-  const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
-  const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
-  const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
-  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
-  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
-  const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
-  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
-  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
-  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
-  const Default$5 = {
-    backdrop: true,
-    keyboard: true,
-    scroll: false
-  };
-  const DefaultType$5 = {
-    backdrop: '(boolean|string)',
-    keyboard: 'boolean',
-    scroll: 'boolean'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Offcanvas extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._isShown = false;
-      this._backdrop = this._initializeBackDrop();
-      this._focustrap = this._initializeFocusTrap();
-      this._addEventListeners();
-    }
-
-    // Getters
-    static get Default() {
-      return Default$5;
-    }
-    static get DefaultType() {
-      return DefaultType$5;
-    }
-    static get NAME() {
-      return NAME$6;
-    }
-
-    // Public
-    toggle(relatedTarget) {
-      return this._isShown ? this.hide() : this.show(relatedTarget);
-    }
-    show(relatedTarget) {
-      if (this._isShown) {
-        return;
-      }
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
-        relatedTarget
-      });
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._isShown = true;
-      this._backdrop.show();
-      if (!this._config.scroll) {
-        new ScrollBarHelper().hide();
-      }
-      this._element.setAttribute('aria-modal', true);
-      this._element.setAttribute('role', 'dialog');
-      this._element.classList.add(CLASS_NAME_SHOWING$1);
-      const completeCallBack = () => {
-        if (!this._config.scroll || this._config.backdrop) {
-          this._focustrap.activate();
-        }
-        this._element.classList.add(CLASS_NAME_SHOW$3);
-        this._element.classList.remove(CLASS_NAME_SHOWING$1);
-        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
-          relatedTarget
-        });
-      };
-      this._queueCallback(completeCallBack, this._element, true);
-    }
-    hide() {
-      if (!this._isShown) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      this._focustrap.deactivate();
-      this._element.blur();
-      this._isShown = false;
-      this._element.classList.add(CLASS_NAME_HIDING);
-      this._backdrop.hide();
-      const completeCallback = () => {
-        this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
-        this._element.removeAttribute('aria-modal');
-        this._element.removeAttribute('role');
-        if (!this._config.scroll) {
-          new ScrollBarHelper().reset();
-        }
-        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
-      };
-      this._queueCallback(completeCallback, this._element, true);
-    }
-    dispose() {
-      this._backdrop.dispose();
-      this._focustrap.deactivate();
-      super.dispose();
-    }
-
-    // Private
-    _initializeBackDrop() {
-      const clickCallback = () => {
-        if (this._config.backdrop === 'static') {
-          EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
-          return;
-        }
-        this.hide();
-      };
-
-      // 'static' option will be translated to true, and booleans will keep their value
-      const isVisible = Boolean(this._config.backdrop);
-      return new Backdrop({
-        className: CLASS_NAME_BACKDROP,
-        isVisible,
-        isAnimated: true,
-        rootElement: this._element.parentNode,
-        clickCallback: isVisible ? clickCallback : null
-      });
-    }
-    _initializeFocusTrap() {
-      return new FocusTrap({
-        trapElement: this._element
-      });
-    }
-    _addEventListeners() {
-      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
-        if (event.key !== ESCAPE_KEY) {
-          return;
-        }
-        if (this._config.keyboard) {
-          this.hide();
-          return;
-        }
-        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
-      });
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Offcanvas.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config](this);
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
-    const target = SelectorEngine.getElementFromSelector(this);
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    if (isDisabled(this)) {
-      return;
-    }
-    EventHandler.one(target, EVENT_HIDDEN$3, () => {
-      // focus on trigger when it is closed
-      if (isVisible(this)) {
-        this.focus();
-      }
-    });
-
-    // avoid conflict when clicking a toggler of an offcanvas, while another is open
-    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
-    if (alreadyOpen && alreadyOpen !== target) {
-      Offcanvas.getInstance(alreadyOpen).hide();
-    }
-    const data = Offcanvas.getOrCreateInstance(target);
-    data.toggle(this);
-  });
-  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
-    for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
-      Offcanvas.getOrCreateInstance(selector).show();
-    }
-  });
-  EventHandler.on(window, EVENT_RESIZE, () => {
-    for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
-      if (getComputedStyle(element).position !== 'fixed') {
-        Offcanvas.getOrCreateInstance(element).hide();
-      }
-    }
-  });
-  enableDismissTrigger(Offcanvas);
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Offcanvas);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/sanitizer.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  // js-docs-start allow-list
-  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
-  const DefaultAllowlist = {
-    // Global attributes allowed on any supplied element below.
-    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
-    a: ['target', 'href', 'title', 'rel'],
-    area: [],
-    b: [],
-    br: [],
-    col: [],
-    code: [],
-    div: [],
-    em: [],
-    hr: [],
-    h1: [],
-    h2: [],
-    h3: [],
-    h4: [],
-    h5: [],
-    h6: [],
-    i: [],
-    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
-    li: [],
-    ol: [],
-    p: [],
-    pre: [],
-    s: [],
-    small: [],
-    span: [],
-    sub: [],
-    sup: [],
-    strong: [],
-    u: [],
-    ul: []
-  };
-  // js-docs-end allow-list
-
-  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
-
-  /**
-   * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
-   * contexts.
-   *
-   * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
-   */
-  // eslint-disable-next-line unicorn/better-regex
-  const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
-  const allowedAttribute = (attribute, allowedAttributeList) => {
-    const attributeName = attribute.nodeName.toLowerCase();
-    if (allowedAttributeList.includes(attributeName)) {
-      if (uriAttributes.has(attributeName)) {
-        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
-      }
-      return true;
-    }
-
-    // Check if a regular expression validates the attribute.
-    return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
-  };
-  function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
-    if (!unsafeHtml.length) {
-      return unsafeHtml;
-    }
-    if (sanitizeFunction && typeof sanitizeFunction === 'function') {
-      return sanitizeFunction(unsafeHtml);
-    }
-    const domParser = new window.DOMParser();
-    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
-    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
-    for (const element of elements) {
-      const elementName = element.nodeName.toLowerCase();
-      if (!Object.keys(allowList).includes(elementName)) {
-        element.remove();
-        continue;
-      }
-      const attributeList = [].concat(...element.attributes);
-      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
-      for (const attribute of attributeList) {
-        if (!allowedAttribute(attribute, allowedAttributes)) {
-          element.removeAttribute(attribute.nodeName);
-        }
-      }
-    }
-    return createdDocument.body.innerHTML;
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap util/template-factory.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$5 = 'TemplateFactory';
-  const Default$4 = {
-    allowList: DefaultAllowlist,
-    content: {},
-    // { selector : text ,  selector2 : text2 , }
-    extraClass: '',
-    html: false,
-    sanitize: true,
-    sanitizeFn: null,
-    template: '<div></div>'
-  };
-  const DefaultType$4 = {
-    allowList: 'object',
-    content: 'object',
-    extraClass: '(string|function)',
-    html: 'boolean',
-    sanitize: 'boolean',
-    sanitizeFn: '(null|function)',
-    template: 'string'
-  };
-  const DefaultContentType = {
-    entry: '(string|element|function|null)',
-    selector: '(string|element)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class TemplateFactory extends Config {
-    constructor(config) {
-      super();
-      this._config = this._getConfig(config);
-    }
-
-    // Getters
-    static get Default() {
-      return Default$4;
-    }
-    static get DefaultType() {
-      return DefaultType$4;
-    }
-    static get NAME() {
-      return NAME$5;
-    }
-
-    // Public
-    getContent() {
-      return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
-    }
-    hasContent() {
-      return this.getContent().length > 0;
-    }
-    changeContent(content) {
-      this._checkContent(content);
-      this._config.content = {
-        ...this._config.content,
-        ...content
-      };
-      return this;
-    }
-    toHtml() {
-      const templateWrapper = document.createElement('div');
-      templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
-      for (const [selector, text] of Object.entries(this._config.content)) {
-        this._setContent(templateWrapper, text, selector);
-      }
-      const template = templateWrapper.children[0];
-      const extraClass = this._resolvePossibleFunction(this._config.extraClass);
-      if (extraClass) {
-        template.classList.add(...extraClass.split(' '));
-      }
-      return template;
-    }
-
-    // Private
-    _typeCheckConfig(config) {
-      super._typeCheckConfig(config);
-      this._checkContent(config.content);
-    }
-    _checkContent(arg) {
-      for (const [selector, content] of Object.entries(arg)) {
-        super._typeCheckConfig({
-          selector,
-          entry: content
-        }, DefaultContentType);
-      }
-    }
-    _setContent(template, content, selector) {
-      const templateElement = SelectorEngine.findOne(selector, template);
-      if (!templateElement) {
-        return;
-      }
-      content = this._resolvePossibleFunction(content);
-      if (!content) {
-        templateElement.remove();
-        return;
-      }
-      if (isElement(content)) {
-        this._putElementInTemplate(getElement(content), templateElement);
-        return;
-      }
-      if (this._config.html) {
-        templateElement.innerHTML = this._maybeSanitize(content);
-        return;
-      }
-      templateElement.textContent = content;
-    }
-    _maybeSanitize(arg) {
-      return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
-    }
-    _resolvePossibleFunction(arg) {
-      return execute(arg, [this]);
-    }
-    _putElementInTemplate(element, templateElement) {
-      if (this._config.html) {
-        templateElement.innerHTML = '';
-        templateElement.append(element);
-        return;
-      }
-      templateElement.textContent = element.textContent;
-    }
-  }
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap tooltip.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$4 = 'tooltip';
-  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
-  const CLASS_NAME_FADE$2 = 'fade';
-  const CLASS_NAME_MODAL = 'modal';
-  const CLASS_NAME_SHOW$2 = 'show';
-  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
-  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
-  const EVENT_MODAL_HIDE = 'hide.bs.modal';
-  const TRIGGER_HOVER = 'hover';
-  const TRIGGER_FOCUS = 'focus';
-  const TRIGGER_CLICK = 'click';
-  const TRIGGER_MANUAL = 'manual';
-  const EVENT_HIDE$2 = 'hide';
-  const EVENT_HIDDEN$2 = 'hidden';
-  const EVENT_SHOW$2 = 'show';
-  const EVENT_SHOWN$2 = 'shown';
-  const EVENT_INSERTED = 'inserted';
-  const EVENT_CLICK$1 = 'click';
-  const EVENT_FOCUSIN$1 = 'focusin';
-  const EVENT_FOCUSOUT$1 = 'focusout';
-  const EVENT_MOUSEENTER = 'mouseenter';
-  const EVENT_MOUSELEAVE = 'mouseleave';
-  const AttachmentMap = {
-    AUTO: 'auto',
-    TOP: 'top',
-    RIGHT: isRTL() ? 'left' : 'right',
-    BOTTOM: 'bottom',
-    LEFT: isRTL() ? 'right' : 'left'
-  };
-  const Default$3 = {
-    allowList: DefaultAllowlist,
-    animation: true,
-    boundary: 'clippingParents',
-    container: false,
-    customClass: '',
-    delay: 0,
-    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
-    html: false,
-    offset: [0, 6],
-    placement: 'top',
-    popperConfig: null,
-    sanitize: true,
-    sanitizeFn: null,
-    selector: false,
-    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
-    title: '',
-    trigger: 'hover focus'
-  };
-  const DefaultType$3 = {
-    allowList: 'object',
-    animation: 'boolean',
-    boundary: '(string|element)',
-    container: '(string|element|boolean)',
-    customClass: '(string|function)',
-    delay: '(number|object)',
-    fallbackPlacements: 'array',
-    html: 'boolean',
-    offset: '(array|string|function)',
-    placement: '(string|function)',
-    popperConfig: '(null|object|function)',
-    sanitize: 'boolean',
-    sanitizeFn: '(null|function)',
-    selector: '(string|boolean)',
-    template: 'string',
-    title: '(string|element|function)',
-    trigger: 'string'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Tooltip extends BaseComponent {
-    constructor(element, config) {
-      if (typeof Popper__namespace === 'undefined') {
-        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
-      }
-      super(element, config);
-
-      // Private
-      this._isEnabled = true;
-      this._timeout = 0;
-      this._isHovered = null;
-      this._activeTrigger = {};
-      this._popper = null;
-      this._templateFactory = null;
-      this._newContent = null;
-
-      // Protected
-      this.tip = null;
-      this._setListeners();
-      if (!this._config.selector) {
-        this._fixTitle();
-      }
-    }
-
-    // Getters
-    static get Default() {
-      return Default$3;
-    }
-    static get DefaultType() {
-      return DefaultType$3;
-    }
-    static get NAME() {
-      return NAME$4;
-    }
-
-    // Public
-    enable() {
-      this._isEnabled = true;
-    }
-    disable() {
-      this._isEnabled = false;
-    }
-    toggleEnabled() {
-      this._isEnabled = !this._isEnabled;
-    }
-    toggle() {
-      if (!this._isEnabled) {
-        return;
-      }
-      this._activeTrigger.click = !this._activeTrigger.click;
-      if (this._isShown()) {
-        this._leave();
-        return;
-      }
-      this._enter();
-    }
-    dispose() {
-      clearTimeout(this._timeout);
-      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-      if (this._element.getAttribute('data-bs-original-title')) {
-        this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
-      }
-      this._disposePopper();
-      super.dispose();
-    }
-    show() {
-      if (this._element.style.display === 'none') {
-        throw new Error('Please use show on visible elements');
-      }
-      if (!(this._isWithContent() && this._isEnabled)) {
-        return;
-      }
-      const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
-      const shadowRoot = findShadowRoot(this._element);
-      const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
-      if (showEvent.defaultPrevented || !isInTheDom) {
-        return;
-      }
-
-      // TODO: v6 remove this or make it optional
-      this._disposePopper();
-      const tip = this._getTipElement();
-      this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
-      const {
-        container
-      } = this._config;
-      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
-        container.append(tip);
-        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
-      }
-      this._popper = this._createPopper(tip);
-      tip.classList.add(CLASS_NAME_SHOW$2);
-
-      // If this is a touch-enabled device we add extra
-      // empty mouseover listeners to the body's immediate children;
-      // only needed because of broken event delegation on iOS
-      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-      if ('ontouchstart' in document.documentElement) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.on(element, 'mouseover', noop);
-        }
-      }
-      const complete = () => {
-        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
-        if (this._isHovered === false) {
-          this._leave();
-        }
-        this._isHovered = false;
-      };
-      this._queueCallback(complete, this.tip, this._isAnimated());
-    }
-    hide() {
-      if (!this._isShown()) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      const tip = this._getTipElement();
-      tip.classList.remove(CLASS_NAME_SHOW$2);
-
-      // If this is a touch-enabled device we remove the extra
-      // empty mouseover listeners we added for iOS support
-      if ('ontouchstart' in document.documentElement) {
-        for (const element of [].concat(...document.body.children)) {
-          EventHandler.off(element, 'mouseover', noop);
-        }
-      }
-      this._activeTrigger[TRIGGER_CLICK] = false;
-      this._activeTrigger[TRIGGER_FOCUS] = false;
-      this._activeTrigger[TRIGGER_HOVER] = false;
-      this._isHovered = null; // it is a trick to support manual triggering
-
-      const complete = () => {
-        if (this._isWithActiveTrigger()) {
-          return;
-        }
-        if (!this._isHovered) {
-          this._disposePopper();
-        }
-        this._element.removeAttribute('aria-describedby');
-        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
-      };
-      this._queueCallback(complete, this.tip, this._isAnimated());
-    }
-    update() {
-      if (this._popper) {
-        this._popper.update();
-      }
-    }
-
-    // Protected
-    _isWithContent() {
-      return Boolean(this._getTitle());
-    }
-    _getTipElement() {
-      if (!this.tip) {
-        this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
-      }
-      return this.tip;
-    }
-    _createTipElement(content) {
-      const tip = this._getTemplateFactory(content).toHtml();
-
-      // TODO: remove this check in v6
-      if (!tip) {
-        return null;
-      }
-      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
-      // TODO: v6 the following can be achieved with CSS only
-      tip.classList.add(`bs-${this.constructor.NAME}-auto`);
-      const tipId = getUID(this.constructor.NAME).toString();
-      tip.setAttribute('id', tipId);
-      if (this._isAnimated()) {
-        tip.classList.add(CLASS_NAME_FADE$2);
-      }
-      return tip;
-    }
-    setContent(content) {
-      this._newContent = content;
-      if (this._isShown()) {
-        this._disposePopper();
-        this.show();
-      }
-    }
-    _getTemplateFactory(content) {
-      if (this._templateFactory) {
-        this._templateFactory.changeContent(content);
-      } else {
-        this._templateFactory = new TemplateFactory({
-          ...this._config,
-          // the `content` var has to be after `this._config`
-          // to override config.content in case of popover
-          content,
-          extraClass: this._resolvePossibleFunction(this._config.customClass)
-        });
-      }
-      return this._templateFactory;
-    }
-    _getContentForTemplate() {
-      return {
-        [SELECTOR_TOOLTIP_INNER]: this._getTitle()
-      };
-    }
-    _getTitle() {
-      return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
-    }
-
-    // Private
-    _initializeOnDelegatedTarget(event) {
-      return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
-    }
-    _isAnimated() {
-      return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
-    }
-    _isShown() {
-      return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
-    }
-    _createPopper(tip) {
-      const placement = execute(this._config.placement, [this, tip, this._element]);
-      const attachment = AttachmentMap[placement.toUpperCase()];
-      return Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));
-    }
-    _getOffset() {
-      const {
-        offset
-      } = this._config;
-      if (typeof offset === 'string') {
-        return offset.split(',').map(value => Number.parseInt(value, 10));
-      }
-      if (typeof offset === 'function') {
-        return popperData => offset(popperData, this._element);
-      }
-      return offset;
-    }
-    _resolvePossibleFunction(arg) {
-      return execute(arg, [this._element]);
-    }
-    _getPopperConfig(attachment) {
-      const defaultBsPopperConfig = {
-        placement: attachment,
-        modifiers: [{
-          name: 'flip',
-          options: {
-            fallbackPlacements: this._config.fallbackPlacements
-          }
-        }, {
-          name: 'offset',
-          options: {
-            offset: this._getOffset()
-          }
-        }, {
-          name: 'preventOverflow',
-          options: {
-            boundary: this._config.boundary
-          }
-        }, {
-          name: 'arrow',
-          options: {
-            element: `.${this.constructor.NAME}-arrow`
-          }
-        }, {
-          name: 'preSetPlacement',
-          enabled: true,
-          phase: 'beforeMain',
-          fn: data => {
-            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
-            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
-            this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
-          }
-        }]
-      };
-      return {
-        ...defaultBsPopperConfig,
-        ...execute(this._config.popperConfig, [defaultBsPopperConfig])
-      };
-    }
-    _setListeners() {
-      const triggers = this._config.trigger.split(' ');
-      for (const trigger of triggers) {
-        if (trigger === 'click') {
-          EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
-            const context = this._initializeOnDelegatedTarget(event);
-            context.toggle();
-          });
-        } else if (trigger !== TRIGGER_MANUAL) {
-          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
-          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
-          EventHandler.on(this._element, eventIn, this._config.selector, event => {
-            const context = this._initializeOnDelegatedTarget(event);
-            context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
-            context._enter();
-          });
-          EventHandler.on(this._element, eventOut, this._config.selector, event => {
-            const context = this._initializeOnDelegatedTarget(event);
-            context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
-            context._leave();
-          });
-        }
-      }
-      this._hideModalHandler = () => {
-        if (this._element) {
-          this.hide();
-        }
-      };
-      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
-    }
-    _fixTitle() {
-      const title = this._element.getAttribute('title');
-      if (!title) {
-        return;
-      }
-      if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
-        this._element.setAttribute('aria-label', title);
-      }
-      this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
-      this._element.removeAttribute('title');
-    }
-    _enter() {
-      if (this._isShown() || this._isHovered) {
-        this._isHovered = true;
-        return;
-      }
-      this._isHovered = true;
-      this._setTimeout(() => {
-        if (this._isHovered) {
-          this.show();
-        }
-      }, this._config.delay.show);
-    }
-    _leave() {
-      if (this._isWithActiveTrigger()) {
-        return;
-      }
-      this._isHovered = false;
-      this._setTimeout(() => {
-        if (!this._isHovered) {
-          this.hide();
-        }
-      }, this._config.delay.hide);
-    }
-    _setTimeout(handler, timeout) {
-      clearTimeout(this._timeout);
-      this._timeout = setTimeout(handler, timeout);
-    }
-    _isWithActiveTrigger() {
-      return Object.values(this._activeTrigger).includes(true);
-    }
-    _getConfig(config) {
-      const dataAttributes = Manipulator.getDataAttributes(this._element);
-      for (const dataAttribute of Object.keys(dataAttributes)) {
-        if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
-          delete dataAttributes[dataAttribute];
-        }
-      }
-      config = {
-        ...dataAttributes,
-        ...(typeof config === 'object' && config ? config : {})
-      };
-      config = this._mergeConfigObj(config);
-      config = this._configAfterMerge(config);
-      this._typeCheckConfig(config);
-      return config;
-    }
-    _configAfterMerge(config) {
-      config.container = config.container === false ? document.body : getElement(config.container);
-      if (typeof config.delay === 'number') {
-        config.delay = {
-          show: config.delay,
-          hide: config.delay
-        };
-      }
-      if (typeof config.title === 'number') {
-        config.title = config.title.toString();
-      }
-      if (typeof config.content === 'number') {
-        config.content = config.content.toString();
-      }
-      return config;
-    }
-    _getDelegateConfig() {
-      const config = {};
-      for (const [key, value] of Object.entries(this._config)) {
-        if (this.constructor.Default[key] !== value) {
-          config[key] = value;
-        }
-      }
-      config.selector = false;
-      config.trigger = 'manual';
-
-      // In the future can be replaced with:
-      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
-      // `Object.fromEntries(keysWithDifferentValues)`
-      return config;
-    }
-    _disposePopper() {
-      if (this._popper) {
-        this._popper.destroy();
-        this._popper = null;
-      }
-      if (this.tip) {
-        this.tip.remove();
-        this.tip = null;
-      }
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Tooltip.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Tooltip);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap popover.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$3 = 'popover';
-  const SELECTOR_TITLE = '.popover-header';
-  const SELECTOR_CONTENT = '.popover-body';
-  const Default$2 = {
-    ...Tooltip.Default,
-    content: '',
-    offset: [0, 8],
-    placement: 'right',
-    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
-    trigger: 'click'
-  };
-  const DefaultType$2 = {
-    ...Tooltip.DefaultType,
-    content: '(null|string|element|function)'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Popover extends Tooltip {
-    // Getters
-    static get Default() {
-      return Default$2;
-    }
-    static get DefaultType() {
-      return DefaultType$2;
-    }
-    static get NAME() {
-      return NAME$3;
-    }
-
-    // Overrides
-    _isWithContent() {
-      return this._getTitle() || this._getContent();
-    }
-
-    // Private
-    _getContentForTemplate() {
-      return {
-        [SELECTOR_TITLE]: this._getTitle(),
-        [SELECTOR_CONTENT]: this._getContent()
-      };
-    }
-    _getContent() {
-      return this._resolvePossibleFunction(this._config.content);
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Popover.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (typeof data[config] === 'undefined') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Popover);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap scrollspy.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$2 = 'scrollspy';
-  const DATA_KEY$2 = 'bs.scrollspy';
-  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
-  const DATA_API_KEY = '.data-api';
-  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
-  const EVENT_CLICK = `click${EVENT_KEY$2}`;
-  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
-  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
-  const CLASS_NAME_ACTIVE$1 = 'active';
-  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
-  const SELECTOR_TARGET_LINKS = '[href]';
-  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
-  const SELECTOR_NAV_LINKS = '.nav-link';
-  const SELECTOR_NAV_ITEMS = '.nav-item';
-  const SELECTOR_LIST_ITEMS = '.list-group-item';
-  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
-  const SELECTOR_DROPDOWN = '.dropdown';
-  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
-  const Default$1 = {
-    offset: null,
-    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
-    rootMargin: '0px 0px -25%',
-    smoothScroll: false,
-    target: null,
-    threshold: [0.1, 0.5, 1]
-  };
-  const DefaultType$1 = {
-    offset: '(number|null)',
-    // TODO v6 @deprecated, keep it for backwards compatibility reasons
-    rootMargin: 'string',
-    smoothScroll: 'boolean',
-    target: 'element',
-    threshold: 'array'
-  };
-
-  /**
-   * Class definition
-   */
-
-  class ScrollSpy extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-
-      // this._element is the observablesContainer and config.target the menu links wrapper
-      this._targetLinks = new Map();
-      this._observableSections = new Map();
-      this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
-      this._activeTarget = null;
-      this._observer = null;
-      this._previousScrollData = {
-        visibleEntryTop: 0,
-        parentScrollTop: 0
-      };
-      this.refresh(); // initialize
-    }
-
-    // Getters
-    static get Default() {
-      return Default$1;
-    }
-    static get DefaultType() {
-      return DefaultType$1;
-    }
-    static get NAME() {
-      return NAME$2;
-    }
-
-    // Public
-    refresh() {
-      this._initializeTargetsAndObservables();
-      this._maybeEnableSmoothScroll();
-      if (this._observer) {
-        this._observer.disconnect();
-      } else {
-        this._observer = this._getNewObserver();
-      }
-      for (const section of this._observableSections.values()) {
-        this._observer.observe(section);
-      }
-    }
-    dispose() {
-      this._observer.disconnect();
-      super.dispose();
-    }
-
-    // Private
-    _configAfterMerge(config) {
-      // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
-      config.target = getElement(config.target) || document.body;
-
-      // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
-      config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
-      if (typeof config.threshold === 'string') {
-        config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
-      }
-      return config;
-    }
-    _maybeEnableSmoothScroll() {
-      if (!this._config.smoothScroll) {
-        return;
-      }
-
-      // unregister any previous listeners
-      EventHandler.off(this._config.target, EVENT_CLICK);
-      EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
-        const observableSection = this._observableSections.get(event.target.hash);
-        if (observableSection) {
-          event.preventDefault();
-          const root = this._rootElement || window;
-          const height = observableSection.offsetTop - this._element.offsetTop;
-          if (root.scrollTo) {
-            root.scrollTo({
-              top: height,
-              behavior: 'smooth'
-            });
-            return;
-          }
-
-          // Chrome 60 doesn't support `scrollTo`
-          root.scrollTop = height;
-        }
-      });
-    }
-    _getNewObserver() {
-      const options = {
-        root: this._rootElement,
-        threshold: this._config.threshold,
-        rootMargin: this._config.rootMargin
-      };
-      return new IntersectionObserver(entries => this._observerCallback(entries), options);
-    }
-
-    // The logic of selection
-    _observerCallback(entries) {
-      const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
-      const activate = entry => {
-        this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
-        this._process(targetElement(entry));
-      };
-      const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
-      const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
-      this._previousScrollData.parentScrollTop = parentScrollTop;
-      for (const entry of entries) {
-        if (!entry.isIntersecting) {
-          this._activeTarget = null;
-          this._clearActiveClass(targetElement(entry));
-          continue;
-        }
-        const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
-        // if we are scrolling down, pick the bigger offsetTop
-        if (userScrollsDown && entryIsLowerThanPrevious) {
-          activate(entry);
-          // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
-          if (!parentScrollTop) {
-            return;
-          }
-          continue;
-        }
-
-        // if we are scrolling up, pick the smallest offsetTop
-        if (!userScrollsDown && !entryIsLowerThanPrevious) {
-          activate(entry);
-        }
-      }
-    }
-    _initializeTargetsAndObservables() {
-      this._targetLinks = new Map();
-      this._observableSections = new Map();
-      const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
-      for (const anchor of targetLinks) {
-        // ensure that the anchor has an id and is not disabled
-        if (!anchor.hash || isDisabled(anchor)) {
-          continue;
-        }
-        const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
-
-        // ensure that the observableSection exists & is visible
-        if (isVisible(observableSection)) {
-          this._targetLinks.set(decodeURI(anchor.hash), anchor);
-          this._observableSections.set(anchor.hash, observableSection);
-        }
-      }
-    }
-    _process(target) {
-      if (this._activeTarget === target) {
-        return;
-      }
-      this._clearActiveClass(this._config.target);
-      this._activeTarget = target;
-      target.classList.add(CLASS_NAME_ACTIVE$1);
-      this._activateParents(target);
-      EventHandler.trigger(this._element, EVENT_ACTIVATE, {
-        relatedTarget: target
-      });
-    }
-    _activateParents(target) {
-      // Activate dropdown parents
-      if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
-        return;
-      }
-      for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
-        // Set triggered links parents as active
-        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
-        for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
-          item.classList.add(CLASS_NAME_ACTIVE$1);
-        }
-      }
-    }
-    _clearActiveClass(parent) {
-      parent.classList.remove(CLASS_NAME_ACTIVE$1);
-      const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
-      for (const node of activeNodes) {
-        node.classList.remove(CLASS_NAME_ACTIVE$1);
-      }
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = ScrollSpy.getOrCreateInstance(this, config);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
-    for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
-      ScrollSpy.getOrCreateInstance(spy);
-    }
-  });
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(ScrollSpy);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap tab.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME$1 = 'tab';
-  const DATA_KEY$1 = 'bs.tab';
-  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
-  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
-  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
-  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
-  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
-  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
-  const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
-  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
-  const ARROW_LEFT_KEY = 'ArrowLeft';
-  const ARROW_RIGHT_KEY = 'ArrowRight';
-  const ARROW_UP_KEY = 'ArrowUp';
-  const ARROW_DOWN_KEY = 'ArrowDown';
-  const HOME_KEY = 'Home';
-  const END_KEY = 'End';
-  const CLASS_NAME_ACTIVE = 'active';
-  const CLASS_NAME_FADE$1 = 'fade';
-  const CLASS_NAME_SHOW$1 = 'show';
-  const CLASS_DROPDOWN = 'dropdown';
-  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
-  const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
-  const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';
-  const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
-  const SELECTOR_OUTER = '.nav-item, .list-group-item';
-  const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
-  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
-  const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
-  const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
-
-  /**
-   * Class definition
-   */
-
-  class Tab extends BaseComponent {
-    constructor(element) {
-      super(element);
-      this._parent = this._element.closest(SELECTOR_TAB_PANEL);
-      if (!this._parent) {
-        return;
-        // TODO: should throw exception in v6
-        // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
-      }
-
-      // Set up initial aria attributes
-      this._setInitialAttributes(this._parent, this._getChildren());
-      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
-    }
-
-    // Getters
-    static get NAME() {
-      return NAME$1;
-    }
-
-    // Public
-    show() {
-      // Shows this elem and deactivate the active sibling if exists
-      const innerElem = this._element;
-      if (this._elemIsActive(innerElem)) {
-        return;
-      }
-
-      // Search for active tab on same parent to deactivate it
-      const active = this._getActiveElem();
-      const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
-        relatedTarget: innerElem
-      }) : null;
-      const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
-        relatedTarget: active
-      });
-      if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
-        return;
-      }
-      this._deactivate(active, innerElem);
-      this._activate(innerElem, active);
-    }
-
-    // Private
-    _activate(element, relatedElem) {
-      if (!element) {
-        return;
-      }
-      element.classList.add(CLASS_NAME_ACTIVE);
-      this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
-
-      const complete = () => {
-        if (element.getAttribute('role') !== 'tab') {
-          element.classList.add(CLASS_NAME_SHOW$1);
-          return;
-        }
-        element.removeAttribute('tabindex');
-        element.setAttribute('aria-selected', true);
-        this._toggleDropDown(element, true);
-        EventHandler.trigger(element, EVENT_SHOWN$1, {
-          relatedTarget: relatedElem
-        });
-      };
-      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
-    }
-    _deactivate(element, relatedElem) {
-      if (!element) {
-        return;
-      }
-      element.classList.remove(CLASS_NAME_ACTIVE);
-      element.blur();
-      this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
-
-      const complete = () => {
-        if (element.getAttribute('role') !== 'tab') {
-          element.classList.remove(CLASS_NAME_SHOW$1);
-          return;
-        }
-        element.setAttribute('aria-selected', false);
-        element.setAttribute('tabindex', '-1');
-        this._toggleDropDown(element, false);
-        EventHandler.trigger(element, EVENT_HIDDEN$1, {
-          relatedTarget: relatedElem
-        });
-      };
-      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
-    }
-    _keydown(event) {
-      if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
-        return;
-      }
-      event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
-      event.preventDefault();
-      const children = this._getChildren().filter(element => !isDisabled(element));
-      let nextActiveElement;
-      if ([HOME_KEY, END_KEY].includes(event.key)) {
-        nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
-      } else {
-        const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
-        nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
-      }
-      if (nextActiveElement) {
-        nextActiveElement.focus({
-          preventScroll: true
-        });
-        Tab.getOrCreateInstance(nextActiveElement).show();
-      }
-    }
-    _getChildren() {
-      // collection of inner elements
-      return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
-    }
-    _getActiveElem() {
-      return this._getChildren().find(child => this._elemIsActive(child)) || null;
-    }
-    _setInitialAttributes(parent, children) {
-      this._setAttributeIfNotExists(parent, 'role', 'tablist');
-      for (const child of children) {
-        this._setInitialAttributesOnChild(child);
-      }
-    }
-    _setInitialAttributesOnChild(child) {
-      child = this._getInnerElement(child);
-      const isActive = this._elemIsActive(child);
-      const outerElem = this._getOuterElement(child);
-      child.setAttribute('aria-selected', isActive);
-      if (outerElem !== child) {
-        this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
-      }
-      if (!isActive) {
-        child.setAttribute('tabindex', '-1');
-      }
-      this._setAttributeIfNotExists(child, 'role', 'tab');
-
-      // set attributes to the related panel too
-      this._setInitialAttributesOnTargetPanel(child);
-    }
-    _setInitialAttributesOnTargetPanel(child) {
-      const target = SelectorEngine.getElementFromSelector(child);
-      if (!target) {
-        return;
-      }
-      this._setAttributeIfNotExists(target, 'role', 'tabpanel');
-      if (child.id) {
-        this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
-      }
-    }
-    _toggleDropDown(element, open) {
-      const outerElem = this._getOuterElement(element);
-      if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
-        return;
-      }
-      const toggle = (selector, className) => {
-        const element = SelectorEngine.findOne(selector, outerElem);
-        if (element) {
-          element.classList.toggle(className, open);
-        }
-      };
-      toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
-      toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
-      outerElem.setAttribute('aria-expanded', open);
-    }
-    _setAttributeIfNotExists(element, attribute, value) {
-      if (!element.hasAttribute(attribute)) {
-        element.setAttribute(attribute, value);
-      }
-    }
-    _elemIsActive(elem) {
-      return elem.classList.contains(CLASS_NAME_ACTIVE);
-    }
-
-    // Try to get the inner element (usually the .nav-link)
-    _getInnerElement(elem) {
-      return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
-    }
-
-    // Try to get the outer element (usually the .nav-item)
-    _getOuterElement(elem) {
-      return elem.closest(SELECTOR_OUTER) || elem;
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Tab.getOrCreateInstance(this);
-        if (typeof config !== 'string') {
-          return;
-        }
-        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
-          throw new TypeError(`No method named "${config}"`);
-        }
-        data[config]();
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
-    if (['A', 'AREA'].includes(this.tagName)) {
-      event.preventDefault();
-    }
-    if (isDisabled(this)) {
-      return;
-    }
-    Tab.getOrCreateInstance(this).show();
-  });
-
-  /**
-   * Initialize on focus
-   */
-  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
-    for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
-      Tab.getOrCreateInstance(element);
-    }
-  });
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Tab);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap toast.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-
-  /**
-   * Constants
-   */
-
-  const NAME = 'toast';
-  const DATA_KEY = 'bs.toast';
-  const EVENT_KEY = `.${DATA_KEY}`;
-  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
-  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
-  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
-  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
-  const EVENT_HIDE = `hide${EVENT_KEY}`;
-  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
-  const EVENT_SHOW = `show${EVENT_KEY}`;
-  const EVENT_SHOWN = `shown${EVENT_KEY}`;
-  const CLASS_NAME_FADE = 'fade';
-  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
-  const CLASS_NAME_SHOW = 'show';
-  const CLASS_NAME_SHOWING = 'showing';
-  const DefaultType = {
-    animation: 'boolean',
-    autohide: 'boolean',
-    delay: 'number'
-  };
-  const Default = {
-    animation: true,
-    autohide: true,
-    delay: 5000
-  };
-
-  /**
-   * Class definition
-   */
-
-  class Toast extends BaseComponent {
-    constructor(element, config) {
-      super(element, config);
-      this._timeout = null;
-      this._hasMouseInteraction = false;
-      this._hasKeyboardInteraction = false;
-      this._setListeners();
-    }
-
-    // Getters
-    static get Default() {
-      return Default;
-    }
-    static get DefaultType() {
-      return DefaultType;
-    }
-    static get NAME() {
-      return NAME;
-    }
-
-    // Public
-    show() {
-      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
-      if (showEvent.defaultPrevented) {
-        return;
-      }
-      this._clearTimeout();
-      if (this._config.animation) {
-        this._element.classList.add(CLASS_NAME_FADE);
-      }
-      const complete = () => {
-        this._element.classList.remove(CLASS_NAME_SHOWING);
-        EventHandler.trigger(this._element, EVENT_SHOWN);
-        this._maybeScheduleHide();
-      };
-      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
-      reflow(this._element);
-      this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
-      this._queueCallback(complete, this._element, this._config.animation);
-    }
-    hide() {
-      if (!this.isShown()) {
-        return;
-      }
-      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
-      if (hideEvent.defaultPrevented) {
-        return;
-      }
-      const complete = () => {
-        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
-        this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
-        EventHandler.trigger(this._element, EVENT_HIDDEN);
-      };
-      this._element.classList.add(CLASS_NAME_SHOWING);
-      this._queueCallback(complete, this._element, this._config.animation);
-    }
-    dispose() {
-      this._clearTimeout();
-      if (this.isShown()) {
-        this._element.classList.remove(CLASS_NAME_SHOW);
-      }
-      super.dispose();
-    }
-    isShown() {
-      return this._element.classList.contains(CLASS_NAME_SHOW);
-    }
-
-    // Private
-
-    _maybeScheduleHide() {
-      if (!this._config.autohide) {
-        return;
-      }
-      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
-        return;
-      }
-      this._timeout = setTimeout(() => {
-        this.hide();
-      }, this._config.delay);
-    }
-    _onInteraction(event, isInteracting) {
-      switch (event.type) {
-        case 'mouseover':
-        case 'mouseout':
-          {
-            this._hasMouseInteraction = isInteracting;
-            break;
-          }
-        case 'focusin':
-        case 'focusout':
-          {
-            this._hasKeyboardInteraction = isInteracting;
-            break;
-          }
-      }
-      if (isInteracting) {
-        this._clearTimeout();
-        return;
-      }
-      const nextElement = event.relatedTarget;
-      if (this._element === nextElement || this._element.contains(nextElement)) {
-        return;
-      }
-      this._maybeScheduleHide();
-    }
-    _setListeners() {
-      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
-      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
-      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
-      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
-    }
-    _clearTimeout() {
-      clearTimeout(this._timeout);
-      this._timeout = null;
-    }
-
-    // Static
-    static jQueryInterface(config) {
-      return this.each(function () {
-        const data = Toast.getOrCreateInstance(this, config);
-        if (typeof config === 'string') {
-          if (typeof data[config] === 'undefined') {
-            throw new TypeError(`No method named "${config}"`);
-          }
-          data[config](this);
-        }
-      });
-    }
-  }
-
-  /**
-   * Data API implementation
-   */
-
-  enableDismissTrigger(Toast);
-
-  /**
-   * jQuery
-   */
-
-  defineJQueryPlugin(Toast);
-
-  /**
-   * --------------------------------------------------------------------------
-   * Bootstrap index.umd.js
-   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-   * --------------------------------------------------------------------------
-   */
-
-  const index_umd = {
-    Alert,
-    Button,
-    Carousel,
-    Collapse,
-    Dropdown,
-    Modal,
-    Offcanvas,
-    Popover,
-    ScrollSpy,
-    Tab,
-    Toast,
-    Tooltip
-  };
-
-  return index_umd;
-
-}));
-//# sourceMappingURL=bootstrap.js.map

File diff suppressed because it is too large
+ 0 - 0
public/libs/bootstrap/dist/js/bootstrap.js.map


File diff suppressed because it is too large
+ 0 - 5
public/libs/bootstrap/dist/js/bootstrap.min.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/bootstrap/dist/js/bootstrap.min.js.map


+ 0 - 66
public/libs/countup.js/dist/countUp.d.ts

@@ -1,66 +0,0 @@
-export interface CountUpOptions {
-    startVal?: number;
-    decimalPlaces?: number;
-    duration?: number;
-    useGrouping?: boolean;
-    useIndianSeparators?: boolean;
-    useEasing?: boolean;
-    smartEasingThreshold?: number;
-    smartEasingAmount?: number;
-    separator?: string;
-    decimal?: string;
-    easingFn?: (t: number, b: number, c: number, d: number) => number;
-    formattingFn?: (n: number) => string;
-    prefix?: string;
-    suffix?: string;
-    numerals?: string[];
-    enableScrollSpy?: boolean;
-    scrollSpyDelay?: number;
-    scrollSpyOnce?: boolean;
-    onCompleteCallback?: () => any;
-    plugin?: CountUpPlugin;
-}
-export declare interface CountUpPlugin {
-    render(elem: HTMLElement, formatted: string): void;
-}
-export declare class CountUp {
-    private endVal;
-    options?: CountUpOptions;
-    version: string;
-    private defaults;
-    private rAF;
-    private startTime;
-    private remaining;
-    private finalEndVal;
-    private useEasing;
-    private countDown;
-    el: HTMLElement | HTMLInputElement;
-    formattingFn: (num: number) => string;
-    easingFn?: (t: number, b: number, c: number, d: number) => number;
-    error: string;
-    startVal: number;
-    duration: number;
-    paused: boolean;
-    frameVal: number;
-    once: boolean;
-    constructor(target: string | HTMLElement | HTMLInputElement, endVal: number, options?: CountUpOptions);
-    handleScroll(self: CountUp): void;
-    /**
-     * Smart easing works by breaking the animation into 2 parts, the second part being the
-     * smartEasingAmount and first part being the total amount minus the smartEasingAmount. It works
-     * by disabling easing for the first part and enabling it on the second part. It is used if
-     * useEasing is true and the total animation amount exceeds the smartEasingThreshold.
-     */
-    private determineDirectionAndSmartEasing;
-    start(callback?: (args?: any) => any): void;
-    pauseResume(): void;
-    reset(): void;
-    update(newEndVal: string | number): void;
-    count: (timestamp: number) => void;
-    printValue(val: number): void;
-    ensureNumber(n: any): boolean;
-    validateValue(value: string | number): number;
-    private resetDuration;
-    formatNumber: (num: number) => string;
-    easeOutExpo: (t: number, b: number, c: number, d: number) => number;
-}

+ 0 - 300
public/libs/countup.js/dist/countUp.js

@@ -1,300 +0,0 @@
-var __assign = (this && this.__assign) || function () {
-    __assign = Object.assign || function(t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-                t[p] = s[p];
-        }
-        return t;
-    };
-    return __assign.apply(this, arguments);
-};
-// playground: stackblitz.com/edit/countup-typescript
-var CountUp = /** @class */ (function () {
-    function CountUp(target, endVal, options) {
-        var _this = this;
-        this.endVal = endVal;
-        this.options = options;
-        this.version = '2.6.2';
-        this.defaults = {
-            startVal: 0,
-            decimalPlaces: 0,
-            duration: 2,
-            useEasing: true,
-            useGrouping: true,
-            useIndianSeparators: false,
-            smartEasingThreshold: 999,
-            smartEasingAmount: 333,
-            separator: ',',
-            decimal: '.',
-            prefix: '',
-            suffix: '',
-            enableScrollSpy: false,
-            scrollSpyDelay: 200,
-            scrollSpyOnce: false,
-        };
-        this.finalEndVal = null; // for smart easing
-        this.useEasing = true;
-        this.countDown = false;
-        this.error = '';
-        this.startVal = 0;
-        this.paused = true;
-        this.once = false;
-        this.count = function (timestamp) {
-            if (!_this.startTime) {
-                _this.startTime = timestamp;
-            }
-            var progress = timestamp - _this.startTime;
-            _this.remaining = _this.duration - progress;
-            // to ease or not to ease
-            if (_this.useEasing) {
-                if (_this.countDown) {
-                    _this.frameVal = _this.startVal - _this.easingFn(progress, 0, _this.startVal - _this.endVal, _this.duration);
-                }
-                else {
-                    _this.frameVal = _this.easingFn(progress, _this.startVal, _this.endVal - _this.startVal, _this.duration);
-                }
-            }
-            else {
-                _this.frameVal = _this.startVal + (_this.endVal - _this.startVal) * (progress / _this.duration);
-            }
-            // don't go past endVal since progress can exceed duration in the last frame
-            var wentPast = _this.countDown ? _this.frameVal < _this.endVal : _this.frameVal > _this.endVal;
-            _this.frameVal = wentPast ? _this.endVal : _this.frameVal;
-            // decimal
-            _this.frameVal = Number(_this.frameVal.toFixed(_this.options.decimalPlaces));
-            // format and print value
-            _this.printValue(_this.frameVal);
-            // whether to continue
-            if (progress < _this.duration) {
-                _this.rAF = requestAnimationFrame(_this.count);
-            }
-            else if (_this.finalEndVal !== null) {
-                // smart easing
-                _this.update(_this.finalEndVal);
-            }
-            else {
-                if (_this.options.onCompleteCallback) {
-                    _this.options.onCompleteCallback();
-                }
-            }
-        };
-        // default format and easing functions
-        this.formatNumber = function (num) {
-            var neg = (num < 0) ? '-' : '';
-            var result, x1, x2, x3;
-            result = Math.abs(num).toFixed(_this.options.decimalPlaces);
-            result += '';
-            var x = result.split('.');
-            x1 = x[0];
-            x2 = x.length > 1 ? _this.options.decimal + x[1] : '';
-            if (_this.options.useGrouping) {
-                x3 = '';
-                var factor = 3, j = 0;
-                for (var i = 0, len = x1.length; i < len; ++i) {
-                    if (_this.options.useIndianSeparators && i === 4) {
-                        factor = 2;
-                        j = 1;
-                    }
-                    if (i !== 0 && (j % factor) === 0) {
-                        x3 = _this.options.separator + x3;
-                    }
-                    j++;
-                    x3 = x1[len - i - 1] + x3;
-                }
-                x1 = x3;
-            }
-            // optional numeral substitution
-            if (_this.options.numerals && _this.options.numerals.length) {
-                x1 = x1.replace(/[0-9]/g, function (w) { return _this.options.numerals[+w]; });
-                x2 = x2.replace(/[0-9]/g, function (w) { return _this.options.numerals[+w]; });
-            }
-            return neg + _this.options.prefix + x1 + x2 + _this.options.suffix;
-        };
-        // t: current time, b: beginning value, c: change in value, d: duration
-        this.easeOutExpo = function (t, b, c, d) {
-            return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;
-        };
-        this.options = __assign(__assign({}, this.defaults), options);
-        this.formattingFn = (this.options.formattingFn) ?
-            this.options.formattingFn : this.formatNumber;
-        this.easingFn = (this.options.easingFn) ?
-            this.options.easingFn : this.easeOutExpo;
-        this.startVal = this.validateValue(this.options.startVal);
-        this.frameVal = this.startVal;
-        this.endVal = this.validateValue(endVal);
-        this.options.decimalPlaces = Math.max(0 || this.options.decimalPlaces);
-        this.resetDuration();
-        this.options.separator = String(this.options.separator);
-        this.useEasing = this.options.useEasing;
-        if (this.options.separator === '') {
-            this.options.useGrouping = false;
-        }
-        this.el = (typeof target === 'string') ? document.getElementById(target) : target;
-        if (this.el) {
-            this.printValue(this.startVal);
-        }
-        else {
-            this.error = '[CountUp] target is null or undefined';
-        }
-        // scroll spy
-        if (typeof window !== 'undefined' && this.options.enableScrollSpy) {
-            if (!this.error) {
-                // set up global array of onscroll functions to handle multiple instances
-                window['onScrollFns'] = window['onScrollFns'] || [];
-                window['onScrollFns'].push(function () { return _this.handleScroll(_this); });
-                window.onscroll = function () {
-                    window['onScrollFns'].forEach(function (fn) { return fn(); });
-                };
-                this.handleScroll(this);
-            }
-            else {
-                console.error(this.error, target);
-            }
-        }
-    }
-    CountUp.prototype.handleScroll = function (self) {
-        if (!self || !window || self.once)
-            return;
-        var bottomOfScroll = window.innerHeight + window.scrollY;
-        var rect = self.el.getBoundingClientRect();
-        var topOfEl = rect.top + window.pageYOffset;
-        var bottomOfEl = rect.top + rect.height + window.pageYOffset;
-        if (bottomOfEl < bottomOfScroll && bottomOfEl > window.scrollY && self.paused) {
-            // in view
-            self.paused = false;
-            setTimeout(function () { return self.start(); }, self.options.scrollSpyDelay);
-            if (self.options.scrollSpyOnce)
-                self.once = true;
-        }
-        else if ((window.scrollY > bottomOfEl || topOfEl > bottomOfScroll) &&
-            !self.paused) {
-            // out of view
-            self.reset();
-        }
-    };
-    /**
-     * Smart easing works by breaking the animation into 2 parts, the second part being the
-     * smartEasingAmount and first part being the total amount minus the smartEasingAmount. It works
-     * by disabling easing for the first part and enabling it on the second part. It is used if
-     * useEasing is true and the total animation amount exceeds the smartEasingThreshold.
-     */
-    CountUp.prototype.determineDirectionAndSmartEasing = function () {
-        var end = (this.finalEndVal) ? this.finalEndVal : this.endVal;
-        this.countDown = (this.startVal > end);
-        var animateAmount = end - this.startVal;
-        if (Math.abs(animateAmount) > this.options.smartEasingThreshold && this.options.useEasing) {
-            this.finalEndVal = end;
-            var up = (this.countDown) ? 1 : -1;
-            this.endVal = end + (up * this.options.smartEasingAmount);
-            this.duration = this.duration / 2;
-        }
-        else {
-            this.endVal = end;
-            this.finalEndVal = null;
-        }
-        if (this.finalEndVal !== null) {
-            // setting finalEndVal indicates smart easing
-            this.useEasing = false;
-        }
-        else {
-            this.useEasing = this.options.useEasing;
-        }
-    };
-    // start animation
-    CountUp.prototype.start = function (callback) {
-        if (this.error) {
-            return;
-        }
-        if (callback) {
-            this.options.onCompleteCallback = callback;
-        }
-        if (this.duration > 0) {
-            this.determineDirectionAndSmartEasing();
-            this.paused = false;
-            this.rAF = requestAnimationFrame(this.count);
-        }
-        else {
-            this.printValue(this.endVal);
-        }
-    };
-    // pause/resume animation
-    CountUp.prototype.pauseResume = function () {
-        if (!this.paused) {
-            cancelAnimationFrame(this.rAF);
-        }
-        else {
-            this.startTime = null;
-            this.duration = this.remaining;
-            this.startVal = this.frameVal;
-            this.determineDirectionAndSmartEasing();
-            this.rAF = requestAnimationFrame(this.count);
-        }
-        this.paused = !this.paused;
-    };
-    // reset to startVal so animation can be run again
-    CountUp.prototype.reset = function () {
-        cancelAnimationFrame(this.rAF);
-        this.paused = true;
-        this.resetDuration();
-        this.startVal = this.validateValue(this.options.startVal);
-        this.frameVal = this.startVal;
-        this.printValue(this.startVal);
-    };
-    // pass a new endVal and start animation
-    CountUp.prototype.update = function (newEndVal) {
-        cancelAnimationFrame(this.rAF);
-        this.startTime = null;
-        this.endVal = this.validateValue(newEndVal);
-        if (this.endVal === this.frameVal) {
-            return;
-        }
-        this.startVal = this.frameVal;
-        if (this.finalEndVal == null) {
-            this.resetDuration();
-        }
-        this.finalEndVal = null;
-        this.determineDirectionAndSmartEasing();
-        this.rAF = requestAnimationFrame(this.count);
-    };
-    CountUp.prototype.printValue = function (val) {
-        var _a;
-        if (!this.el)
-            return;
-        var result = this.formattingFn(val);
-        if ((_a = this.options.plugin) === null || _a === void 0 ? void 0 : _a.render) {
-            this.options.plugin.render(this.el, result);
-            return;
-        }
-        if (this.el.tagName === 'INPUT') {
-            var input = this.el;
-            input.value = result;
-        }
-        else if (this.el.tagName === 'text' || this.el.tagName === 'tspan') {
-            this.el.textContent = result;
-        }
-        else {
-            this.el.innerHTML = result;
-        }
-    };
-    CountUp.prototype.ensureNumber = function (n) {
-        return (typeof n === 'number' && !isNaN(n));
-    };
-    CountUp.prototype.validateValue = function (value) {
-        var newValue = Number(value);
-        if (!this.ensureNumber(newValue)) {
-            this.error = "[CountUp] invalid start or end value: ".concat(value);
-            return null;
-        }
-        else {
-            return newValue;
-        }
-    };
-    CountUp.prototype.resetDuration = function () {
-        this.startTime = null;
-        this.duration = Number(this.options.duration) * 1000;
-        this.remaining = this.duration;
-    };
-    return CountUp;
-}());
-export { CountUp };

File diff suppressed because it is too large
+ 0 - 0
public/libs/countup.js/dist/countUp.min.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/countup.js/dist/countUp.umd.js


+ 0 - 26
public/libs/countup.js/dist/requestAnimationFrame.polyfill.js

@@ -1,26 +0,0 @@
-// make sure requestAnimationFrame and cancelAnimationFrame are defined
-// polyfill for browsers without native support
-// by Opera engineer Erik Möller
-(function () {
-  var lastTime = 0;
-  var vendors = ['webkit', 'moz', 'ms', 'o'];
-  for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
-    window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
-    window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||
-      window[vendors[x] + 'CancelRequestAnimationFrame'];
-  }
-  if (!window.requestAnimationFrame) {
-    window.requestAnimationFrame = function (callback) {
-      var currTime = new Date().getTime();
-      var timeToCall = Math.max(0, 16 - (currTime - lastTime));
-      var id = window.setTimeout(function () { return callback(currTime + timeToCall); }, timeToCall);
-      lastTime = currTime + timeToCall;
-      return id;
-    };
-  }
-  if (!window.cancelAnimationFrame) {
-    window.cancelAnimationFrame = function (id) {
-      clearTimeout(id);
-    };
-  }
-})();

+ 0 - 1
public/libs/dropzone/dist/basic.css

@@ -1 +0,0 @@
-.dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-message,.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px}/*# sourceMappingURL=basic.css.map */

+ 0 - 1
public/libs/dropzone/dist/basic.css.map

@@ -1 +0,0 @@
-{"version":3,"sourceRoot":"","sources":["../src/basic.scss"],"names":[],"mappings":"AAEA,sBACE,sBAEF,UAEE,kBAEA,sBACE,kBACA,qBACA,YACA,YAEA,mCACE,cACA,YACA,sBACA,8CACE,cACA,YACA,QACA,iBAIJ,wCACE,UACA,aAGA,+FACE,cAIF,kDACE,cAIJ,4EACE,kBACA,aACA,UACA,SACA,WACA,YACA,SACA","file":"basic.css"}

File diff suppressed because it is too large
+ 0 - 0
public/libs/dropzone/dist/dropzone-min.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/dropzone/dist/dropzone-min.js.map


File diff suppressed because it is too large
+ 0 - 0
public/libs/dropzone/dist/dropzone.css


+ 0 - 1
public/libs/dropzone/dist/dropzone.css.map

@@ -1 +0,0 @@
-{"version":3,"sourceRoot":"","sources":["../src/dropzone.scss"],"names":[],"mappings":"AAGA,2BACE,GACE,UACA,2BAGF,QACE,UACA,0BAGF,KACE,UACA,6BAKJ,oBACE,GACE,UACA,2BAEF,IACE,UACA,2BAMJ,iBACE,sBACA,yBACA,wBAKF,sBACE,sBAEF,UAmBE,iBACA,gCACA,kBACA,kBAhBA,uBACE,eAEA,yBACE,eAGA,wEACE,eAWJ,iCACE,aAIJ,wBACE,mBACA,oCACE,WAGJ,sBACE,kBACA,aAEA,iCACE,gBACA,cACA,YACA,UACA,aACA,eACA,gBAMJ,sBACE,kBACA,qBAEA,mBAEA,YACA,iBAEA,4BAEE,aACA,wCACE,UAMF,gDACE,cArEgB,KAsEhB,gBACA,kDAGF,kDACE,UAIJ,uCACE,gBACA,mDACE,8BAIJ,iCACE,eACA,kBACA,cACA,eACA,YACA,uCACE,0BAIJ,wCACE,UAEF,kCAGE,WAEA,kBACA,MACA,OAEA,UAEA,eACA,eACA,eACA,gBACA,kBACA,qBAIA,iBAEA,2CACE,kBACA,eAGF,+CAEE,mBAGE,0DACE,sCACA,sCAGJ,2DAIE,gBACA,uBAJA,gEACE,6BASJ,oGACE,sCACA,eACA,kBASF,0CACE,4BACA,iBAIN,gCACE,cAvKkB,KAwKlB,gBACA,MA3KS,MA4KT,OA5KS,MA6KT,kBACA,cACA,WAEA,oCACE,cAMF,kDACE,6DAIF,8CACE,UACA,sDASJ,4EAKE,oBAEA,UACA,YAEA,kBACA,cACA,QACA,SACA,kBACA,iBAEA,WApBiB,eAqBjB,kBAEA,oFACE,cACA,MAnBY,KAoBZ,OArBa,KAsBb,KA5BY,KAiChB,iDACE,UACA,0BAEF,+CACE,UACA,+BAIA,uDACE,iCAGJ,mCAIE,UACA,aAEA,oBACA,kBACA,YACA,QACA,iBACA,SACA,UAEA,gCACA,WA9DiB,eAgEjB,mBAEA,gBAEA,8CACE,WAtEY,KAwEZ,cACA,kBACA,YACA,QACA,mCAEA,mBAMF,iDACE,cAEF,uDACE,UACA,oBAIJ,wCAIE,oBACA,aACA,kBACA,cACA,aACA,UACA,4BACA,kBACA,eACA,UACA,WACA,MAdQ,MAeR,WAdQ,QAeR,iBACA,WAGA,8CACE,WACA,kBACA,SACA,UACA,QACA,SACA,kCACA,mCACA","file":"dropzone.css"}

File diff suppressed because it is too large
+ 0 - 129
public/libs/dropzone/dist/dropzone.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/dropzone/dist/dropzone.js.map


File diff suppressed because it is too large
+ 0 - 74
public/libs/dropzone/dist/dropzone.mjs


File diff suppressed because it is too large
+ 0 - 0
public/libs/dropzone/dist/dropzone.mjs.map


+ 0 - 21
public/libs/fslightbox/LICENSE

@@ -1,21 +0,0 @@
-## The MIT License (MIT) ##
-
-Copyright (c) Piotr Zdziarski
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 68
public/libs/fslightbox/README.md

@@ -1,68 +0,0 @@
-# Vanilla JavaScript Fullscreen Lightbox Basic
-
-## Description
-A vanilla JavaScript plug-in without production dependencies for displaying images, videos, or, through custom sources, anything you want in a clean overlying box.
-The project's website: https://fslightbox.com.
-
-## Installation
-### Through an archive downloaded from the website.
-Just before the end of the &lt;body&gt; tag:
-```html
-<script src="fslightbox.js"></script>
-```
-### 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
-<a data-fslightbox="gallery" href="https://i.imgur.com/fsyrScY.jpg">
-	Open the first slide (an image)
-</a>
-<a 
-	data-fslightbox="gallery"
-	href="https://www.youtube.com/watch?v=xshEZzpS4CQ"
->
-	Open the second slide (a YouTube video)
-</a>
-<a
-	data-fslightbox="gallery"
-	href="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
->
-	Open the third slide (an HTML video)
-</a>
-<a data-fslightbox="gallery" href="#vimeo">
-	Open the fourth slide (a Vimeo video—a custom source)
-</a>
-<iframe
-	id="vimeo"
-	src="https://player.vimeo.com/video/22439234"
-	width="1920px"
-	height="1080px"
-	frameBorder="0"
-	allow="autoplay; fullscreen"
-	allowFullScreen
-></iframe>
-```
-
-## 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 |

File diff suppressed because it is too large
+ 0 - 0
public/libs/fslightbox/index.js


+ 0 - 38
public/libs/fslightbox/package.json

@@ -1,38 +0,0 @@
-{
-  "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"
-  }
-}

+ 0 - 2318
public/libs/jsvectormap/dist/js/jsvectormap.js

@@ -1,2318 +0,0 @@
-(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', '&#43;', true);
-    var zoomout = createElement('div', 'jvm-zoom-btn jvm-zoomout', '&#x2212', 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;
-
-}));

File diff suppressed because it is too large
+ 0 - 0
public/libs/jsvectormap/dist/js/jsvectormap.min.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/jsvectormap/dist/maps/world-merc.js


File diff suppressed because it is too large
+ 0 - 0
public/libs/jsvectormap/dist/maps/world.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/bundle.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/css/litepicker.css


+ 0 - 12
public/libs/litepicker/dist/css/plugins/keyboardnav.js.css

@@ -1,12 +0,0 @@
-/*!
- * 
- * ../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
- * 
- */
-

+ 0 - 133
public/libs/litepicker/dist/css/plugins/mobilefriendly.js.css

@@ -1,133 +0,0 @@
-/*!
- * 
- * ../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);
-  }
-}

+ 0 - 54
public/libs/litepicker/dist/css/plugins/multiselect.js.css

@@ -1,54 +0,0 @@
-/*!
- * 
- * ../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);
-}
-

+ 0 - 81
public/libs/litepicker/dist/css/plugins/ranges.js.css

@@ -1,81 +0,0 @@
-/*!
- * 
- * ../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;
-}

File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/js/main.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/litepicker.amd.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/litepicker.commonjs2.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/litepicker.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/litepicker.umd.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/nocss/litepicker.amd.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/nocss/litepicker.commonjs2.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/nocss/litepicker.js


File diff suppressed because it is too large
+ 0 - 11
public/libs/litepicker/dist/nocss/litepicker.umd.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/nocss/plugins/keyboardnav.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/nocss/plugins/mobilefriendly.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/nocss/plugins/multiselect.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/nocss/plugins/ranges.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/plugins/keyboardnav.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/plugins/mobilefriendly.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/plugins/multiselect.js


File diff suppressed because it is too large
+ 0 - 10
public/libs/litepicker/dist/plugins/ranges.js


+ 0 - 14
public/libs/litepicker/dist/types/calendar.d.ts

@@ -1,14 +0,0 @@
-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;
-}

+ 0 - 23
public/libs/litepicker/dist/types/core.d.ts

@@ -1,23 +0,0 @@
-/// <reference types="node" />
-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;
-    };
-}

+ 0 - 41
public/libs/litepicker/dist/types/datetime.d.ts

@@ -1,41 +0,0 @@
-export declare class DateTime {
-    static parseDateTime(date: Date | DateTime | string | number, format?: string, lang?: string): Date;
-    static convertArray(array: Array<Date | Date[] | string | string[]>, format: string): Array<DateTime | DateTime[]>;
-    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;
-}

+ 0 - 4
public/libs/litepicker/dist/types/index.d.ts

@@ -1,4 +0,0 @@
-import { Litepicker } from './litepicker';
-import './methods';
-export { Litepicker };
-export default Litepicker;

+ 0 - 80
public/libs/litepicker/dist/types/interfaces.d.ts

@@ -1,80 +0,0 @@
-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 {};

+ 0 - 25
public/libs/litepicker/dist/types/litepicker.d.ts

@@ -1,25 +0,0 @@
-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;
-}

Some files were not shown because too many files changed in this diff