App Generator 3 роки тому
батько
коміт
5c64a6db2d
100 змінених файлів з 22725 додано та 0 видалено
  1. 5 0
      .dockerignore
  2. 9 0
      .env
  3. 33 0
      .gitignore
  4. 10 0
      CHANGELOG.md
  5. 14 0
      Dockerfile
  6. 32 0
      LICENSE.md
  7. 222 0
      README.md
  8. 44 0
      apps/__init__.py
  9. 12 0
      apps/authentication/__init__.py
  10. 31 0
      apps/authentication/forms.py
  11. 48 0
      apps/authentication/models.py
  12. 120 0
      apps/authentication/routes.py
  13. 34 0
      apps/authentication/util.py
  14. 50 0
      apps/config.py
  15. 12 0
      apps/home/__init__.py
  16. 54 0
      apps/home/routes.py
  17. 0 0
      apps/static/assets/.gitkeep
  18. 13360 0
      apps/static/assets/css/black-dashboard.css
  19. 0 0
      apps/static/assets/css/black-dashboard.css.map
  20. 16 0
      apps/static/assets/css/black-dashboard.min.css
  21. 550 0
      apps/static/assets/css/nucleo-icons.css
  22. 63 0
      apps/static/assets/demo/demo.css
  23. 742 0
      apps/static/assets/demo/demo.js
  24. BIN
      apps/static/assets/fonts/nucleo.eot
  25. BIN
      apps/static/assets/fonts/nucleo.ttf
  26. BIN
      apps/static/assets/fonts/nucleo.woff
  27. BIN
      apps/static/assets/fonts/nucleo.woff2
  28. 59 0
      apps/static/assets/gulpfile.js
  29. BIN
      apps/static/assets/img/12345.png
  30. BIN
      apps/static/assets/img/anime3.png
  31. BIN
      apps/static/assets/img/anime6.png
  32. BIN
      apps/static/assets/img/apple-icon.png
  33. BIN
      apps/static/assets/img/bg5.jpg
  34. BIN
      apps/static/assets/img/default-avatar.png
  35. BIN
      apps/static/assets/img/emilyz.jpg
  36. BIN
      apps/static/assets/img/favicon.png
  37. BIN
      apps/static/assets/img/header.jpg
  38. BIN
      apps/static/assets/img/img_3115.jpg
  39. BIN
      apps/static/assets/img/james.jpg
  40. BIN
      apps/static/assets/img/mike.jpg
  41. BIN
      apps/static/assets/img/now-logo.png
  42. 255 0
      apps/static/assets/js/black-dashboard.js
  43. 0 0
      apps/static/assets/js/black-dashboard.min.js
  44. 5 0
      apps/static/assets/js/core/bootstrap.min.js
  45. 1 0
      apps/static/assets/js/core/jquery.min.js
  46. 3 0
      apps/static/assets/js/core/popper.min.js
  47. 432 0
      apps/static/assets/js/plugins/bootstrap-notify.js
  48. 9 0
      apps/static/assets/js/plugins/chartjs.min.js
  49. 5 0
      apps/static/assets/js/plugins/perfect-scrollbar.jquery.min.js
  50. 42 0
      apps/static/assets/package.json
  51. 102 0
      apps/static/assets/scss/black-dashboard.scss
  52. 1 0
      apps/static/assets/scss/black-dashboard/_buttons.scss
  53. 1 0
      apps/static/assets/scss/black-dashboard/_typography.scss
  54. 51 0
      apps/static/assets/scss/black-dashboard/bootstrap/_alert.scss
  55. 54 0
      apps/static/assets/scss/black-dashboard/bootstrap/_badge.scss
  56. 41 0
      apps/static/assets/scss/black-dashboard/bootstrap/_breadcrumb.scss
  57. 163 0
      apps/static/assets/scss/black-dashboard/bootstrap/_button-group.scss
  58. 137 0
      apps/static/assets/scss/black-dashboard/bootstrap/_buttons.scss
  59. 289 0
      apps/static/assets/scss/black-dashboard/bootstrap/_card.scss
  60. 197 0
      apps/static/assets/scss/black-dashboard/bootstrap/_carousel.scss
  61. 41 0
      apps/static/assets/scss/black-dashboard/bootstrap/_close.scss
  62. 48 0
      apps/static/assets/scss/black-dashboard/bootstrap/_code.scss
  63. 507 0
      apps/static/assets/scss/black-dashboard/bootstrap/_custom-forms.scss
  64. 191 0
      apps/static/assets/scss/black-dashboard/bootstrap/_dropdown.scss
  65. 330 0
      apps/static/assets/scss/black-dashboard/bootstrap/_forms.scss
  66. 86 0
      apps/static/assets/scss/black-dashboard/bootstrap/_functions.scss
  67. 52 0
      apps/static/assets/scss/black-dashboard/bootstrap/_grid.scss
  68. 42 0
      apps/static/assets/scss/black-dashboard/bootstrap/_images.scss
  69. 193 0
      apps/static/assets/scss/black-dashboard/bootstrap/_input-group.scss
  70. 17 0
      apps/static/assets/scss/black-dashboard/bootstrap/_jumbotron.scss
  71. 149 0
      apps/static/assets/scss/black-dashboard/bootstrap/_list-group.scss
  72. 8 0
      apps/static/assets/scss/black-dashboard/bootstrap/_media.scss
  73. 47 0
      apps/static/assets/scss/black-dashboard/bootstrap/_mixins.scss
  74. 229 0
      apps/static/assets/scss/black-dashboard/bootstrap/_modal.scss
  75. 120 0
      apps/static/assets/scss/black-dashboard/bootstrap/_nav.scss
  76. 294 0
      apps/static/assets/scss/black-dashboard/bootstrap/_navbar.scss
  77. 73 0
      apps/static/assets/scss/black-dashboard/bootstrap/_pagination.scss
  78. 171 0
      apps/static/assets/scss/black-dashboard/bootstrap/_popover.scss
  79. 141 0
      apps/static/assets/scss/black-dashboard/bootstrap/_print.scss
  80. 43 0
      apps/static/assets/scss/black-dashboard/bootstrap/_progress.scss
  81. 483 0
      apps/static/assets/scss/black-dashboard/bootstrap/_reboot.scss
  82. 19 0
      apps/static/assets/scss/black-dashboard/bootstrap/_root.scss
  83. 55 0
      apps/static/assets/scss/black-dashboard/bootstrap/_spinners.scss
  84. 185 0
      apps/static/assets/scss/black-dashboard/bootstrap/_tables.scss
  85. 44 0
      apps/static/assets/scss/black-dashboard/bootstrap/_toasts.scss
  86. 115 0
      apps/static/assets/scss/black-dashboard/bootstrap/_tooltip.scss
  87. 20 0
      apps/static/assets/scss/black-dashboard/bootstrap/_transitions.scss
  88. 125 0
      apps/static/assets/scss/black-dashboard/bootstrap/_type.scss
  89. 17 0
      apps/static/assets/scss/black-dashboard/bootstrap/_utilities.scss
  90. 1123 0
      apps/static/assets/scss/black-dashboard/bootstrap/_variables.scss
  91. 29 0
      apps/static/assets/scss/black-dashboard/bootstrap/bootstrap-grid.scss
  92. 12 0
      apps/static/assets/scss/black-dashboard/bootstrap/bootstrap-reboot.scss
  93. 44 0
      apps/static/assets/scss/black-dashboard/bootstrap/bootstrap.scss
  94. 13 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_alert.scss
  95. 21 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_background-variant.scss
  96. 17 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_badge.scss
  97. 63 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_border-radius.scss
  98. 20 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_box-shadow.scss
  99. 123 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_breakpoints.scss
  100. 107 0
      apps/static/assets/scss/black-dashboard/bootstrap/mixins/_buttons.scss

+ 5 - 0
.dockerignore

@@ -0,0 +1,5 @@
+.git
+__pycache__
+*.pyc
+*.pyo
+*.pyd

+ 9 - 0
.env

@@ -0,0 +1,9 @@
+# True for development, False for production
+DEBUG=True
+
+# Flask ENV
+FLASK_APP=run.py
+FLASK_ENV=development
+
+# Used for CDN (in production) 
+ASSETS_ROOT=/static/assets     # !!! Without Slash at the end !!!

+ 33 - 0
.gitignore

@@ -0,0 +1,33 @@
+# byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+
+# tests and coverage
+*.pytest_cache
+.coverage
+
+# database & logs
+*.db
+*.sqlite3
+*.log
+
+# venv
+env
+venv
+
+# other
+.DS_Store
+
+# sphinx docs 
+_build
+_static
+_templates
+
+# javascript
+package-lock.json
+.vscode/symbols.json
+
+apps/static/assets/node_modules
+apps/static/assets/yarn.lock
+apps/static/assets/.temp
+

+ 10 - 0
CHANGELOG.md

@@ -1,6 +1,16 @@
 # Change Log
 
+## [1.0.8] 2022-05-25
+### Improvements
+
+- Built with [Black Dashboard Generator](https://appseed.us/generator/black-dashboard/)
+  - Timestamp: `2022-05-25 09:44`
+- Codebase Improvements
+- Assets Management via `.env`
+  - `ASSETS_ROOT` variable  
+
 ## [1.0.7] 2022-05-20
+### Improvements
 
 - Version built with [Black Dashboard Generator](https://appseed.us/generator/black-dashboard/)
 - Timestamp: `2022-05-20 15:37`

+ 14 - 0
Dockerfile

@@ -0,0 +1,14 @@
+FROM python:3.9
+
+COPY . .
+
+# set environment variables
+ENV PYTHONDONTWRITEBYTECODE 1
+ENV PYTHONUNBUFFERED 1
+
+# install python dependencies
+RUN pip install --upgrade pip
+RUN pip install --no-cache-dir -r requirements.txt
+
+# gunicorn
+CMD ["gunicorn", "--config", "gunicorn-cfg.py", "run:app"]

+ 32 - 0
LICENSE.md

@@ -0,0 +1,32 @@
+# MIT License
+
+Copyright (c) 2019 - present [AppSeed](http://appseed.us/)
+
+<br />
+
+## Licensing Information
+
+<br />
+
+| Item | - |
+| ---------------------------------- | --- |
+| License Type | MIT  |
+| Use for print | **YES** |
+| Create single personal website/app | **YES** |
+| Create single website/app for client | **YES** |
+| Create multiple website/apps for clients | **YES** |
+| Create multiple SaaS applications | **YES** |
+| End-product paying users | **YES** |
+| Product sale | **YES** |
+| Remove footer credits | **YES** |
+| --- | --- |
+| Remove copyright mentions from source code | NO |
+| Production deployment assistance | NO |
+| Create HTML/CSS template for sale | NO |
+| Create Theme/Template for CMS for sale | NO |
+| Separate sale of our UI Elements | NO |
+
+<br />
+
+---
+For more information regarding licensing, please contact the AppSeed Service < *support@appseed.us* >

+ 222 - 0
README.md

@@ -0,0 +1,222 @@
+# [Black Dashboard](https://appseed.us/generator/black-dashboard/) Flask
+
+Open-source **Flask Dashboard** generated by `AppSeed` op top of a modern `Bootstrap` design. Designed for those who like bold elements and beautiful websites, **[Black Dashboard](https://appseed.us/generator/black-dashboard/)** is ready to help you create stunning websites and webapps. **Black Dashboard** is built with over 50 frontend individual elements, like buttons, inputs, navbars, nav tabs, cards, or alerts, giving you the freedom of choosing and combining.
+
+<br />
+
+> Built with [Black Dashboard Generator](https://appseed.us/generator/black-dashboard/)
+
+- Timestamp: `2022-05-25 09:44`
+- Build ID: `8c10e305-a50e-441e-a8c8-9a687888f9b4`
+- **Free [Support](https://appseed.us/support/)** (registered users) via `Email` and `Discord`
+
+<br />
+
+> Features
+
+- `Up-to-date dependencies`
+- Database: `sqlite`
+- `DB Tools`: SQLAlchemy ORM, Flask-Migrate (schema migrations)
+- Session-Based authentication (via **flask_login**), Forms validation
+
+<br />
+
+![Black Dashboard - Full-Stack Starter generated by AppSeed.](https://user-images.githubusercontent.com/51070104/169471556-144ea706-0965-4f7d-8493-da9570085367.png)
+
+<br />
+
+
+## ✨ Start the app in Docker
+
+> **Step 1** - Download the code from the GH repository (using `GIT`) 
+
+```bash
+$ # Get the code
+$ git clone https://github.com/app-generator/flask-black-dashboard.git
+$ cd flask-black-dashboard
+```
+
+<br />
+
+> **Step 2** - Edit `.env` and set `DEBUG=True`. This will activate the `SQLite` persistance. 
+
+```txt
+DEBUG=True
+```
+
+<br />
+
+> **Step 3** - Start the APP in `Docker`
+
+```bash
+$ docker-compose up --build 
+```
+
+Visit `http://localhost:85` in your browser. The app should be up & running.
+
+<br />
+
+
+
+
+## ✨ How to use it
+
+> Download the code 
+
+```bash
+$ # Get the code
+$ git clone https://github.com/app-generator/flask-black-dashboard.git
+$ cd flask-black-dashboard
+```
+
+<br />
+
+### 👉 Set Up for `Unix`, `MacOS` 
+
+> Install modules via `VENV`  
+
+```bash
+$ virtualenv env
+$ source env/bin/activate
+$ pip3 install -r requirements.txt
+```
+
+<br />
+
+> Set Up Flask Environment
+
+```bash
+$ export FLASK_APP=run.py
+$ export FLASK_ENV=development
+```
+
+<br />
+
+> Start the app
+
+```bash
+$ flask run
+```
+
+At this point, the app runs at `http://127.0.0.1:5000/`. 
+
+<br />
+
+### 👉 Set Up for `Windows` 
+
+> Install modules via `VENV` (windows) 
+
+```
+$ virtualenv env
+$ .\env\Scripts\activate
+$ pip3 install -r requirements.txt
+```
+
+<br />
+
+> Set Up Flask Environment
+
+```bash
+$ # CMD 
+$ set FLASK_APP=run.py
+$ set FLASK_ENV=development
+$
+$ # Powershell
+$ $env:FLASK_APP = ".\run.py"
+$ $env:FLASK_ENV = "development"
+```
+
+<br />
+
+> Start the app
+
+```bash
+$ flask run
+```
+
+At this point, the app runs at `http://127.0.0.1:5000/`. 
+
+<br />
+
+### 👉 Create Users
+
+By default, the app redirects guest users to authenticate. In order to access the private pages, follow this set up: 
+
+- Start the app via `flask run`
+- Access the `registration` page and create a new user:
+  - `http://127.0.0.1:5000/register`
+- Access the `sign in` page and authenticate
+  - `http://127.0.0.1:5000/login`
+
+<br />
+
+## ✨ Code-base structure
+
+The project is coded using blueprints, app factory pattern, dual configuration profile (development and production) and an intuitive structure presented bellow:
+
+```bash
+< PROJECT ROOT >
+   |
+   |-- apps/
+   |    |
+   |    |-- home/                           # A simple app that serve HTML files
+   |    |    |-- routes.py                  # Define app routes
+   |    |
+   |    |-- authentication/                 # Handles auth routes (login and register)
+   |    |    |-- routes.py                  # Define authentication routes  
+   |    |    |-- models.py                  # Defines models  
+   |    |    |-- forms.py                   # Define auth forms (login and register) 
+   |    |
+   |    |-- static/
+   |    |    |-- <css, JS, images>          # CSS files, Javascripts files
+   |    |
+   |    |-- templates/                      # Templates used to render pages
+   |    |    |-- includes/                  # HTML chunks and components
+   |    |    |    |-- navigation.html       # Top menu component
+   |    |    |    |-- sidebar.html          # Sidebar component
+   |    |    |    |-- footer.html           # App Footer
+   |    |    |    |-- scripts.html          # Scripts common to all pages
+   |    |    |
+   |    |    |-- layouts/                   # Master pages
+   |    |    |    |-- base-fullscreen.html  # Used by Authentication pages
+   |    |    |    |-- base.html             # Used by common pages
+   |    |    |
+   |    |    |-- accounts/                  # Authentication pages
+   |    |    |    |-- login.html            # Login page
+   |    |    |    |-- register.html         # Register page
+   |    |    |
+   |    |    |-- home/                      # UI Kit Pages
+   |    |         |-- index.html            # Index page
+   |    |         |-- 404-page.html         # 404 page
+   |    |         |-- *.html                # All other pages
+   |    |    
+   |  config.py                             # Set up the app
+   |    __init__.py                         # Initialize the app
+   |
+   |-- requirements.txt                     # App Dependencies
+   |
+   |-- .env                                 # Inject Configuration via Environment
+   |-- run.py                               # Start the app - WSGI gateway
+   |
+   |-- ************************************************************************
+```
+
+<br />
+
+## ✨ PRO Version
+
+> For more components, pages and priority on support, feel free to take a look at this amazing starter:
+
+Black Dashboard is a premium Bootstrap Design now available for download in Django. Made of hundred of elements, designed blocks, and fully coded pages, Black Dashboard PRO is ready to help you create stunning websites and web apps.
+
+- 👉 [Black Dashboard PRO Flask](https://appseed.us/product/black-dashboard-pro/flask/) - Product Page
+- 👉 [Black Dashboard PRO Flask](https://flask-black-dashboard-pro.appseed-srv1.com/) - LIVE Demo
+
+<br >
+
+![Black Dashboard PRO - Full-Stack Starter generated by AppSeed.](https://user-images.githubusercontent.com/51070104/169471630-e96cec9b-ef57-4c06-9b36-62b9bbf255f3.png)
+
+<br />
+
+---
+[Black Dashboard](https://appseed.us/generator/black-dashboard/) Flask - Open-source starter generated by **[AppSeed Generator](https://appseed.us/generator/)**.

+ 44 - 0
apps/__init__.py

@@ -0,0 +1,44 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from flask import Flask
+from flask_login import LoginManager
+from flask_sqlalchemy import SQLAlchemy
+from importlib import import_module
+
+
+db = SQLAlchemy()
+login_manager = LoginManager()
+
+
+def register_extensions(app):
+    db.init_app(app)
+    login_manager.init_app(app)
+
+
+def register_blueprints(app):
+    for module_name in ('authentication', 'home'):
+        module = import_module('apps.{}.routes'.format(module_name))
+        app.register_blueprint(module.blueprint)
+
+
+def configure_database(app):
+
+    @app.before_first_request
+    def initialize_database():
+        db.create_all()
+
+    @app.teardown_request
+    def shutdown_session(exception=None):
+        db.session.remove()
+
+
+def create_app(config):
+    app = Flask(__name__)
+    app.config.from_object(config)
+    register_extensions(app)
+    register_blueprints(app)
+    configure_database(app)
+    return app

+ 12 - 0
apps/authentication/__init__.py

@@ -0,0 +1,12 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from flask import Blueprint
+
+blueprint = Blueprint(
+    'authentication_blueprint',
+    __name__,
+    url_prefix=''
+)

+ 31 - 0
apps/authentication/forms.py

@@ -0,0 +1,31 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from flask_wtf import FlaskForm
+from wtforms import StringField, PasswordField
+from wtforms.validators import Email, DataRequired
+
+# login and registration
+
+
+class LoginForm(FlaskForm):
+    username = StringField('Username',
+                         id='username_login',
+                         validators=[DataRequired()])
+    password = PasswordField('Password',
+                             id='pwd_login',
+                             validators=[DataRequired()])
+
+
+class CreateAccountForm(FlaskForm):
+    username = StringField('Username',
+                         id='username_create',
+                         validators=[DataRequired()])
+    email = StringField('Email',
+                      id='email_create',
+                      validators=[DataRequired(), Email()])
+    password = PasswordField('Password',
+                             id='pwd_create',
+                             validators=[DataRequired()])

+ 48 - 0
apps/authentication/models.py

@@ -0,0 +1,48 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from flask_login import UserMixin
+
+from apps import db, login_manager
+
+from apps.authentication.util import hash_pass
+
+class Users(db.Model, UserMixin):
+
+    __tablename__ = 'Users'
+
+    id = db.Column(db.Integer, primary_key=True)
+    username = db.Column(db.String(64), unique=True)
+    email = db.Column(db.String(64), unique=True)
+    password = db.Column(db.LargeBinary)
+
+    def __init__(self, **kwargs):
+        for property, value in kwargs.items():
+            # depending on whether value is an iterable or not, we must
+            # unpack it's value (when **kwargs is request.form, some values
+            # will be a 1-element list)
+            if hasattr(value, '__iter__') and not isinstance(value, str):
+                # the ,= unpack of a singleton fails PEP8 (travis flake8 test)
+                value = value[0]
+
+            if property == 'password':
+                value = hash_pass(value)  # we need bytes here (not plain str)
+
+            setattr(self, property, value)
+
+    def __repr__(self):
+        return str(self.username)
+
+
+@login_manager.user_loader
+def user_loader(id):
+    return Users.query.filter_by(id=id).first()
+
+
+@login_manager.request_loader
+def request_loader(request):
+    username = request.form.get('username')
+    user = Users.query.filter_by(username=username).first()
+    return user if user else None

+ 120 - 0
apps/authentication/routes.py

@@ -0,0 +1,120 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from flask import render_template, redirect, request, url_for
+from flask_login import (
+    current_user,
+    login_user,
+    logout_user
+)
+
+from apps import db, login_manager
+from apps.authentication import blueprint
+from apps.authentication.forms import LoginForm, CreateAccountForm
+from apps.authentication.models import Users
+
+from apps.authentication.util import verify_pass
+
+
+@blueprint.route('/')
+def route_default():
+    return redirect(url_for('authentication_blueprint.login'))
+
+
+# Login & Registration
+
+@blueprint.route('/login', methods=['GET', 'POST'])
+def login():
+    login_form = LoginForm(request.form)
+    if 'login' in request.form:
+
+        # read form data
+        username = request.form['username']
+        password = request.form['password']
+
+        # Locate user
+        user = Users.query.filter_by(username=username).first()
+
+        # Check the password
+        if user and verify_pass(password, user.password):
+
+            login_user(user)
+            return redirect(url_for('authentication_blueprint.route_default'))
+
+        # Something (user or pass) is not ok
+        return render_template('accounts/login.html',
+                               msg='Wrong user or password',
+                               form=login_form)
+
+    if not current_user.is_authenticated:
+        return render_template('accounts/login.html',
+                               form=login_form)
+    return redirect(url_for('home_blueprint.index'))
+
+
+@blueprint.route('/register', methods=['GET', 'POST'])
+def register():
+    create_account_form = CreateAccountForm(request.form)
+    if 'register' in request.form:
+
+        username = request.form['username']
+        email = request.form['email']
+
+        # Check usename exists
+        user = Users.query.filter_by(username=username).first()
+        if user:
+            return render_template('accounts/register.html',
+                                   msg='Username already registered',
+                                   success=False,
+                                   form=create_account_form)
+
+        # Check email exists
+        user = Users.query.filter_by(email=email).first()
+        if user:
+            return render_template('accounts/register.html',
+                                   msg='Email already registered',
+                                   success=False,
+                                   form=create_account_form)
+
+        # else we can create the user
+        user = Users(**request.form)
+        db.session.add(user)
+        db.session.commit()
+
+        return render_template('accounts/register.html',
+                               msg='User created please <a href="/login">login</a>',
+                               success=True,
+                               form=create_account_form)
+
+    else:
+        return render_template('accounts/register.html', form=create_account_form)
+
+
+@blueprint.route('/logout')
+def logout():
+    logout_user()
+    return redirect(url_for('authentication_blueprint.login'))
+
+
+# Errors
+
+@login_manager.unauthorized_handler
+def unauthorized_handler():
+    return render_template('home/page-403.html'), 403
+
+
+@blueprint.errorhandler(403)
+def access_forbidden(error):
+    return render_template('home/page-403.html'), 403
+
+
+@blueprint.errorhandler(404)
+def not_found_error(error):
+    return render_template('home/page-404.html'), 404
+
+
+@blueprint.errorhandler(500)
+def internal_error(error):
+    return render_template('home/page-500.html'), 500

+ 34 - 0
apps/authentication/util.py

@@ -0,0 +1,34 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+import os
+import hashlib
+import binascii
+
+# Inspiration -> https://www.vitoshacademy.com/hashing-passwords-in-python/
+
+
+def hash_pass(password):
+    """Hash a password for storing."""
+
+    salt = hashlib.sha256(os.urandom(60)).hexdigest().encode('ascii')
+    pwdhash = hashlib.pbkdf2_hmac('sha512', password.encode('utf-8'),
+                                  salt, 100000)
+    pwdhash = binascii.hexlify(pwdhash)
+    return (salt + pwdhash)  # return bytes
+
+
+def verify_pass(provided_password, stored_password):
+    """Verify a stored password against one provided by user"""
+
+    stored_password = stored_password.decode('ascii')
+    salt = stored_password[:64]
+    stored_password = stored_password[64:]
+    pwdhash = hashlib.pbkdf2_hmac('sha512',
+                                  provided_password.encode('utf-8'),
+                                  salt.encode('ascii'),
+                                  100000)
+    pwdhash = binascii.hexlify(pwdhash).decode('ascii')
+    return pwdhash == stored_password

+ 50 - 0
apps/config.py

@@ -0,0 +1,50 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+import os
+
+class Config(object):
+
+    basedir = os.path.abspath(os.path.dirname(__file__))
+
+    # Set up the App SECRET_KEY
+    # SECRET_KEY = config('SECRET_KEY'  , default='S#perS3crEt_007')
+    SECRET_KEY = os.getenv('SECRET_KEY', 'S#perS3crEt_007')
+
+    # This will create a file in <app> FOLDER
+    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'db.sqlite3')
+    SQLALCHEMY_TRACK_MODIFICATIONS = False 
+
+    # Assets Management
+    ASSETS_ROOT = os.getenv('ASSETS_ROOT', '/static/assets')    
+    
+class ProductionConfig(Config):
+    DEBUG = False
+
+    # Security
+    SESSION_COOKIE_HTTPONLY = True
+    REMEMBER_COOKIE_HTTPONLY = True
+    REMEMBER_COOKIE_DURATION = 3600
+
+    # PostgreSQL database
+    SQLALCHEMY_DATABASE_URI = '{}://{}:{}@{}:{}/{}'.format(
+        os.getenv('DB_ENGINE'   , 'mysql'),
+        os.getenv('DB_USERNAME' , 'appseed_db_usr'),
+        os.getenv('DB_PASS'     , 'pass'),
+        os.getenv('DB_HOST'     , 'localhost'),
+        os.getenv('DB_PORT'     , 3306),
+        os.getenv('DB_NAME'     , 'appseed_db')
+    )
+
+
+class DebugConfig(Config):
+    DEBUG = True
+
+
+# Load all possible configurations
+config_dict = {
+    'Production': ProductionConfig,
+    'Debug'     : DebugConfig
+}

+ 12 - 0
apps/home/__init__.py

@@ -0,0 +1,12 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from flask import Blueprint
+
+blueprint = Blueprint(
+    'home_blueprint',
+    __name__,
+    url_prefix=''
+)

+ 54 - 0
apps/home/routes.py

@@ -0,0 +1,54 @@
+# -*- encoding: utf-8 -*-
+"""
+Copyright (c) 2019 - present AppSeed.us
+"""
+
+from apps.home import blueprint
+from flask import render_template, request
+from flask_login import login_required
+from jinja2 import TemplateNotFound
+
+
+@blueprint.route('/index')
+@login_required
+def index():
+
+    return render_template('home/index.html', segment='index')
+
+
+@blueprint.route('/<template>')
+@login_required
+def route_template(template):
+
+    try:
+
+        if not template.endswith('.html'):
+            template += '.html'
+
+        # Detect the current page
+        segment = get_segment(request)
+
+        # Serve the file (if exists) from app/templates/home/FILE.html
+        return render_template("home/" + template, segment=segment)
+
+    except TemplateNotFound:
+        return render_template('home/page-404.html'), 404
+
+    except:
+        return render_template('home/page-500.html'), 500
+
+
+# Helper - Extract current page name from request
+def get_segment(request):
+
+    try:
+
+        segment = request.path.split('/')[-1]
+
+        if segment == '':
+            segment = 'index'
+
+        return segment
+
+    except:
+        return None

+ 0 - 0
apps/static/assets/.gitkeep


+ 13360 - 0
apps/static/assets/css/black-dashboard.css

@@ -0,0 +1,13360 @@
+/*!
+
+=========================================================
+* Black Dashboard - v1.0.1
+=========================================================
+
+* Product Page: https://www.creative-tim.com/product/black-dashboard
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+
+
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+*/
+/*     brand Colors              */
+/* navbar color */
+:root {
+  --blue: #5e72e4;
+  --indigo: #5603ad;
+  --purple: #8965e0;
+  --pink: #f3a4b5;
+  --red: #f5365c;
+  --orange: #fb6340;
+  --yellow: #ffd600;
+  --green: #2dce89;
+  --teal: #11cdef;
+  --cyan: #2bffc6;
+  --white: #ffffff;
+  --gray: #6c757d;
+  --gray-dark: #32325d;
+  --light: #ced4da;
+  --lighter: #e9ecef;
+  --primary: #e14eca;
+  --secondary: #f4f5f7;
+  --success: #00f2c3;
+  --info: #1d8cf8;
+  --warning: #ff8d72;
+  --danger: #fd5d93;
+  --light: #adb5bd;
+  --dark: #212529;
+  --default: #344675;
+  --white: #ffffff;
+  --neutral: #ffffff;
+  --darker: black;
+  --breakpoint-xs: 0;
+  --breakpoint-sm: 576px;
+  --breakpoint-md: 768px;
+  --breakpoint-lg: 992px;
+  --breakpoint-xl: 1200px;
+  --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box; }
+
+html {
+  font-family: sans-serif;
+  line-height: 1.15;
+  -webkit-text-size-adjust: 100%;
+  -webkit-tap-highlight-color: rgba(34, 42, 66, 0); }
+
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
+  display: block; }
+
+body {
+  margin: 0;
+  font-family: "Poppins", sans-serif;
+  font-size: 0.875rem;
+  font-weight: 400;
+  line-height: 1.5;
+  color: #525f7f;
+  text-align: left;
+  background-color: #1e1e2f; }
+
+[tabindex="-1"]:focus {
+  outline: 0 !important; }
+
+hr {
+  box-sizing: content-box;
+  height: 0;
+  overflow: visible; }
+
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: 0.5rem; }
+
+p {
+  margin-top: 0;
+  margin-bottom: 1rem; }
+
+abbr[title],
+abbr[data-original-title] {
+  text-decoration: underline;
+  -webkit-text-decoration: underline dotted;
+          text-decoration: underline dotted;
+  cursor: help;
+  border-bottom: 0;
+  -webkit-text-decoration-skip-ink: none;
+          text-decoration-skip-ink: none; }
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit; }
+
+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: .5rem;
+  margin-left: 0; }
+
+blockquote {
+  margin: 0 0 1rem; }
+
+b,
+strong {
+  font-weight: bolder; }
+
+small {
+  font-size: 80%; }
+
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline; }
+
+sub {
+  bottom: -.25em; }
+
+sup {
+  top: -.5em; }
+
+a {
+  color: #e14eca;
+  text-decoration: none;
+  background-color: transparent; }
+  a:hover {
+    color: #c221a9;
+    text-decoration: none; }
+
+a:not([href]):not([tabindex]) {
+  color: inherit;
+  text-decoration: none; }
+  a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
+    color: inherit;
+    text-decoration: none; }
+  a:not([href]):not([tabindex]):focus {
+    outline: 0; }
+
+pre,
+code,
+kbd,
+samp {
+  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+  font-size: 1em; }
+
+pre {
+  margin-top: 0;
+  margin-bottom: 1rem;
+  overflow: auto; }
+
+figure {
+  margin: 0 0 1rem; }
+
+img {
+  vertical-align: middle;
+  border-style: none; }
+
+svg {
+  overflow: hidden;
+  vertical-align: middle; }
+
+table {
+  border-collapse: collapse; }
+
+caption {
+  padding-top: 1rem;
+  padding-bottom: 1rem;
+  color: #6c757d;
+  text-align: left;
+  caption-side: bottom; }
+
+th {
+  text-align: inherit; }
+
+label {
+  display: inline-block;
+  margin-bottom: 0.5rem; }
+
+button {
+  border-radius: 0; }
+
+button:focus {
+  outline: 1px dotted;
+  outline: 5px auto -webkit-focus-ring-color; }
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit; }
+
+button,
+input {
+  overflow: visible; }
+
+button,
+select {
+  text-transform: none; }
+
+select {
+  word-wrap: normal; }
+
+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; }
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  padding: 0;
+  border-style: none; }
+
+input[type="radio"],
+input[type="checkbox"] {
+  box-sizing: border-box;
+  padding: 0; }
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+  -webkit-appearance: listbox; }
+
+textarea {
+  overflow: auto;
+  resize: vertical; }
+
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0; }
+
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%;
+  padding: 0;
+  margin-bottom: .5rem;
+  font-size: 1.5rem;
+  line-height: inherit;
+  color: inherit;
+  white-space: normal; }
+
+progress {
+  vertical-align: baseline; }
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto; }
+
+[type="search"] {
+  outline-offset: -2px;
+  -webkit-appearance: none; }
+
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none; }
+
+::-webkit-file-upload-button {
+  font: inherit;
+  -webkit-appearance: button; }
+
+output {
+  display: inline-block; }
+
+summary {
+  display: list-item;
+  cursor: pointer; }
+
+template {
+  display: none; }
+
+[hidden] {
+  display: none !important; }
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  margin-bottom: 0.5rem;
+  font-family: inherit;
+  font-weight: 400;
+  line-height: 1.2;
+  color: #32325d; }
+
+h1, .h1 {
+  font-size: 2.0625rem; }
+
+h2, .h2 {
+  font-size: 1.6875rem; }
+
+h3, .h3 {
+  font-size: 1.4375rem; }
+
+h4, .h4 {
+  font-size: 1.0625rem; }
+
+h5, .h5 {
+  font-size: 0.8125rem; }
+
+h6, .h6 {
+  font-size: 0.75rem; }
+
+.lead {
+  font-size: 0.78125rem;
+  font-weight: 300; }
+
+.display-1 {
+  font-size: 3.3rem;
+  font-weight: 600;
+  line-height: 1.2; }
+
+.display-2 {
+  font-size: 2.75rem;
+  font-weight: 600;
+  line-height: 1.2; }
+
+.display-3 {
+  font-size: 2.1875rem;
+  font-weight: 600;
+  line-height: 1.2; }
+
+.display-4 {
+  font-size: 1.6275rem;
+  font-weight: 600;
+  line-height: 1.2; }
+
+hr {
+  margin-top: 2rem;
+  margin-bottom: 2rem;
+  border: 0;
+  border-top: 0.0625rem solid rgba(34, 42, 66, 0.1); }
+
+small,
+.small {
+  font-size: 80%;
+  font-weight: 400; }
+
+mark,
+.mark {
+  padding: 0.2em;
+  background-color: #fcf8e3; }
+
+.list-unstyled {
+  padding-left: 0;
+  list-style: none; }
+
+.list-inline {
+  padding-left: 0;
+  list-style: none; }
+
+.list-inline-item {
+  display: inline-block; }
+  .list-inline-item:not(:last-child) {
+    margin-right: 0.5rem; }
+
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase; }
+
+.blockquote {
+  margin-bottom: 1rem;
+  font-size: 0.9625rem; }
+
+.blockquote-footer {
+  display: block;
+  font-size: 80%;
+  color: #6c757d; }
+  .blockquote-footer::before {
+    content: "\2014\00A0"; }
+
+.img-fluid {
+  max-width: 100%;
+  height: auto; }
+
+.img-thumbnail {
+  padding: 0.25rem;
+  background-color: #1e1e2f;
+  border: 0.0625rem solid #e3e3e3;
+  border-radius: 0.25rem;
+  box-shadow: 0 1px 2px rgba(34, 42, 66, 0.075);
+  max-width: 100%;
+  height: auto; }
+
+.figure {
+  display: inline-block; }
+
+.figure-img {
+  margin-bottom: 0.5rem;
+  line-height: 1; }
+
+.figure-caption {
+  font-size: 90%;
+  color: #6c757d; }
+
+code {
+  font-size: 87.5%;
+  color: #f3a4b5;
+  word-break: break-word; }
+  a > code {
+    color: inherit; }
+
+kbd {
+  padding: 0.2rem 0.4rem;
+  font-size: 87.5%;
+  color: #ffffff;
+  background-color: #212529;
+  border-radius: 0.2857rem;
+  box-shadow: inset 0 -0.1rem 0 rgba(34, 42, 66, 0.25); }
+  kbd kbd {
+    padding: 0;
+    font-size: 100%;
+    font-weight: 600;
+    box-shadow: none; }
+
+pre {
+  display: block;
+  font-size: 87.5%;
+  color: #212529; }
+  pre code {
+    font-size: inherit;
+    color: inherit;
+    word-break: normal; }
+
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll; }
+
+.container {
+  width: 100%;
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto; }
+  @media (min-width: 576px) {
+    .container {
+      max-width: 540px; } }
+  @media (min-width: 768px) {
+    .container {
+      max-width: 720px; } }
+  @media (min-width: 992px) {
+    .container {
+      max-width: 960px; } }
+  @media (min-width: 1200px) {
+    .container {
+      max-width: 1140px; } }
+
+.container-fluid {
+  width: 100%;
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto; }
+
+.row {
+  display: flex;
+  flex-wrap: wrap;
+  margin-right: -15px;
+  margin-left: -15px; }
+
+.no-gutters {
+  margin-right: 0;
+  margin-left: 0; }
+  .no-gutters > .col,
+  .no-gutters > [class*="col-"] {
+    padding-right: 0;
+    padding-left: 0; }
+
+.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
+.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
+.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
+.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
+.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
+.col-xl-auto {
+  position: relative;
+  width: 100%;
+  padding-right: 15px;
+  padding-left: 15px; }
+
+.col {
+  flex-basis: 0;
+  flex-grow: 1;
+  max-width: 100%; }
+
+.col-auto {
+  flex: 0 0 auto;
+  width: auto;
+  max-width: 100%; }
+
+.col-1 {
+  flex: 0 0 8.33333%;
+  max-width: 8.33333%; }
+
+.col-2 {
+  flex: 0 0 16.66667%;
+  max-width: 16.66667%; }
+
+.col-3 {
+  flex: 0 0 25%;
+  max-width: 25%; }
+
+.col-4 {
+  flex: 0 0 33.33333%;
+  max-width: 33.33333%; }
+
+.col-5 {
+  flex: 0 0 41.66667%;
+  max-width: 41.66667%; }
+
+.col-6 {
+  flex: 0 0 50%;
+  max-width: 50%; }
+
+.col-7 {
+  flex: 0 0 58.33333%;
+  max-width: 58.33333%; }
+
+.col-8 {
+  flex: 0 0 66.66667%;
+  max-width: 66.66667%; }
+
+.col-9 {
+  flex: 0 0 75%;
+  max-width: 75%; }
+
+.col-10 {
+  flex: 0 0 83.33333%;
+  max-width: 83.33333%; }
+
+.col-11 {
+  flex: 0 0 91.66667%;
+  max-width: 91.66667%; }
+
+.col-12 {
+  flex: 0 0 100%;
+  max-width: 100%; }
+
+.order-first {
+  order: -1; }
+
+.order-last {
+  order: 13; }
+
+.order-0 {
+  order: 0; }
+
+.order-1 {
+  order: 1; }
+
+.order-2 {
+  order: 2; }
+
+.order-3 {
+  order: 3; }
+
+.order-4 {
+  order: 4; }
+
+.order-5 {
+  order: 5; }
+
+.order-6 {
+  order: 6; }
+
+.order-7 {
+  order: 7; }
+
+.order-8 {
+  order: 8; }
+
+.order-9 {
+  order: 9; }
+
+.order-10 {
+  order: 10; }
+
+.order-11 {
+  order: 11; }
+
+.order-12 {
+  order: 12; }
+
+.offset-1 {
+  margin-left: 8.33333%; }
+
+.offset-2 {
+  margin-left: 16.66667%; }
+
+.offset-3 {
+  margin-left: 25%; }
+
+.offset-4 {
+  margin-left: 33.33333%; }
+
+.offset-5 {
+  margin-left: 41.66667%; }
+
+.offset-6 {
+  margin-left: 50%; }
+
+.offset-7 {
+  margin-left: 58.33333%; }
+
+.offset-8 {
+  margin-left: 66.66667%; }
+
+.offset-9 {
+  margin-left: 75%; }
+
+.offset-10 {
+  margin-left: 83.33333%; }
+
+.offset-11 {
+  margin-left: 91.66667%; }
+
+@media (min-width: 576px) {
+  .col-sm {
+    flex-basis: 0;
+    flex-grow: 1;
+    max-width: 100%; }
+  .col-sm-auto {
+    flex: 0 0 auto;
+    width: auto;
+    max-width: 100%; }
+  .col-sm-1 {
+    flex: 0 0 8.33333%;
+    max-width: 8.33333%; }
+  .col-sm-2 {
+    flex: 0 0 16.66667%;
+    max-width: 16.66667%; }
+  .col-sm-3 {
+    flex: 0 0 25%;
+    max-width: 25%; }
+  .col-sm-4 {
+    flex: 0 0 33.33333%;
+    max-width: 33.33333%; }
+  .col-sm-5 {
+    flex: 0 0 41.66667%;
+    max-width: 41.66667%; }
+  .col-sm-6 {
+    flex: 0 0 50%;
+    max-width: 50%; }
+  .col-sm-7 {
+    flex: 0 0 58.33333%;
+    max-width: 58.33333%; }
+  .col-sm-8 {
+    flex: 0 0 66.66667%;
+    max-width: 66.66667%; }
+  .col-sm-9 {
+    flex: 0 0 75%;
+    max-width: 75%; }
+  .col-sm-10 {
+    flex: 0 0 83.33333%;
+    max-width: 83.33333%; }
+  .col-sm-11 {
+    flex: 0 0 91.66667%;
+    max-width: 91.66667%; }
+  .col-sm-12 {
+    flex: 0 0 100%;
+    max-width: 100%; }
+  .order-sm-first {
+    order: -1; }
+  .order-sm-last {
+    order: 13; }
+  .order-sm-0 {
+    order: 0; }
+  .order-sm-1 {
+    order: 1; }
+  .order-sm-2 {
+    order: 2; }
+  .order-sm-3 {
+    order: 3; }
+  .order-sm-4 {
+    order: 4; }
+  .order-sm-5 {
+    order: 5; }
+  .order-sm-6 {
+    order: 6; }
+  .order-sm-7 {
+    order: 7; }
+  .order-sm-8 {
+    order: 8; }
+  .order-sm-9 {
+    order: 9; }
+  .order-sm-10 {
+    order: 10; }
+  .order-sm-11 {
+    order: 11; }
+  .order-sm-12 {
+    order: 12; }
+  .offset-sm-0 {
+    margin-left: 0; }
+  .offset-sm-1 {
+    margin-left: 8.33333%; }
+  .offset-sm-2 {
+    margin-left: 16.66667%; }
+  .offset-sm-3 {
+    margin-left: 25%; }
+  .offset-sm-4 {
+    margin-left: 33.33333%; }
+  .offset-sm-5 {
+    margin-left: 41.66667%; }
+  .offset-sm-6 {
+    margin-left: 50%; }
+  .offset-sm-7 {
+    margin-left: 58.33333%; }
+  .offset-sm-8 {
+    margin-left: 66.66667%; }
+  .offset-sm-9 {
+    margin-left: 75%; }
+  .offset-sm-10 {
+    margin-left: 83.33333%; }
+  .offset-sm-11 {
+    margin-left: 91.66667%; } }
+
+@media (min-width: 768px) {
+  .col-md {
+    flex-basis: 0;
+    flex-grow: 1;
+    max-width: 100%; }
+  .col-md-auto {
+    flex: 0 0 auto;
+    width: auto;
+    max-width: 100%; }
+  .col-md-1 {
+    flex: 0 0 8.33333%;
+    max-width: 8.33333%; }
+  .col-md-2 {
+    flex: 0 0 16.66667%;
+    max-width: 16.66667%; }
+  .col-md-3 {
+    flex: 0 0 25%;
+    max-width: 25%; }
+  .col-md-4 {
+    flex: 0 0 33.33333%;
+    max-width: 33.33333%; }
+  .col-md-5 {
+    flex: 0 0 41.66667%;
+    max-width: 41.66667%; }
+  .col-md-6 {
+    flex: 0 0 50%;
+    max-width: 50%; }
+  .col-md-7 {
+    flex: 0 0 58.33333%;
+    max-width: 58.33333%; }
+  .col-md-8 {
+    flex: 0 0 66.66667%;
+    max-width: 66.66667%; }
+  .col-md-9 {
+    flex: 0 0 75%;
+    max-width: 75%; }
+  .col-md-10 {
+    flex: 0 0 83.33333%;
+    max-width: 83.33333%; }
+  .col-md-11 {
+    flex: 0 0 91.66667%;
+    max-width: 91.66667%; }
+  .col-md-12 {
+    flex: 0 0 100%;
+    max-width: 100%; }
+  .order-md-first {
+    order: -1; }
+  .order-md-last {
+    order: 13; }
+  .order-md-0 {
+    order: 0; }
+  .order-md-1 {
+    order: 1; }
+  .order-md-2 {
+    order: 2; }
+  .order-md-3 {
+    order: 3; }
+  .order-md-4 {
+    order: 4; }
+  .order-md-5 {
+    order: 5; }
+  .order-md-6 {
+    order: 6; }
+  .order-md-7 {
+    order: 7; }
+  .order-md-8 {
+    order: 8; }
+  .order-md-9 {
+    order: 9; }
+  .order-md-10 {
+    order: 10; }
+  .order-md-11 {
+    order: 11; }
+  .order-md-12 {
+    order: 12; }
+  .offset-md-0 {
+    margin-left: 0; }
+  .offset-md-1 {
+    margin-left: 8.33333%; }
+  .offset-md-2 {
+    margin-left: 16.66667%; }
+  .offset-md-3 {
+    margin-left: 25%; }
+  .offset-md-4 {
+    margin-left: 33.33333%; }
+  .offset-md-5 {
+    margin-left: 41.66667%; }
+  .offset-md-6 {
+    margin-left: 50%; }
+  .offset-md-7 {
+    margin-left: 58.33333%; }
+  .offset-md-8 {
+    margin-left: 66.66667%; }
+  .offset-md-9 {
+    margin-left: 75%; }
+  .offset-md-10 {
+    margin-left: 83.33333%; }
+  .offset-md-11 {
+    margin-left: 91.66667%; } }
+
+@media (min-width: 992px) {
+  .col-lg {
+    flex-basis: 0;
+    flex-grow: 1;
+    max-width: 100%; }
+  .col-lg-auto {
+    flex: 0 0 auto;
+    width: auto;
+    max-width: 100%; }
+  .col-lg-1 {
+    flex: 0 0 8.33333%;
+    max-width: 8.33333%; }
+  .col-lg-2 {
+    flex: 0 0 16.66667%;
+    max-width: 16.66667%; }
+  .col-lg-3 {
+    flex: 0 0 25%;
+    max-width: 25%; }
+  .col-lg-4 {
+    flex: 0 0 33.33333%;
+    max-width: 33.33333%; }
+  .col-lg-5 {
+    flex: 0 0 41.66667%;
+    max-width: 41.66667%; }
+  .col-lg-6 {
+    flex: 0 0 50%;
+    max-width: 50%; }
+  .col-lg-7 {
+    flex: 0 0 58.33333%;
+    max-width: 58.33333%; }
+  .col-lg-8 {
+    flex: 0 0 66.66667%;
+    max-width: 66.66667%; }
+  .col-lg-9 {
+    flex: 0 0 75%;
+    max-width: 75%; }
+  .col-lg-10 {
+    flex: 0 0 83.33333%;
+    max-width: 83.33333%; }
+  .col-lg-11 {
+    flex: 0 0 91.66667%;
+    max-width: 91.66667%; }
+  .col-lg-12 {
+    flex: 0 0 100%;
+    max-width: 100%; }
+  .order-lg-first {
+    order: -1; }
+  .order-lg-last {
+    order: 13; }
+  .order-lg-0 {
+    order: 0; }
+  .order-lg-1 {
+    order: 1; }
+  .order-lg-2 {
+    order: 2; }
+  .order-lg-3 {
+    order: 3; }
+  .order-lg-4 {
+    order: 4; }
+  .order-lg-5 {
+    order: 5; }
+  .order-lg-6 {
+    order: 6; }
+  .order-lg-7 {
+    order: 7; }
+  .order-lg-8 {
+    order: 8; }
+  .order-lg-9 {
+    order: 9; }
+  .order-lg-10 {
+    order: 10; }
+  .order-lg-11 {
+    order: 11; }
+  .order-lg-12 {
+    order: 12; }
+  .offset-lg-0 {
+    margin-left: 0; }
+  .offset-lg-1 {
+    margin-left: 8.33333%; }
+  .offset-lg-2 {
+    margin-left: 16.66667%; }
+  .offset-lg-3 {
+    margin-left: 25%; }
+  .offset-lg-4 {
+    margin-left: 33.33333%; }
+  .offset-lg-5 {
+    margin-left: 41.66667%; }
+  .offset-lg-6 {
+    margin-left: 50%; }
+  .offset-lg-7 {
+    margin-left: 58.33333%; }
+  .offset-lg-8 {
+    margin-left: 66.66667%; }
+  .offset-lg-9 {
+    margin-left: 75%; }
+  .offset-lg-10 {
+    margin-left: 83.33333%; }
+  .offset-lg-11 {
+    margin-left: 91.66667%; } }
+
+@media (min-width: 1200px) {
+  .col-xl {
+    flex-basis: 0;
+    flex-grow: 1;
+    max-width: 100%; }
+  .col-xl-auto {
+    flex: 0 0 auto;
+    width: auto;
+    max-width: 100%; }
+  .col-xl-1 {
+    flex: 0 0 8.33333%;
+    max-width: 8.33333%; }
+  .col-xl-2 {
+    flex: 0 0 16.66667%;
+    max-width: 16.66667%; }
+  .col-xl-3 {
+    flex: 0 0 25%;
+    max-width: 25%; }
+  .col-xl-4 {
+    flex: 0 0 33.33333%;
+    max-width: 33.33333%; }
+  .col-xl-5 {
+    flex: 0 0 41.66667%;
+    max-width: 41.66667%; }
+  .col-xl-6 {
+    flex: 0 0 50%;
+    max-width: 50%; }
+  .col-xl-7 {
+    flex: 0 0 58.33333%;
+    max-width: 58.33333%; }
+  .col-xl-8 {
+    flex: 0 0 66.66667%;
+    max-width: 66.66667%; }
+  .col-xl-9 {
+    flex: 0 0 75%;
+    max-width: 75%; }
+  .col-xl-10 {
+    flex: 0 0 83.33333%;
+    max-width: 83.33333%; }
+  .col-xl-11 {
+    flex: 0 0 91.66667%;
+    max-width: 91.66667%; }
+  .col-xl-12 {
+    flex: 0 0 100%;
+    max-width: 100%; }
+  .order-xl-first {
+    order: -1; }
+  .order-xl-last {
+    order: 13; }
+  .order-xl-0 {
+    order: 0; }
+  .order-xl-1 {
+    order: 1; }
+  .order-xl-2 {
+    order: 2; }
+  .order-xl-3 {
+    order: 3; }
+  .order-xl-4 {
+    order: 4; }
+  .order-xl-5 {
+    order: 5; }
+  .order-xl-6 {
+    order: 6; }
+  .order-xl-7 {
+    order: 7; }
+  .order-xl-8 {
+    order: 8; }
+  .order-xl-9 {
+    order: 9; }
+  .order-xl-10 {
+    order: 10; }
+  .order-xl-11 {
+    order: 11; }
+  .order-xl-12 {
+    order: 12; }
+  .offset-xl-0 {
+    margin-left: 0; }
+  .offset-xl-1 {
+    margin-left: 8.33333%; }
+  .offset-xl-2 {
+    margin-left: 16.66667%; }
+  .offset-xl-3 {
+    margin-left: 25%; }
+  .offset-xl-4 {
+    margin-left: 33.33333%; }
+  .offset-xl-5 {
+    margin-left: 41.66667%; }
+  .offset-xl-6 {
+    margin-left: 50%; }
+  .offset-xl-7 {
+    margin-left: 58.33333%; }
+  .offset-xl-8 {
+    margin-left: 66.66667%; }
+  .offset-xl-9 {
+    margin-left: 75%; }
+  .offset-xl-10 {
+    margin-left: 83.33333%; }
+  .offset-xl-11 {
+    margin-left: 91.66667%; } }
+
+.table {
+  width: 100%;
+  margin-bottom: 1rem;
+  color: #525f7f;
+  background-color: transparent; }
+  .table th,
+  .table td {
+    padding: 1rem;
+    vertical-align: top;
+    border-top: 0.0625rem solid #e3e3e3; }
+  .table thead th {
+    vertical-align: bottom;
+    border-bottom: 0.125rem solid #e3e3e3; }
+  .table tbody + tbody {
+    border-top: 0.125rem solid #e3e3e3; }
+
+.table-sm th,
+.table-sm td {
+  padding: 0.3rem; }
+
+.table-bordered {
+  border: 0.0625rem solid #e3e3e3; }
+  .table-bordered th,
+  .table-bordered td {
+    border: 0.0625rem solid #e3e3e3; }
+  .table-bordered thead th,
+  .table-bordered thead td {
+    border-bottom-width: 0.125rem; }
+
+.table-borderless th,
+.table-borderless td,
+.table-borderless thead th,
+.table-borderless tbody + tbody {
+  border: 0; }
+
+.table-striped tbody tr:nth-of-type(odd) {
+  background-color: rgba(34, 42, 66, 0.05); }
+
+.table-hover tbody tr:hover {
+  color: #525f7f;
+  background-color: rgba(34, 42, 66, 0.075); }
+
+.table-primary,
+.table-primary > th,
+.table-primary > td {
+  background-color: #f7cdf0; }
+
+.table-primary th,
+.table-primary td,
+.table-primary thead th,
+.table-primary tbody + tbody {
+  border-color: #efa3e3; }
+
+.table-hover .table-primary:hover {
+  background-color: #f3b7e9; }
+  .table-hover .table-primary:hover > td,
+  .table-hover .table-primary:hover > th {
+    background-color: #f3b7e9; }
+
+.table-secondary,
+.table-secondary > th,
+.table-secondary > td {
+  background-color: #fcfcfd; }
+
+.table-secondary th,
+.table-secondary td,
+.table-secondary thead th,
+.table-secondary tbody + tbody {
+  border-color: #f9fafb; }
+
+.table-hover .table-secondary:hover {
+  background-color: #ededf3; }
+  .table-hover .table-secondary:hover > td,
+  .table-hover .table-secondary:hover > th {
+    background-color: #ededf3; }
+
+.table-success,
+.table-success > th,
+.table-success > td {
+  background-color: #b8fbee; }
+
+.table-success th,
+.table-success td,
+.table-success thead th,
+.table-success tbody + tbody {
+  border-color: #7af8e0; }
+
+.table-hover .table-success:hover {
+  background-color: #a0fae8; }
+  .table-hover .table-success:hover > td,
+  .table-hover .table-success:hover > th {
+    background-color: #a0fae8; }
+
+.table-info,
+.table-info > th,
+.table-info > td {
+  background-color: #c0dffd; }
+
+.table-info th,
+.table-info td,
+.table-info thead th,
+.table-info tbody + tbody {
+  border-color: #89c3fb; }
+
+.table-hover .table-info:hover {
+  background-color: #a7d2fc; }
+  .table-hover .table-info:hover > td,
+  .table-hover .table-info:hover > th {
+    background-color: #a7d2fc; }
+
+.table-warning,
+.table-warning > th,
+.table-warning > td {
+  background-color: #ffdfd8; }
+
+.table-warning th,
+.table-warning td,
+.table-warning thead th,
+.table-warning tbody + tbody {
+  border-color: #ffc4b6; }
+
+.table-hover .table-warning:hover {
+  background-color: #ffcabf; }
+  .table-hover .table-warning:hover > td,
+  .table-hover .table-warning:hover > th {
+    background-color: #ffcabf; }
+
+.table-danger,
+.table-danger > th,
+.table-danger > td {
+  background-color: #fed2e1; }
+
+.table-danger th,
+.table-danger td,
+.table-danger thead th,
+.table-danger tbody + tbody {
+  border-color: #feabc7; }
+
+.table-hover .table-danger:hover {
+  background-color: #fdb9d0; }
+  .table-hover .table-danger:hover > td,
+  .table-hover .table-danger:hover > th {
+    background-color: #fdb9d0; }
+
+.table-light,
+.table-light > th,
+.table-light > td {
+  background-color: #e8eaed; }
+
+.table-light th,
+.table-light td,
+.table-light thead th,
+.table-light tbody + tbody {
+  border-color: #d4d9dd; }
+
+.table-hover .table-light:hover {
+  background-color: #dadde2; }
+  .table-hover .table-light:hover > td,
+  .table-hover .table-light:hover > th {
+    background-color: #dadde2; }
+
+.table-dark,
+.table-dark > th,
+.table-dark > td {
+  background-color: #c1c2c3; }
+
+.table-dark th,
+.table-dark td,
+.table-dark thead th,
+.table-dark tbody + tbody {
+  border-color: #8c8e90; }
+
+.table-hover .table-dark:hover {
+  background-color: #b4b5b6; }
+  .table-hover .table-dark:hover > td,
+  .table-hover .table-dark:hover > th {
+    background-color: #b4b5b6; }
+
+.table-default,
+.table-default > th,
+.table-default > td {
+  background-color: #c6cbd8; }
+
+.table-default th,
+.table-default td,
+.table-default thead th,
+.table-default tbody + tbody {
+  border-color: #959fb7; }
+
+.table-hover .table-default:hover {
+  background-color: #b7bdce; }
+  .table-hover .table-default:hover > td,
+  .table-hover .table-default:hover > th {
+    background-color: #b7bdce; }
+
+.table-white,
+.table-white > th,
+.table-white > td {
+  background-color: white; }
+
+.table-white th,
+.table-white td,
+.table-white thead th,
+.table-white tbody + tbody {
+  border-color: white; }
+
+.table-hover .table-white:hover {
+  background-color: #f2f2f2; }
+  .table-hover .table-white:hover > td,
+  .table-hover .table-white:hover > th {
+    background-color: #f2f2f2; }
+
+.table-neutral,
+.table-neutral > th,
+.table-neutral > td {
+  background-color: white; }
+
+.table-neutral th,
+.table-neutral td,
+.table-neutral thead th,
+.table-neutral tbody + tbody {
+  border-color: white; }
+
+.table-hover .table-neutral:hover {
+  background-color: #f2f2f2; }
+  .table-hover .table-neutral:hover > td,
+  .table-hover .table-neutral:hover > th {
+    background-color: #f2f2f2; }
+
+.table-darker,
+.table-darker > th,
+.table-darker > td {
+  background-color: #b8b8b8; }
+
+.table-darker th,
+.table-darker td,
+.table-darker thead th,
+.table-darker tbody + tbody {
+  border-color: #7a7a7a; }
+
+.table-hover .table-darker:hover {
+  background-color: #ababab; }
+  .table-hover .table-darker:hover > td,
+  .table-hover .table-darker:hover > th {
+    background-color: #ababab; }
+
+.table-active,
+.table-active > th,
+.table-active > td {
+  background-color: rgba(34, 42, 66, 0.075); }
+
+.table-hover .table-active:hover {
+  background-color: rgba(25, 31, 49, 0.075); }
+  .table-hover .table-active:hover > td,
+  .table-hover .table-active:hover > th {
+    background-color: rgba(25, 31, 49, 0.075); }
+
+.table .thead-dark th {
+  color: #1e1e2f;
+  background-color: #212529;
+  border-color: #32383e; }
+
+.table .thead-light th {
+  color: #525f7f;
+  background-color: #e9ecef;
+  border-color: #e3e3e3; }
+
+.table-dark {
+  color: #1e1e2f;
+  background-color: #212529; }
+  .table-dark th,
+  .table-dark td,
+  .table-dark thead th {
+    border-color: #32383e; }
+  .table-dark.table-bordered {
+    border: 0; }
+  .table-dark.table-striped tbody tr:nth-of-type(odd) {
+    background-color: rgba(255, 255, 255, 0.05); }
+  .table-dark.table-hover tbody tr:hover {
+    color: #1e1e2f;
+    background-color: rgba(255, 255, 255, 0.075); }
+
+@media (max-width: 575.98px) {
+  .table-responsive-sm {
+    display: block;
+    width: 100%;
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch; }
+    .table-responsive-sm > .table-bordered {
+      border: 0; } }
+
+@media (max-width: 767.98px) {
+  .table-responsive-md {
+    display: block;
+    width: 100%;
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch; }
+    .table-responsive-md > .table-bordered {
+      border: 0; } }
+
+@media (max-width: 991.98px) {
+  .table-responsive-lg {
+    display: block;
+    width: 100%;
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch; }
+    .table-responsive-lg > .table-bordered {
+      border: 0; } }
+
+@media (max-width: 1199.98px) {
+  .table-responsive-xl {
+    display: block;
+    width: 100%;
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch; }
+    .table-responsive-xl > .table-bordered {
+      border: 0; } }
+
+.table-responsive {
+  display: block;
+  width: 100%;
+  overflow-x: auto;
+  -webkit-overflow-scrolling: touch; }
+  .table-responsive > .table-bordered {
+    border: 0; }
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: calc(2.25rem + 2px);
+  padding: 0.5rem 0.7rem;
+  font-size: 0.875rem;
+  font-weight: 400;
+  line-height: 1.42857;
+  color: rgba(255, 255, 255, 0.8);
+  background-color: transparent;
+  background-clip: padding-box;
+  border: 1px solid #cad1d7;
+  border-radius: 0.25rem;
+  box-shadow: none;
+  transition: all 0.2s cubic-bezier(0.68, -0.55, 0.265, 1.55); }
+  @media (prefers-reduced-motion: reduce) {
+    .form-control {
+      transition: none; } }
+  .form-control::-ms-expand {
+    background-color: transparent;
+    border: 0; }
+  .form-control:focus {
+    color: rgba(255, 255, 255, 0.8);
+    background-color: #ffffff;
+    border-color: rgba(50, 151, 211, 0.25);
+    outline: 0;
+    box-shadow: none, none; }
+  .form-control::placeholder {
+    color: #adb5bd;
+    opacity: 1; }
+  .form-control:disabled, .form-control[readonly] {
+    background-color: #e9ecef;
+    opacity: 1; }
+
+select.form-control:focus::-ms-value {
+  color: rgba(255, 255, 255, 0.8);
+  background-color: transparent; }
+
+.form-control-file,
+.form-control-range {
+  display: block;
+  width: 100%; }
+
+.col-form-label {
+  padding-top: calc(0.5rem + 1px);
+  padding-bottom: calc(0.5rem + 1px);
+  margin-bottom: 0;
+  font-size: inherit;
+  line-height: 1.42857; }
+
+.col-form-label-lg {
+  padding-top: calc(0.875rem + 1px);
+  padding-bottom: calc(0.875rem + 1px);
+  font-size: 0.875rem;
+  line-height: 1.35; }
+
+.col-form-label-sm {
+  padding-top: calc(0.25rem + 1px);
+  padding-bottom: calc(0.25rem + 1px);
+  font-size: 0.75rem;
+  line-height: 1.35; }
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem;
+  margin-bottom: 0;
+  line-height: 1.42857;
+  color: #525f7f;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: 1px 0; }
+  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
+    padding-right: 0;
+    padding-left: 0; }
+
+.form-control-sm {
+  height: calc(1.35em + 0.5rem + 2px);
+  padding: 0.25rem 0.5rem;
+  font-size: 0.75rem;
+  line-height: 1.35;
+  border-radius: 0.2857rem; }
+
+.form-control-lg {
+  height: calc(1.35em + 1.75rem + 2px);
+  padding: 0.875rem 1rem;
+  font-size: 0.875rem;
+  line-height: 1.35;
+  border-radius: 0.4285rem; }
+
+select.form-control[size], select.form-control[multiple] {
+  height: auto; }
+
+textarea.form-control {
+  height: auto; }
+
+.form-group {
+  margin-bottom: 1rem; }
+
+.form-text {
+  display: block;
+  margin-top: 0.25rem; }
+
+.form-row {
+  display: flex;
+  flex-wrap: wrap;
+  margin-right: -5px;
+  margin-left: -5px; }
+  .form-row > .col,
+  .form-row > [class*="col-"] {
+    padding-right: 5px;
+    padding-left: 5px; }
+
+.form-check {
+  position: relative;
+  display: block;
+  padding-left: 1.25rem; }
+
+.form-check-input {
+  position: absolute;
+  margin-top: 0.3rem;
+  margin-left: -1.25rem; }
+  .form-check-input:disabled ~ .form-check-label {
+    color: #6c757d; }
+
+.form-check-label {
+  margin-bottom: 0; }
+
+.form-check-inline {
+  display: inline-flex;
+  align-items: center;
+  padding-left: 0;
+  margin-right: 0.75rem; }
+  .form-check-inline .form-check-input {
+    position: static;
+    margin-top: 0;
+    margin-right: 0.3125rem;
+    margin-left: 0; }
+
+.valid-feedback {
+  display: none;
+  width: 100%;
+  margin-top: 0.25rem;
+  font-size: 80%;
+  color: #00f2c3; }
+
+.valid-tooltip {
+  position: absolute;
+  top: 100%;
+  z-index: 5;
+  display: none;
+  max-width: 100%;
+  padding: 0.25rem 0.5rem;
+  margin-top: .1rem;
+  font-size: 0.75rem;
+  line-height: 1.5;
+  color: #ffffff;
+  background-color: rgba(0, 242, 195, 0.9);
+  border-radius: 0.25rem; }
+
+.was-validated .form-control:valid, .form-control.is-valid {
+  border-color: #00f2c3;
+  padding-right: 2.25rem;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300f2c3' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
+  background-repeat: no-repeat;
+  background-position: center right calc(0.35714em + 0.25rem);
+  background-size: calc(0.71429em + 0.5rem) calc(0.71429em + 0.5rem); }
+  .was-validated .form-control:valid:focus, .form-control.is-valid:focus {
+    border-color: #00f2c3;
+    box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.25); }
+  .was-validated .form-control:valid ~ .valid-feedback,
+  .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,
+  .form-control.is-valid ~ .valid-tooltip {
+    display: block; }
+
+.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
+  padding-right: 2.25rem;
+  background-position: top calc(0.35714em + 0.25rem) right calc(0.35714em + 0.25rem); }
+
+.was-validated .custom-select:valid, .custom-select.is-valid {
+  border-color: #00f2c3;
+  padding-right: calc((1em + 1rem) * 3 / 4 + 1.7rem);
+  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%2332325d' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.7rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300f2c3' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") transparent no-repeat center right 1.7rem/calc(0.71429em + 0.5rem) calc(0.71429em + 0.5rem); }
+  .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
+    border-color: #00f2c3;
+    box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.25); }
+  .was-validated .custom-select:valid ~ .valid-feedback,
+  .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback,
+  .custom-select.is-valid ~ .valid-tooltip {
+    display: block; }
+
+.was-validated .form-control-file:valid ~ .valid-feedback,
+.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,
+.form-control-file.is-valid ~ .valid-tooltip {
+  display: block; }
+
+.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
+  color: #00f2c3; }
+
+.was-validated .form-check-input:valid ~ .valid-feedback,
+.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
+.form-check-input.is-valid ~ .valid-tooltip {
+  display: block; }
+
+.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
+  color: #00f2c3; }
+  .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
+    border-color: #00f2c3; }
+
+.was-validated .custom-control-input:valid ~ .valid-feedback,
+.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,
+.custom-control-input.is-valid ~ .valid-tooltip {
+  display: block; }
+
+.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
+  border-color: #26ffd5;
+  background-color: #26ffd5; }
+
+.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.25); }
+
+.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {
+  border-color: #00f2c3; }
+
+.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
+  border-color: #00f2c3; }
+
+.was-validated .custom-file-input:valid ~ .valid-feedback,
+.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,
+.custom-file-input.is-valid ~ .valid-tooltip {
+  display: block; }
+
+.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
+  border-color: #00f2c3;
+  box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.25); }
+
+.invalid-feedback {
+  display: none;
+  width: 100%;
+  margin-top: 0.25rem;
+  font-size: 80%;
+  color: #ff8d72; }
+
+.invalid-tooltip {
+  position: absolute;
+  top: 100%;
+  z-index: 5;
+  display: none;
+  max-width: 100%;
+  padding: 0.25rem 0.5rem;
+  margin-top: .1rem;
+  font-size: 0.75rem;
+  line-height: 1.5;
+  color: #ffffff;
+  background-color: rgba(255, 141, 114, 0.9);
+  border-radius: 0.25rem; }
+
+.was-validated .form-control:invalid, .form-control.is-invalid {
+  border-color: #ff8d72;
+  padding-right: 2.25rem;
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23ff8d72' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23ff8d72' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
+  background-repeat: no-repeat;
+  background-position: center right calc(0.35714em + 0.25rem);
+  background-size: calc(0.71429em + 0.5rem) calc(0.71429em + 0.5rem); }
+  .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
+    border-color: #ff8d72;
+    box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.25); }
+  .was-validated .form-control:invalid ~ .invalid-feedback,
+  .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,
+  .form-control.is-invalid ~ .invalid-tooltip {
+    display: block; }
+
+.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
+  padding-right: 2.25rem;
+  background-position: top calc(0.35714em + 0.25rem) right calc(0.35714em + 0.25rem); }
+
+.was-validated .custom-select:invalid, .custom-select.is-invalid {
+  border-color: #ff8d72;
+  padding-right: calc((1em + 1rem) * 3 / 4 + 1.7rem);
+  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%2332325d' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.7rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23ff8d72' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23ff8d72' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") transparent no-repeat center right 1.7rem/calc(0.71429em + 0.5rem) calc(0.71429em + 0.5rem); }
+  .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
+    border-color: #ff8d72;
+    box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.25); }
+  .was-validated .custom-select:invalid ~ .invalid-feedback,
+  .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback,
+  .custom-select.is-invalid ~ .invalid-tooltip {
+    display: block; }
+
+.was-validated .form-control-file:invalid ~ .invalid-feedback,
+.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,
+.form-control-file.is-invalid ~ .invalid-tooltip {
+  display: block; }
+
+.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
+  color: #ff8d72; }
+
+.was-validated .form-check-input:invalid ~ .invalid-feedback,
+.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
+.form-check-input.is-invalid ~ .invalid-tooltip {
+  display: block; }
+
+.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
+  color: #ff8d72; }
+  .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
+    border-color: #ff8d72; }
+
+.was-validated .custom-control-input:invalid ~ .invalid-feedback,
+.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,
+.custom-control-input.is-invalid ~ .invalid-tooltip {
+  display: block; }
+
+.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
+  border-color: #ffb6a5;
+  background-color: #ffb6a5; }
+
+.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
+  box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.25); }
+
+.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {
+  border-color: #ff8d72; }
+
+.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
+  border-color: #ff8d72; }
+
+.was-validated .custom-file-input:invalid ~ .invalid-feedback,
+.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,
+.custom-file-input.is-invalid ~ .invalid-tooltip {
+  display: block; }
+
+.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
+  border-color: #ff8d72;
+  box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.25); }
+
+.form-inline {
+  display: flex;
+  flex-flow: row wrap;
+  align-items: center; }
+  .form-inline .form-check {
+    width: 100%; }
+  @media (min-width: 576px) {
+    .form-inline label {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-bottom: 0; }
+    .form-inline .form-group {
+      display: flex;
+      flex: 0 0 auto;
+      flex-flow: row wrap;
+      align-items: center;
+      margin-bottom: 0; }
+    .form-inline .form-control {
+      display: inline-block;
+      width: auto;
+      vertical-align: middle; }
+    .form-inline .form-control-plaintext {
+      display: inline-block; }
+    .form-inline .input-group,
+    .form-inline .custom-select {
+      width: auto; }
+    .form-inline .form-check {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: auto;
+      padding-left: 0; }
+    .form-inline .form-check-input {
+      position: relative;
+      flex-shrink: 0;
+      margin-top: 0;
+      margin-right: 0.25rem;
+      margin-left: 0; }
+    .form-inline .custom-control {
+      align-items: center;
+      justify-content: center; }
+    .form-inline .custom-control-label {
+      margin-bottom: 0; } }
+
+.btn {
+  display: inline-block;
+  font-weight: 600;
+  color: #525f7f;
+  text-align: center;
+  vertical-align: middle;
+  -webkit-user-select: none;
+          user-select: none;
+  background-color: transparent;
+  border: 1px solid transparent;
+  padding: 11px 40px;
+  font-size: 0.875rem;
+  line-height: 1.35em;
+  border-radius: 0.25rem;
+  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: #525f7f;
+    text-decoration: none; }
+  .btn:focus, .btn.focus {
+    outline: 0;
+    box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1), 0 3px 6px rgba(0, 0, 0, 0.08); }
+  .btn.disabled, .btn:disabled {
+    opacity: 0.65;
+    box-shadow: none; }
+  .btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {
+    box-shadow: none; }
+    .btn:not(:disabled):not(.disabled):active:focus, .btn:not(:disabled):not(.disabled).active:focus {
+      box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1), 0 3px 6px rgba(0, 0, 0, 0.08); }
+
+a.btn.disabled,
+fieldset:disabled a.btn {
+  pointer-events: none; }
+
+.btn-primary {
+  color: #ffffff;
+  background-color: #e14eca;
+  border-color: #e14eca;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-primary:hover {
+    color: #ffffff;
+    background-color: #db2dc0;
+    border-color: #d725bb; }
+  .btn-primary:focus, .btn-primary.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(230, 105, 210, 0.5); }
+  .btn-primary.disabled, .btn-primary:disabled {
+    color: #ffffff;
+    background-color: #e14eca;
+    border-color: #e14eca; }
+  .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
+  .show > .btn-primary.dropdown-toggle {
+    color: #ffffff;
+    background-color: #d725bb;
+    border-color: #cd23b2; }
+    .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-primary.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(230, 105, 210, 0.5); }
+
+.btn-secondary {
+  color: #212529;
+  background-color: #f4f5f7;
+  border-color: #f4f5f7;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-secondary:hover {
+    color: #212529;
+    background-color: #dee1e7;
+    border-color: #d6dae2; }
+  .btn-secondary:focus, .btn-secondary.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(212, 214, 216, 0.5); }
+  .btn-secondary.disabled, .btn-secondary:disabled {
+    color: #212529;
+    background-color: #f4f5f7;
+    border-color: #f4f5f7; }
+  .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
+  .show > .btn-secondary.dropdown-toggle {
+    color: #212529;
+    background-color: #d6dae2;
+    border-color: #cfd3dc; }
+    .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-secondary.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(212, 214, 216, 0.5); }
+
+.btn-success {
+  color: #ffffff;
+  background-color: #00f2c3;
+  border-color: #00f2c3;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-success:hover {
+    color: #ffffff;
+    background-color: #00cca4;
+    border-color: #00bf9a; }
+  .btn-success:focus, .btn-success.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(38, 244, 204, 0.5); }
+  .btn-success.disabled, .btn-success:disabled {
+    color: #ffffff;
+    background-color: #00f2c3;
+    border-color: #00f2c3; }
+  .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
+  .show > .btn-success.dropdown-toggle {
+    color: #ffffff;
+    background-color: #00bf9a;
+    border-color: #00b290; }
+    .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-success.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(38, 244, 204, 0.5); }
+
+.btn-info {
+  color: #ffffff;
+  background-color: #1d8cf8;
+  border-color: #1d8cf8;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-info:hover {
+    color: #ffffff;
+    background-color: #0779e8;
+    border-color: #0772db; }
+  .btn-info:focus, .btn-info.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(63, 157, 249, 0.5); }
+  .btn-info.disabled, .btn-info:disabled {
+    color: #ffffff;
+    background-color: #1d8cf8;
+    border-color: #1d8cf8; }
+  .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
+  .show > .btn-info.dropdown-toggle {
+    color: #ffffff;
+    background-color: #0772db;
+    border-color: #066ccf; }
+    .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-info.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(63, 157, 249, 0.5); }
+
+.btn-warning {
+  color: #ffffff;
+  background-color: #ff8d72;
+  border-color: #ff8d72;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-warning:hover {
+    color: #ffffff;
+    background-color: #ff6e4c;
+    border-color: #ff643f; }
+  .btn-warning:focus, .btn-warning.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(255, 158, 135, 0.5); }
+  .btn-warning.disabled, .btn-warning:disabled {
+    color: #ffffff;
+    background-color: #ff8d72;
+    border-color: #ff8d72; }
+  .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
+  .show > .btn-warning.dropdown-toggle {
+    color: #ffffff;
+    background-color: #ff643f;
+    border-color: #ff5932; }
+    .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-warning.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(255, 158, 135, 0.5); }
+
+.btn-danger {
+  color: #ffffff;
+  background-color: #fd5d93;
+  border-color: #fd5d93;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-danger:hover {
+    color: #ffffff;
+    background-color: #fd377a;
+    border-color: #fc2b71; }
+  .btn-danger:focus, .btn-danger.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(253, 117, 163, 0.5); }
+  .btn-danger.disabled, .btn-danger:disabled {
+    color: #ffffff;
+    background-color: #fd5d93;
+    border-color: #fd5d93; }
+  .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
+  .show > .btn-danger.dropdown-toggle {
+    color: #ffffff;
+    background-color: #fc2b71;
+    border-color: #fc1e69; }
+    .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-danger.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(253, 117, 163, 0.5); }
+
+.btn-light {
+  color: #ffffff;
+  background-color: #adb5bd;
+  border-color: #adb5bd;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-light:hover {
+    color: #ffffff;
+    background-color: #98a2ac;
+    border-color: #919ca6; }
+  .btn-light:focus, .btn-light.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(185, 192, 199, 0.5); }
+  .btn-light.disabled, .btn-light:disabled {
+    color: #ffffff;
+    background-color: #adb5bd;
+    border-color: #adb5bd; }
+  .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
+  .show > .btn-light.dropdown-toggle {
+    color: #ffffff;
+    background-color: #919ca6;
+    border-color: #8a95a1; }
+    .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-light.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(185, 192, 199, 0.5); }
+
+.btn-dark {
+  color: #ffffff;
+  background-color: #212529;
+  border-color: #212529;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-dark:hover {
+    color: #ffffff;
+    background-color: #101214;
+    border-color: #0a0c0d; }
+  .btn-dark:focus, .btn-dark.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(66, 70, 73, 0.5); }
+  .btn-dark.disabled, .btn-dark:disabled {
+    color: #ffffff;
+    background-color: #212529;
+    border-color: #212529; }
+  .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
+  .show > .btn-dark.dropdown-toggle {
+    color: #ffffff;
+    background-color: #0a0c0d;
+    border-color: #050506; }
+    .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-dark.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(66, 70, 73, 0.5); }
+
+.btn-default {
+  color: #ffffff;
+  background-color: #344675;
+  border-color: #344675;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-default:hover {
+    color: #ffffff;
+    background-color: #28365b;
+    border-color: #243152; }
+  .btn-default:focus, .btn-default.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(82, 98, 138, 0.5); }
+  .btn-default.disabled, .btn-default:disabled {
+    color: #ffffff;
+    background-color: #344675;
+    border-color: #344675; }
+  .btn-default:not(:disabled):not(.disabled):active, .btn-default:not(:disabled):not(.disabled).active,
+  .show > .btn-default.dropdown-toggle {
+    color: #ffffff;
+    background-color: #243152;
+    border-color: #202c49; }
+    .btn-default:not(:disabled):not(.disabled):active:focus, .btn-default:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-default.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(82, 98, 138, 0.5); }
+
+.btn-white {
+  color: #212529;
+  background-color: #ffffff;
+  border-color: #ffffff;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-white:hover {
+    color: #212529;
+    background-color: #ececec;
+    border-color: #e6e6e6; }
+  .btn-white:focus, .btn-white.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(222, 222, 223, 0.5); }
+  .btn-white.disabled, .btn-white:disabled {
+    color: #212529;
+    background-color: #ffffff;
+    border-color: #ffffff; }
+  .btn-white:not(:disabled):not(.disabled):active, .btn-white:not(:disabled):not(.disabled).active,
+  .show > .btn-white.dropdown-toggle {
+    color: #212529;
+    background-color: #e6e6e6;
+    border-color: #dfdfdf; }
+    .btn-white:not(:disabled):not(.disabled):active:focus, .btn-white:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-white.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(222, 222, 223, 0.5); }
+
+.btn-neutral {
+  color: #212529;
+  background-color: #ffffff;
+  border-color: #ffffff;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-neutral:hover {
+    color: #212529;
+    background-color: #ececec;
+    border-color: #e6e6e6; }
+  .btn-neutral:focus, .btn-neutral.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(222, 222, 223, 0.5); }
+  .btn-neutral.disabled, .btn-neutral:disabled {
+    color: #212529;
+    background-color: #ffffff;
+    border-color: #ffffff; }
+  .btn-neutral:not(:disabled):not(.disabled):active, .btn-neutral:not(:disabled):not(.disabled).active,
+  .show > .btn-neutral.dropdown-toggle {
+    color: #212529;
+    background-color: #e6e6e6;
+    border-color: #dfdfdf; }
+    .btn-neutral:not(:disabled):not(.disabled):active:focus, .btn-neutral:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-neutral.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(222, 222, 223, 0.5); }
+
+.btn-darker {
+  color: #ffffff;
+  background-color: black;
+  border-color: black;
+  box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .btn-darker:hover {
+    color: #ffffff;
+    background-color: black;
+    border-color: black; }
+  .btn-darker:focus, .btn-darker.focus {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08), 0 0 0 0 rgba(38, 38, 38, 0.5); }
+  .btn-darker.disabled, .btn-darker:disabled {
+    color: #ffffff;
+    background-color: black;
+    border-color: black; }
+  .btn-darker:not(:disabled):not(.disabled):active, .btn-darker:not(:disabled):not(.disabled).active,
+  .show > .btn-darker.dropdown-toggle {
+    color: #ffffff;
+    background-color: black;
+    border-color: black; }
+    .btn-darker:not(:disabled):not(.disabled):active:focus, .btn-darker:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-darker.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(38, 38, 38, 0.5); }
+
+.btn-outline-primary {
+  color: #e14eca;
+  border-color: #e14eca; }
+  .btn-outline-primary:hover {
+    color: #ffffff;
+    background-color: #e14eca;
+    border-color: #e14eca; }
+  .btn-outline-primary:focus, .btn-outline-primary.focus {
+    box-shadow: 0 0 0 0 rgba(225, 78, 202, 0.5); }
+  .btn-outline-primary.disabled, .btn-outline-primary:disabled {
+    color: #e14eca;
+    background-color: transparent; }
+  .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-primary.dropdown-toggle {
+    color: #ffffff;
+    background-color: #e14eca;
+    border-color: #e14eca; }
+    .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-primary.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(225, 78, 202, 0.5); }
+
+.btn-outline-secondary {
+  color: #f4f5f7;
+  border-color: #f4f5f7; }
+  .btn-outline-secondary:hover {
+    color: #212529;
+    background-color: #f4f5f7;
+    border-color: #f4f5f7; }
+  .btn-outline-secondary:focus, .btn-outline-secondary.focus {
+    box-shadow: 0 0 0 0 rgba(244, 245, 247, 0.5); }
+  .btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
+    color: #f4f5f7;
+    background-color: transparent; }
+  .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-secondary.dropdown-toggle {
+    color: #212529;
+    background-color: #f4f5f7;
+    border-color: #f4f5f7; }
+    .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-secondary.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(244, 245, 247, 0.5); }
+
+.btn-outline-success {
+  color: #00f2c3;
+  border-color: #00f2c3; }
+  .btn-outline-success:hover {
+    color: #ffffff;
+    background-color: #00f2c3;
+    border-color: #00f2c3; }
+  .btn-outline-success:focus, .btn-outline-success.focus {
+    box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.5); }
+  .btn-outline-success.disabled, .btn-outline-success:disabled {
+    color: #00f2c3;
+    background-color: transparent; }
+  .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-success.dropdown-toggle {
+    color: #ffffff;
+    background-color: #00f2c3;
+    border-color: #00f2c3; }
+    .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-success.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.5); }
+
+.btn-outline-info {
+  color: #1d8cf8;
+  border-color: #1d8cf8; }
+  .btn-outline-info:hover {
+    color: #ffffff;
+    background-color: #1d8cf8;
+    border-color: #1d8cf8; }
+  .btn-outline-info:focus, .btn-outline-info.focus {
+    box-shadow: 0 0 0 0 rgba(29, 140, 248, 0.5); }
+  .btn-outline-info.disabled, .btn-outline-info:disabled {
+    color: #1d8cf8;
+    background-color: transparent; }
+  .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-info.dropdown-toggle {
+    color: #ffffff;
+    background-color: #1d8cf8;
+    border-color: #1d8cf8; }
+    .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-info.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(29, 140, 248, 0.5); }
+
+.btn-outline-warning {
+  color: #ff8d72;
+  border-color: #ff8d72; }
+  .btn-outline-warning:hover {
+    color: #ffffff;
+    background-color: #ff8d72;
+    border-color: #ff8d72; }
+  .btn-outline-warning:focus, .btn-outline-warning.focus {
+    box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.5); }
+  .btn-outline-warning.disabled, .btn-outline-warning:disabled {
+    color: #ff8d72;
+    background-color: transparent; }
+  .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-warning.dropdown-toggle {
+    color: #ffffff;
+    background-color: #ff8d72;
+    border-color: #ff8d72; }
+    .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-warning.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.5); }
+
+.btn-outline-danger {
+  color: #fd5d93;
+  border-color: #fd5d93; }
+  .btn-outline-danger:hover {
+    color: #ffffff;
+    background-color: #fd5d93;
+    border-color: #fd5d93; }
+  .btn-outline-danger:focus, .btn-outline-danger.focus {
+    box-shadow: 0 0 0 0 rgba(253, 93, 147, 0.5); }
+  .btn-outline-danger.disabled, .btn-outline-danger:disabled {
+    color: #fd5d93;
+    background-color: transparent; }
+  .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-danger.dropdown-toggle {
+    color: #ffffff;
+    background-color: #fd5d93;
+    border-color: #fd5d93; }
+    .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-danger.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(253, 93, 147, 0.5); }
+
+.btn-outline-light {
+  color: #adb5bd;
+  border-color: #adb5bd; }
+  .btn-outline-light:hover {
+    color: #ffffff;
+    background-color: #adb5bd;
+    border-color: #adb5bd; }
+  .btn-outline-light:focus, .btn-outline-light.focus {
+    box-shadow: 0 0 0 0 rgba(173, 181, 189, 0.5); }
+  .btn-outline-light.disabled, .btn-outline-light:disabled {
+    color: #adb5bd;
+    background-color: transparent; }
+  .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-light.dropdown-toggle {
+    color: #ffffff;
+    background-color: #adb5bd;
+    border-color: #adb5bd; }
+    .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-light.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(173, 181, 189, 0.5); }
+
+.btn-outline-dark {
+  color: #212529;
+  border-color: #212529; }
+  .btn-outline-dark:hover {
+    color: #ffffff;
+    background-color: #212529;
+    border-color: #212529; }
+  .btn-outline-dark:focus, .btn-outline-dark.focus {
+    box-shadow: 0 0 0 0 rgba(33, 37, 41, 0.5); }
+  .btn-outline-dark.disabled, .btn-outline-dark:disabled {
+    color: #212529;
+    background-color: transparent; }
+  .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-dark.dropdown-toggle {
+    color: #ffffff;
+    background-color: #212529;
+    border-color: #212529; }
+    .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-dark.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(33, 37, 41, 0.5); }
+
+.btn-outline-default {
+  color: #344675;
+  border-color: #344675; }
+  .btn-outline-default:hover {
+    color: #ffffff;
+    background-color: #344675;
+    border-color: #344675; }
+  .btn-outline-default:focus, .btn-outline-default.focus {
+    box-shadow: 0 0 0 0 rgba(52, 70, 117, 0.5); }
+  .btn-outline-default.disabled, .btn-outline-default:disabled {
+    color: #344675;
+    background-color: transparent; }
+  .btn-outline-default:not(:disabled):not(.disabled):active, .btn-outline-default:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-default.dropdown-toggle {
+    color: #ffffff;
+    background-color: #344675;
+    border-color: #344675; }
+    .btn-outline-default:not(:disabled):not(.disabled):active:focus, .btn-outline-default:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-default.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(52, 70, 117, 0.5); }
+
+.btn-outline-white {
+  color: #ffffff;
+  border-color: #ffffff; }
+  .btn-outline-white:hover {
+    color: #212529;
+    background-color: #ffffff;
+    border-color: #ffffff; }
+  .btn-outline-white:focus, .btn-outline-white.focus {
+    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5); }
+  .btn-outline-white.disabled, .btn-outline-white:disabled {
+    color: #ffffff;
+    background-color: transparent; }
+  .btn-outline-white:not(:disabled):not(.disabled):active, .btn-outline-white:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-white.dropdown-toggle {
+    color: #212529;
+    background-color: #ffffff;
+    border-color: #ffffff; }
+    .btn-outline-white:not(:disabled):not(.disabled):active:focus, .btn-outline-white:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-white.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5); }
+
+.btn-outline-neutral {
+  color: #ffffff;
+  border-color: #ffffff; }
+  .btn-outline-neutral:hover {
+    color: #212529;
+    background-color: #ffffff;
+    border-color: #ffffff; }
+  .btn-outline-neutral:focus, .btn-outline-neutral.focus {
+    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5); }
+  .btn-outline-neutral.disabled, .btn-outline-neutral:disabled {
+    color: #ffffff;
+    background-color: transparent; }
+  .btn-outline-neutral:not(:disabled):not(.disabled):active, .btn-outline-neutral:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-neutral.dropdown-toggle {
+    color: #212529;
+    background-color: #ffffff;
+    border-color: #ffffff; }
+    .btn-outline-neutral:not(:disabled):not(.disabled):active:focus, .btn-outline-neutral:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-neutral.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5); }
+
+.btn-outline-darker {
+  color: black;
+  border-color: black; }
+  .btn-outline-darker:hover {
+    color: #ffffff;
+    background-color: black;
+    border-color: black; }
+  .btn-outline-darker:focus, .btn-outline-darker.focus {
+    box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.5); }
+  .btn-outline-darker.disabled, .btn-outline-darker:disabled {
+    color: black;
+    background-color: transparent; }
+  .btn-outline-darker:not(:disabled):not(.disabled):active, .btn-outline-darker:not(:disabled):not(.disabled).active,
+  .show > .btn-outline-darker.dropdown-toggle {
+    color: #ffffff;
+    background-color: black;
+    border-color: black; }
+    .btn-outline-darker:not(:disabled):not(.disabled):active:focus, .btn-outline-darker:not(:disabled):not(.disabled).active:focus,
+    .show > .btn-outline-darker.dropdown-toggle:focus {
+      box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.5); }
+
+.btn-link {
+  font-weight: 400;
+  color: #e14eca;
+  text-decoration: none; }
+  .btn-link:hover {
+    color: #c221a9;
+    text-decoration: none; }
+  .btn-link:focus, .btn-link.focus {
+    text-decoration: none;
+    box-shadow: none; }
+  .btn-link:disabled, .btn-link.disabled {
+    color: #6c757d;
+    pointer-events: none; }
+
+.btn-lg, .btn-group-lg > .btn {
+  padding: 15px 48px;
+  font-size: 1em;
+  line-height: 1.35;
+  border-radius: 0.4285rem; }
+
+.btn-sm, .btn-group-sm > .btn {
+  padding: 5px 15px;
+  font-size: 0.75rem;
+  line-height: 1.35;
+  border-radius: 0.25rem; }
+
+.btn-block {
+  display: block;
+  width: 100%; }
+  .btn-block + .btn-block {
+    margin-top: 0.5rem; }
+
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%; }
+
+.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 {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  transition: height 0.35s ease; }
+  @media (prefers-reduced-motion: reduce) {
+    .collapsing {
+      transition: none; } }
+
+.dropup,
+.dropright,
+.dropdown,
+.dropleft {
+  position: relative; }
+
+.dropdown-toggle {
+  white-space: nowrap; }
+  .dropdown-toggle::after {
+    display: inline-block;
+    margin-left: 0.255em;
+    vertical-align: 0.255em;
+    content: "";
+    border-top: 0.3em solid;
+    border-right: 0.3em solid transparent;
+    border-bottom: 0;
+    border-left: 0.3em solid transparent; }
+  .dropdown-toggle:empty::after {
+    margin-left: 0; }
+
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 10rem;
+  padding: 0.5rem 0;
+  margin: 0.125rem 0 0;
+  font-size: 0.875rem;
+  color: #525f7f;
+  text-align: left;
+  list-style: none;
+  background-color: #ffffff;
+  background-clip: padding-box;
+  border: 0 solid rgba(34, 42, 66, 0.15);
+  border-radius: 0.1428rem;
+  box-shadow: 0 50px 100px rgba(50, 50, 93, 0.1), 0 15px 35px rgba(50, 50, 93, 0.15), 0 5px 15px rgba(0, 0, 0, 0.1); }
+
+.dropdown-menu-left {
+  right: auto;
+  left: 0; }
+
+.dropdown-menu-right {
+  right: 0;
+  left: auto; }
+
+@media (min-width: 576px) {
+  .dropdown-menu-sm-left {
+    right: auto;
+    left: 0; }
+  .dropdown-menu-sm-right {
+    right: 0;
+    left: auto; } }
+
+@media (min-width: 768px) {
+  .dropdown-menu-md-left {
+    right: auto;
+    left: 0; }
+  .dropdown-menu-md-right {
+    right: 0;
+    left: auto; } }
+
+@media (min-width: 992px) {
+  .dropdown-menu-lg-left {
+    right: auto;
+    left: 0; }
+  .dropdown-menu-lg-right {
+    right: 0;
+    left: auto; } }
+
+@media (min-width: 1200px) {
+  .dropdown-menu-xl-left {
+    right: auto;
+    left: 0; }
+  .dropdown-menu-xl-right {
+    right: 0;
+    left: auto; } }
+
+.dropup .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-top: 0;
+  margin-bottom: 0.125rem; }
+
+.dropup .dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0;
+  border-right: 0.3em solid transparent;
+  border-bottom: 0.3em solid;
+  border-left: 0.3em solid transparent; }
+
+.dropup .dropdown-toggle:empty::after {
+  margin-left: 0; }
+
+.dropright .dropdown-menu {
+  top: 0;
+  right: auto;
+  left: 100%;
+  margin-top: 0;
+  margin-left: 0.125rem; }
+
+.dropright .dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid transparent;
+  border-right: 0;
+  border-bottom: 0.3em solid transparent;
+  border-left: 0.3em solid; }
+
+.dropright .dropdown-toggle:empty::after {
+  margin-left: 0; }
+
+.dropright .dropdown-toggle::after {
+  vertical-align: 0; }
+
+.dropleft .dropdown-menu {
+  top: 0;
+  right: 100%;
+  left: auto;
+  margin-top: 0;
+  margin-right: 0.125rem; }
+
+.dropleft .dropdown-toggle::after {
+  display: inline-block;
+  margin-left: 0.255em;
+  vertical-align: 0.255em;
+  content: ""; }
+
+.dropleft .dropdown-toggle::after {
+  display: none; }
+
+.dropleft .dropdown-toggle::before {
+  display: inline-block;
+  margin-right: 0.255em;
+  vertical-align: 0.255em;
+  content: "";
+  border-top: 0.3em solid transparent;
+  border-right: 0.3em solid;
+  border-bottom: 0.3em solid transparent; }
+
+.dropleft .dropdown-toggle:empty::after {
+  margin-left: 0; }
+
+.dropleft .dropdown-toggle::before {
+  vertical-align: 0; }
+
+.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] {
+  right: auto;
+  bottom: auto; }
+
+.dropdown-divider {
+  height: 0;
+  margin: 0.5rem 0;
+  overflow: hidden;
+  border-top: 1px solid #e9ecef; }
+
+.dropdown-item {
+  display: block;
+  width: 100%;
+  padding: 0.25rem 1.5rem;
+  clear: both;
+  font-weight: 400;
+  color: #212529;
+  text-align: inherit;
+  white-space: nowrap;
+  background-color: transparent;
+  border: 0; }
+  .dropdown-item:hover, .dropdown-item:focus {
+    color: #16181b;
+    text-decoration: none;
+    background-color: #f6f9fc; }
+  .dropdown-item.active, .dropdown-item:active {
+    color: #ffffff;
+    text-decoration: none;
+    background-color: #e14eca; }
+  .dropdown-item.disabled, .dropdown-item:disabled {
+    color: #6c757d;
+    pointer-events: none;
+    background-color: transparent; }
+
+.dropdown-menu.show {
+  display: block; }
+
+.dropdown-header {
+  display: block;
+  padding: 0.5rem 1.5rem;
+  margin-bottom: 0;
+  font-size: 0.75rem;
+  color: #6c757d;
+  white-space: nowrap; }
+
+.dropdown-item-text {
+  display: block;
+  padding: 0.25rem 1.5rem;
+  color: #212529; }
+
+.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:hover,
+    .btn-group-vertical > .btn:hover {
+      z-index: 1; }
+    .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
+    .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 > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) {
+  margin-left: -1px; }
+
+.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
+.btn-group > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.btn-group > .btn:not(:first-child),
+.btn-group > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0; }
+
+.dropdown-toggle-split {
+  padding-right: 30px;
+  padding-left: 30px; }
+  .dropdown-toggle-split::after,
+  .dropup .dropdown-toggle-split::after,
+  .dropright .dropdown-toggle-split::after {
+    margin-left: 0; }
+  .dropleft .dropdown-toggle-split::before {
+    margin-right: 0; }
+
+.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
+  padding-right: 11.25px;
+  padding-left: 11.25px; }
+
+.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
+  padding-right: 36px;
+  padding-left: 36px; }
+
+.btn-group.show .dropdown-toggle {
+  box-shadow: none; }
+  .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: -1px; }
+  .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
+  .btn-group-vertical > .btn-group:not(:last-child) > .btn {
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0; }
+  .btn-group-vertical > .btn:not(:first-child),
+  .btn-group-vertical > .btn-group:not(:first-child) > .btn {
+    border-top-left-radius: 0;
+    border-top-right-radius: 0; }
+
+.btn-group-toggle > .btn,
+.btn-group-toggle > .btn-group > .btn {
+  margin-bottom: 0; }
+  .btn-group-toggle > .btn input[type="radio"],
+  .btn-group-toggle > .btn input[type="checkbox"],
+  .btn-group-toggle > .btn-group > .btn input[type="radio"],
+  .btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
+    position: absolute;
+    clip: rect(0, 0, 0, 0);
+    pointer-events: none; }
+
+.input-group {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: stretch;
+  width: 100%; }
+  .input-group > .form-control,
+  .input-group > .form-control-plaintext,
+  .input-group > .custom-select,
+  .input-group > .custom-file {
+    position: relative;
+    flex: 1 1 auto;
+    width: 1%;
+    margin-bottom: 0; }
+    .input-group > .form-control + .form-control,
+    .input-group > .form-control + .custom-select,
+    .input-group > .form-control + .custom-file,
+    .input-group > .form-control-plaintext + .form-control,
+    .input-group > .form-control-plaintext + .custom-select,
+    .input-group > .form-control-plaintext + .custom-file,
+    .input-group > .custom-select + .form-control,
+    .input-group > .custom-select + .custom-select,
+    .input-group > .custom-select + .custom-file,
+    .input-group > .custom-file + .form-control,
+    .input-group > .custom-file + .custom-select,
+    .input-group > .custom-file + .custom-file {
+      margin-left: -1px; }
+  .input-group > .form-control:focus,
+  .input-group > .custom-select:focus,
+  .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {
+    z-index: 3; }
+  .input-group > .custom-file .custom-file-input:focus {
+    z-index: 4; }
+  .input-group > .form-control:not(:last-child),
+  .input-group > .custom-select:not(:last-child) {
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0; }
+  .input-group > .form-control:not(:first-child),
+  .input-group > .custom-select:not(:first-child) {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0; }
+  .input-group > .custom-file {
+    display: flex;
+    align-items: center; }
+    .input-group > .custom-file:not(:last-child) .custom-file-label,
+    .input-group > .custom-file:not(:last-child) .custom-file-label::after {
+      border-top-right-radius: 0;
+      border-bottom-right-radius: 0; }
+    .input-group > .custom-file:not(:first-child) .custom-file-label {
+      border-top-left-radius: 0;
+      border-bottom-left-radius: 0; }
+
+.input-group-prepend,
+.input-group-append {
+  display: flex; }
+  .input-group-prepend .btn,
+  .input-group-append .btn {
+    position: relative;
+    z-index: 2; }
+    .input-group-prepend .btn:focus,
+    .input-group-append .btn:focus {
+      z-index: 3; }
+  .input-group-prepend .btn + .btn,
+  .input-group-prepend .btn + .input-group-text,
+  .input-group-prepend .input-group-text + .input-group-text,
+  .input-group-prepend .input-group-text + .btn,
+  .input-group-append .btn + .btn,
+  .input-group-append .btn + .input-group-text,
+  .input-group-append .input-group-text + .input-group-text,
+  .input-group-append .input-group-text + .btn {
+    margin-left: -1px; }
+
+.input-group-prepend {
+  margin-right: -1px; }
+
+.input-group-append {
+  margin-left: -1px; }
+
+.input-group-text {
+  display: flex;
+  align-items: center;
+  padding: 0.5rem 0.7rem;
+  margin-bottom: 0;
+  font-size: 0.875rem;
+  font-weight: 400;
+  line-height: 1.42857;
+  color: #adb5bd;
+  text-align: center;
+  white-space: nowrap;
+  background-color: transparent;
+  border: 1px solid #cad1d7;
+  border-radius: 0.25rem; }
+  .input-group-text input[type="radio"],
+  .input-group-text input[type="checkbox"] {
+    margin-top: 0; }
+
+.input-group-lg > .form-control:not(textarea),
+.input-group-lg > .custom-select {
+  height: calc(1.35em + 1.75rem + 2px); }
+
+.input-group-lg > .form-control,
+.input-group-lg > .custom-select,
+.input-group-lg > .input-group-prepend > .input-group-text,
+.input-group-lg > .input-group-append > .input-group-text,
+.input-group-lg > .input-group-prepend > .btn,
+.input-group-lg > .input-group-append > .btn {
+  padding: 0.875rem 1rem;
+  font-size: 0.875rem;
+  line-height: 1.35;
+  border-radius: 0.4285rem; }
+
+.input-group-sm > .form-control:not(textarea),
+.input-group-sm > .custom-select {
+  height: calc(1.35em + 0.5rem + 2px); }
+
+.input-group-sm > .form-control,
+.input-group-sm > .custom-select,
+.input-group-sm > .input-group-prepend > .input-group-text,
+.input-group-sm > .input-group-append > .input-group-text,
+.input-group-sm > .input-group-prepend > .btn,
+.input-group-sm > .input-group-append > .btn {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.75rem;
+  line-height: 1.35;
+  border-radius: 0.2857rem; }
+
+.input-group-lg > .custom-select,
+.input-group-sm > .custom-select {
+  padding-right: 1.7rem; }
+
+.input-group > .input-group-prepend > .btn,
+.input-group > .input-group-prepend > .input-group-text,
+.input-group > .input-group-append:not(:last-child) > .btn,
+.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0; }
+
+.input-group > .input-group-append > .btn,
+.input-group > .input-group-append > .input-group-text,
+.input-group > .input-group-prepend:not(:first-child) > .btn,
+.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
+.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
+.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0; }
+
+.custom-control {
+  position: relative;
+  display: block;
+  min-height: 1.3125rem;
+  padding-left: 3rem; }
+
+.custom-control-inline {
+  display: inline-flex;
+  margin-right: 1rem; }
+
+.custom-control-input {
+  position: absolute;
+  z-index: -1;
+  opacity: 0; }
+  .custom-control-input:checked ~ .custom-control-label::before {
+    color: #ffffff;
+    border-color: #e14eca;
+    background-color: #e14eca;
+    box-shadow: none; }
+  .custom-control-input:focus ~ .custom-control-label::before {
+    box-shadow: none, none; }
+  .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
+    border-color: rgba(50, 151, 211, 0.25); }
+  .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
+    color: #ffffff;
+    background-color: #e14eca;
+    border-color: #e14eca;
+    box-shadow: none; }
+  .custom-control-input:disabled ~ .custom-control-label {
+    color: #6c757d; }
+    .custom-control-input:disabled ~ .custom-control-label::before {
+      background-color: #e9ecef; }
+
+.custom-control-label {
+  position: relative;
+  margin-bottom: 0;
+  vertical-align: top; }
+  .custom-control-label::before {
+    position: absolute;
+    top: 0.03125rem;
+    left: -3rem;
+    display: block;
+    width: 1.25rem;
+    height: 1.25rem;
+    pointer-events: none;
+    content: "";
+    background-color: transparent;
+    border: #cad1d7 solid 1px;
+    box-shadow: none; }
+  .custom-control-label::after {
+    position: absolute;
+    top: 0.03125rem;
+    left: -3rem;
+    display: block;
+    width: 1.25rem;
+    height: 1.25rem;
+    content: "";
+    background: no-repeat 50% / 50% 50%; }
+
+.custom-checkbox .custom-control-label::before {
+  border-radius: 0.2857rem; }
+
+.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23ffffff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); }
+
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
+  border-color: #e14eca;
+  background-color: #e14eca;
+  box-shadow: none; }
+
+.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23ffffff' d='M0 2h4'/%3e%3c/svg%3e"); }
+
+.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
+  background-color: rgba(225, 78, 202, 0.5); }
+
+.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
+  background-color: rgba(225, 78, 202, 0.5); }
+
+.custom-radio .custom-control-label::before {
+  border-radius: 50%; }
+
+.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
+  background-image: 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"); }
+
+.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
+  background-color: rgba(225, 78, 202, 0.5); }
+
+.custom-switch {
+  padding-left: 3.9375rem; }
+  .custom-switch .custom-control-label::before {
+    left: -3.9375rem;
+    width: 2.1875rem;
+    pointer-events: all;
+    border-radius: 0.625rem; }
+  .custom-switch .custom-control-label::after {
+    top: calc(0.03125rem + 2px);
+    left: calc(-3.9375rem + 2px);
+    width: calc(1.25rem - 4px);
+    height: calc(1.25rem - 4px);
+    background-color: #cad1d7;
+    border-radius: 0.625rem;
+    transition: transform 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) {
+      .custom-switch .custom-control-label::after {
+        transition: none; } }
+  .custom-switch .custom-control-input:checked ~ .custom-control-label::after {
+    background-color: transparent;
+    transform: translateX(0.9375rem); }
+  .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {
+    background-color: rgba(225, 78, 202, 0.5); }
+
+.custom-select {
+  display: inline-block;
+  width: 100%;
+  height: calc(2.25rem + 2px);
+  padding: 0.5rem 1.7rem 0.5rem 0.7rem;
+  font-size: 0.875rem;
+  font-weight: 400;
+  line-height: 1.42857;
+  color: rgba(255, 255, 255, 0.8);
+  vertical-align: middle;
+  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%2332325d' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.7rem center/8px 10px;
+  background-color: transparent;
+  border: 1px solid #cad1d7;
+  border-radius: 0.25rem;
+  box-shadow: inset 0 1px 2px rgba(34, 42, 66, 0.075);
+  -webkit-appearance: none;
+          appearance: none; }
+  .custom-select:focus {
+    border-color: rgba(50, 151, 211, 0.25);
+    outline: 0;
+    box-shadow: inset 0 1px 2px rgba(34, 42, 66, 0.075), 0 0 0 0 #e14eca; }
+    .custom-select:focus::-ms-value {
+      color: rgba(255, 255, 255, 0.8);
+      background-color: transparent; }
+  .custom-select[multiple], .custom-select[size]:not([size="1"]) {
+    height: auto;
+    padding-right: 0.7rem;
+    background-image: none; }
+  .custom-select:disabled {
+    color: #6c757d;
+    background-color: #e9ecef; }
+  .custom-select::-ms-expand {
+    display: none; }
+
+.custom-select-sm {
+  height: calc(1.35em + 0.5rem + 2px);
+  padding-top: 0.25rem;
+  padding-bottom: 0.25rem;
+  padding-left: 0.5rem;
+  font-size: 0.75rem; }
+
+.custom-select-lg {
+  height: calc(1.35em + 1.75rem + 2px);
+  padding-top: 0.875rem;
+  padding-bottom: 0.875rem;
+  padding-left: 1rem;
+  font-size: 0.875rem; }
+
+.custom-file {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  height: calc(2.25rem + 2px);
+  margin-bottom: 0; }
+
+.custom-file-input {
+  position: relative;
+  z-index: 2;
+  width: 100%;
+  height: calc(2.25rem + 2px);
+  margin: 0;
+  opacity: 0; }
+  .custom-file-input:focus ~ .custom-file-label {
+    border-color: rgba(50, 151, 211, 0.25);
+    box-shadow: none; }
+  .custom-file-input:disabled ~ .custom-file-label {
+    background-color: #e9ecef; }
+  .custom-file-input:lang(en) ~ .custom-file-label::after {
+    content: "Browse"; }
+  .custom-file-input ~ .custom-file-label[data-browse]::after {
+    content: attr(data-browse); }
+
+.custom-file-label {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1;
+  height: calc(2.25rem + 2px);
+  padding: 0.5rem 0.7rem;
+  font-weight: 400;
+  line-height: 1.42857;
+  color: rgba(255, 255, 255, 0.8);
+  background-color: transparent;
+  border: 1px solid #cad1d7;
+  border-radius: 0.25rem;
+  box-shadow: none; }
+  .custom-file-label::after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 3;
+    display: block;
+    height: 2.25rem;
+    padding: 0.5rem 0.7rem;
+    line-height: 1.42857;
+    color: rgba(255, 255, 255, 0.8);
+    content: "Browse";
+    background-color: transparent;
+    border-left: inherit;
+    border-radius: 0 0.25rem 0.25rem 0; }
+
+.custom-range {
+  width: 100%;
+  height: calc(1rem + 0);
+  padding: 0;
+  background-color: transparent;
+  -webkit-appearance: none;
+          appearance: none; }
+  .custom-range:focus {
+    outline: none; }
+    .custom-range:focus::-webkit-slider-thumb {
+      box-shadow: 0 0 0 1px #1e1e2f, none; }
+    .custom-range:focus::-moz-range-thumb {
+      box-shadow: 0 0 0 1px #1e1e2f, none; }
+    .custom-range:focus::-ms-thumb {
+      box-shadow: 0 0 0 1px #1e1e2f, none; }
+  .custom-range::-moz-focus-outer {
+    border: 0; }
+  .custom-range::-webkit-slider-thumb {
+    width: 1rem;
+    height: 1rem;
+    margin-top: -0.25rem;
+    background-color: #e14eca;
+    border: 0;
+    border-radius: 1rem;
+    box-shadow: 0 0.1rem 0.25rem rgba(34, 42, 66, 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;
+    -webkit-appearance: none;
+            appearance: none; }
+    @media (prefers-reduced-motion: reduce) {
+      .custom-range::-webkit-slider-thumb {
+        -webkit-transition: none;
+        transition: none; } }
+    .custom-range::-webkit-slider-thumb:active {
+      background-color: #fbe7f8; }
+  .custom-range::-webkit-slider-runnable-track {
+    width: 100%;
+    height: 0.5rem;
+    color: transparent;
+    cursor: pointer;
+    background-color: #e3e3e3;
+    border-color: transparent;
+    border-radius: 1rem;
+    box-shadow: inset 0 0.25rem 0.25rem rgba(34, 42, 66, 0.1); }
+  .custom-range::-moz-range-thumb {
+    width: 1rem;
+    height: 1rem;
+    background-color: #e14eca;
+    border: 0;
+    border-radius: 1rem;
+    box-shadow: 0 0.1rem 0.25rem rgba(34, 42, 66, 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;
+    appearance: none; }
+    @media (prefers-reduced-motion: reduce) {
+      .custom-range::-moz-range-thumb {
+        -moz-transition: none;
+        transition: none; } }
+    .custom-range::-moz-range-thumb:active {
+      background-color: #fbe7f8; }
+  .custom-range::-moz-range-track {
+    width: 100%;
+    height: 0.5rem;
+    color: transparent;
+    cursor: pointer;
+    background-color: #e3e3e3;
+    border-color: transparent;
+    border-radius: 1rem;
+    box-shadow: inset 0 0.25rem 0.25rem rgba(34, 42, 66, 0.1); }
+  .custom-range::-ms-thumb {
+    width: 1rem;
+    height: 1rem;
+    margin-top: 0;
+    margin-right: 0;
+    margin-left: 0;
+    background-color: #e14eca;
+    border: 0;
+    border-radius: 1rem;
+    box-shadow: 0 0.1rem 0.25rem rgba(34, 42, 66, 0.1);
+    -ms-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;
+    appearance: none; }
+    @media (prefers-reduced-motion: reduce) {
+      .custom-range::-ms-thumb {
+        -ms-transition: none;
+        transition: none; } }
+    .custom-range::-ms-thumb:active {
+      background-color: #fbe7f8; }
+  .custom-range::-ms-track {
+    width: 100%;
+    height: 0.5rem;
+    color: transparent;
+    cursor: pointer;
+    background-color: transparent;
+    border-color: transparent;
+    border-width: 0.5rem;
+    box-shadow: inset 0 0.25rem 0.25rem rgba(34, 42, 66, 0.1); }
+  .custom-range::-ms-fill-lower {
+    background-color: #e3e3e3;
+    border-radius: 1rem; }
+  .custom-range::-ms-fill-upper {
+    margin-right: 15px;
+    background-color: #e3e3e3;
+    border-radius: 1rem; }
+  .custom-range:disabled::-webkit-slider-thumb {
+    background-color: #adb5bd; }
+  .custom-range:disabled::-webkit-slider-runnable-track {
+    cursor: default; }
+  .custom-range:disabled::-moz-range-thumb {
+    background-color: #adb5bd; }
+  .custom-range:disabled::-moz-range-track {
+    cursor: default; }
+  .custom-range:disabled::-ms-thumb {
+    background-color: #adb5bd; }
+
+.custom-control-label::before,
+.custom-file-label,
+.custom-select {
+  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) {
+    .custom-control-label::before,
+    .custom-file-label,
+    .custom-select {
+      transition: none; } }
+
+.nav {
+  display: flex;
+  flex-wrap: wrap;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none; }
+
+.nav-link {
+  display: block;
+  padding: 0.5rem 1rem; }
+  .nav-link:hover, .nav-link:focus {
+    text-decoration: none; }
+  .nav-link.disabled {
+    color: #6c757d;
+    pointer-events: none;
+    cursor: default; }
+
+.nav-tabs {
+  border-bottom: 0.0625rem solid #e3e3e3; }
+  .nav-tabs .nav-item {
+    margin-bottom: -0.0625rem; }
+  .nav-tabs .nav-link {
+    border: 0.0625rem solid transparent;
+    border-top-left-radius: 0.25rem;
+    border-top-right-radius: 0.25rem; }
+    .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
+      border-color: #e9ecef #e9ecef #e3e3e3; }
+    .nav-tabs .nav-link.disabled {
+      color: #6c757d;
+      background-color: transparent;
+      border-color: transparent; }
+  .nav-tabs .nav-link.active,
+  .nav-tabs .nav-item.show .nav-link {
+    color: #525f7f;
+    background-color: #1e1e2f;
+    border-color: #e3e3e3 #e3e3e3 #1e1e2f; }
+  .nav-tabs .dropdown-menu {
+    margin-top: -0.0625rem;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0; }
+
+.nav-pills .nav-link {
+  border-radius: 0.25rem; }
+
+.nav-pills .nav-link.active,
+.nav-pills .show > .nav-link {
+  color: #ffffff;
+  background-color: #e14eca; }
+
+.nav-fill .nav-item {
+  flex: 1 1 auto;
+  text-align: center; }
+
+.nav-justified .nav-item {
+  flex-basis: 0;
+  flex-grow: 1;
+  text-align: center; }
+
+.tab-content > .tab-pane {
+  display: none; }
+
+.tab-content > .active {
+  display: block; }
+
+.navbar {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  justify-content: space-between;
+  padding: 0.625rem 0.9375rem; }
+  .navbar > .container,
+  .navbar > .container-fluid {
+    display: flex;
+    flex-wrap: wrap;
+    align-items: center;
+    justify-content: space-between; }
+
+.navbar-brand {
+  display: inline-block;
+  padding-top: 0.40681rem;
+  padding-bottom: 0.40681rem;
+  margin-right: 0.9375rem;
+  font-size: 0.99925rem;
+  line-height: inherit;
+  white-space: nowrap; }
+  .navbar-brand:hover, .navbar-brand:focus {
+    text-decoration: none; }
+
+.navbar-nav {
+  display: flex;
+  flex-direction: column;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none; }
+  .navbar-nav .nav-link {
+    padding-right: 0;
+    padding-left: 0; }
+  .navbar-nav .dropdown-menu {
+    position: static;
+    float: none; }
+
+.navbar-text {
+  display: inline-block;
+  padding-top: 0.5rem;
+  padding-bottom: 0.5rem; }
+
+.navbar-collapse {
+  flex-basis: 100%;
+  flex-grow: 1;
+  align-items: center; }
+
+.navbar-toggler {
+  padding: 0.25rem 0.75rem;
+  font-size: 0.99925rem;
+  line-height: 1;
+  background-color: transparent;
+  border: 0.0625rem solid transparent;
+  border-radius: 0.25rem; }
+  .navbar-toggler:hover, .navbar-toggler:focus {
+    text-decoration: none; }
+
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  content: "";
+  background: no-repeat center center;
+  background-size: 100% 100%; }
+
+@media (max-width: 575.98px) {
+  .navbar-expand-sm > .container,
+  .navbar-expand-sm > .container-fluid {
+    padding-right: 0;
+    padding-left: 0; } }
+
+@media (min-width: 576px) {
+  .navbar-expand-sm {
+    flex-flow: row nowrap;
+    justify-content: flex-start; }
+    .navbar-expand-sm .navbar-nav {
+      flex-direction: row; }
+      .navbar-expand-sm .navbar-nav .dropdown-menu {
+        position: absolute; }
+      .navbar-expand-sm .navbar-nav .nav-link {
+        padding-right: 1rem;
+        padding-left: 1rem; }
+    .navbar-expand-sm > .container,
+    .navbar-expand-sm > .container-fluid {
+      flex-wrap: nowrap; }
+    .navbar-expand-sm .navbar-collapse {
+      display: flex !important;
+      flex-basis: auto; }
+    .navbar-expand-sm .navbar-toggler {
+      display: none; } }
+
+@media (max-width: 767.98px) {
+  .navbar-expand-md > .container,
+  .navbar-expand-md > .container-fluid {
+    padding-right: 0;
+    padding-left: 0; } }
+
+@media (min-width: 768px) {
+  .navbar-expand-md {
+    flex-flow: row nowrap;
+    justify-content: flex-start; }
+    .navbar-expand-md .navbar-nav {
+      flex-direction: row; }
+      .navbar-expand-md .navbar-nav .dropdown-menu {
+        position: absolute; }
+      .navbar-expand-md .navbar-nav .nav-link {
+        padding-right: 1rem;
+        padding-left: 1rem; }
+    .navbar-expand-md > .container,
+    .navbar-expand-md > .container-fluid {
+      flex-wrap: nowrap; }
+    .navbar-expand-md .navbar-collapse {
+      display: flex !important;
+      flex-basis: auto; }
+    .navbar-expand-md .navbar-toggler {
+      display: none; } }
+
+@media (max-width: 991.98px) {
+  .navbar-expand-lg > .container,
+  .navbar-expand-lg > .container-fluid {
+    padding-right: 0;
+    padding-left: 0; } }
+
+@media (min-width: 992px) {
+  .navbar-expand-lg {
+    flex-flow: row nowrap;
+    justify-content: flex-start; }
+    .navbar-expand-lg .navbar-nav {
+      flex-direction: row; }
+      .navbar-expand-lg .navbar-nav .dropdown-menu {
+        position: absolute; }
+      .navbar-expand-lg .navbar-nav .nav-link {
+        padding-right: 1rem;
+        padding-left: 1rem; }
+    .navbar-expand-lg > .container,
+    .navbar-expand-lg > .container-fluid {
+      flex-wrap: nowrap; }
+    .navbar-expand-lg .navbar-collapse {
+      display: flex !important;
+      flex-basis: auto; }
+    .navbar-expand-lg .navbar-toggler {
+      display: none; } }
+
+@media (max-width: 1199.98px) {
+  .navbar-expand-xl > .container,
+  .navbar-expand-xl > .container-fluid {
+    padding-right: 0;
+    padding-left: 0; } }
+
+@media (min-width: 1200px) {
+  .navbar-expand-xl {
+    flex-flow: row nowrap;
+    justify-content: flex-start; }
+    .navbar-expand-xl .navbar-nav {
+      flex-direction: row; }
+      .navbar-expand-xl .navbar-nav .dropdown-menu {
+        position: absolute; }
+      .navbar-expand-xl .navbar-nav .nav-link {
+        padding-right: 1rem;
+        padding-left: 1rem; }
+    .navbar-expand-xl > .container,
+    .navbar-expand-xl > .container-fluid {
+      flex-wrap: nowrap; }
+    .navbar-expand-xl .navbar-collapse {
+      display: flex !important;
+      flex-basis: auto; }
+    .navbar-expand-xl .navbar-toggler {
+      display: none; } }
+
+.navbar-expand {
+  flex-flow: row nowrap;
+  justify-content: flex-start; }
+  .navbar-expand > .container,
+  .navbar-expand > .container-fluid {
+    padding-right: 0;
+    padding-left: 0; }
+  .navbar-expand .navbar-nav {
+    flex-direction: row; }
+    .navbar-expand .navbar-nav .dropdown-menu {
+      position: absolute; }
+    .navbar-expand .navbar-nav .nav-link {
+      padding-right: 1rem;
+      padding-left: 1rem; }
+  .navbar-expand > .container,
+  .navbar-expand > .container-fluid {
+    flex-wrap: nowrap; }
+  .navbar-expand .navbar-collapse {
+    display: flex !important;
+    flex-basis: auto; }
+  .navbar-expand .navbar-toggler {
+    display: none; }
+
+.navbar-light .navbar-brand {
+  color: rgba(34, 42, 66, 0.9); }
+  .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {
+    color: rgba(34, 42, 66, 0.9); }
+
+.navbar-light .navbar-nav .nav-link {
+  color: rgba(34, 42, 66, 0.5); }
+  .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {
+    color: rgba(34, 42, 66, 0.7); }
+  .navbar-light .navbar-nav .nav-link.disabled {
+    color: rgba(34, 42, 66, 0.3); }
+
+.navbar-light .navbar-nav .show > .nav-link,
+.navbar-light .navbar-nav .active > .nav-link,
+.navbar-light .navbar-nav .nav-link.show,
+.navbar-light .navbar-nav .nav-link.active {
+  color: rgba(34, 42, 66, 0.9); }
+
+.navbar-light .navbar-toggler {
+  color: rgba(34, 42, 66, 0.5);
+  border-color: transparent; }
+
+.navbar-light .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml !default;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(34, 42, 66, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); }
+
+.navbar-light .navbar-text {
+  color: rgba(34, 42, 66, 0.5); }
+  .navbar-light .navbar-text a {
+    color: rgba(34, 42, 66, 0.9); }
+    .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {
+      color: rgba(34, 42, 66, 0.9); }
+
+.navbar-dark .navbar-brand {
+  color: rgba(255, 255, 255, 0.65); }
+  .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {
+    color: rgba(255, 255, 255, 0.65); }
+
+.navbar-dark .navbar-nav .nav-link {
+  color: rgba(255, 255, 255, 0.95); }
+  .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {
+    color: rgba(255, 255, 255, 0.65); }
+  .navbar-dark .navbar-nav .nav-link.disabled {
+    color: rgba(255, 255, 255, 0.25); }
+
+.navbar-dark .navbar-nav .show > .nav-link,
+.navbar-dark .navbar-nav .active > .nav-link,
+.navbar-dark .navbar-nav .nav-link.show,
+.navbar-dark .navbar-nav .nav-link.active {
+  color: rgba(255, 255, 255, 0.65); }
+
+.navbar-dark .navbar-toggler {
+  color: rgba(255, 255, 255, 0.95);
+  border-color: transparent; }
+
+.navbar-dark .navbar-toggler-icon {
+  background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.95)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); }
+
+.navbar-dark .navbar-text {
+  color: rgba(255, 255, 255, 0.95); }
+  .navbar-dark .navbar-text a {
+    color: rgba(255, 255, 255, 0.65); }
+    .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {
+      color: rgba(255, 255, 255, 0.65); }
+
+.card {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  min-width: 0;
+  word-wrap: break-word;
+  background-color: #ffffff;
+  background-clip: border-box;
+  border: 0.0625rem solid rgba(34, 42, 66, 0.05);
+  border-radius: 0.2857rem; }
+  .card > hr {
+    margin-right: 0;
+    margin-left: 0; }
+  .card > .list-group:first-child .list-group-item:first-child {
+    border-top-left-radius: 0.2857rem;
+    border-top-right-radius: 0.2857rem; }
+  .card > .list-group:last-child .list-group-item:last-child {
+    border-bottom-right-radius: 0.2857rem;
+    border-bottom-left-radius: 0.2857rem; }
+
+.card-body {
+  flex: 1 1 auto;
+  padding: 1.5rem; }
+
+.card-title {
+  margin-bottom: 1.25rem; }
+
+.card-subtitle {
+  margin-top: -0.625rem;
+  margin-bottom: 0; }
+
+.card-text:last-child {
+  margin-bottom: 0; }
+
+.card-link:hover {
+  text-decoration: none; }
+
+.card-link + .card-link {
+  margin-left: 1.5rem; }
+
+.card-header {
+  padding: 1.25rem 1.5rem;
+  margin-bottom: 0;
+  background-color: #f6f9fc;
+  border-bottom: 0.0625rem solid rgba(34, 42, 66, 0.05); }
+  .card-header:first-child {
+    border-radius: calc(0.2857rem - 0.0625rem) calc(0.2857rem - 0.0625rem) 0 0; }
+  .card-header + .list-group .list-group-item:first-child {
+    border-top: 0; }
+
+.card-footer {
+  padding: 1.25rem 1.5rem;
+  background-color: #f6f9fc;
+  border-top: 0.0625rem solid rgba(34, 42, 66, 0.05); }
+  .card-footer:last-child {
+    border-radius: 0 0 calc(0.2857rem - 0.0625rem) calc(0.2857rem - 0.0625rem); }
+
+.card-header-tabs {
+  margin-right: -0.75rem;
+  margin-bottom: -1.25rem;
+  margin-left: -0.75rem;
+  border-bottom: 0; }
+
+.card-header-pills {
+  margin-right: -0.75rem;
+  margin-left: -0.75rem; }
+
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: 1.25rem; }
+
+.card-img {
+  width: 100%;
+  border-radius: calc(0.2857rem - 0.0625rem); }
+
+.card-img-top {
+  width: 100%;
+  border-top-left-radius: calc(0.2857rem - 0.0625rem);
+  border-top-right-radius: calc(0.2857rem - 0.0625rem); }
+
+.card-img-bottom {
+  width: 100%;
+  border-bottom-right-radius: calc(0.2857rem - 0.0625rem);
+  border-bottom-left-radius: calc(0.2857rem - 0.0625rem); }
+
+.card-deck {
+  display: flex;
+  flex-direction: column; }
+  .card-deck .card {
+    margin-bottom: 15px; }
+  @media (min-width: 576px) {
+    .card-deck {
+      flex-flow: row wrap;
+      margin-right: -15px;
+      margin-left: -15px; }
+      .card-deck .card {
+        display: flex;
+        flex: 1 0 0%;
+        flex-direction: column;
+        margin-right: 15px;
+        margin-bottom: 0;
+        margin-left: 15px; } }
+
+.card-group {
+  display: flex;
+  flex-direction: column; }
+  .card-group > .card {
+    margin-bottom: 15px; }
+  @media (min-width: 576px) {
+    .card-group {
+      flex-flow: row wrap; }
+      .card-group > .card {
+        flex: 1 0 0%;
+        margin-bottom: 0; }
+        .card-group > .card + .card {
+          margin-left: 0;
+          border-left: 0; }
+        .card-group > .card:not(:last-child) {
+          border-top-right-radius: 0;
+          border-bottom-right-radius: 0; }
+          .card-group > .card:not(:last-child) .card-img-top,
+          .card-group > .card:not(:last-child) .card-header {
+            border-top-right-radius: 0; }
+          .card-group > .card:not(:last-child) .card-img-bottom,
+          .card-group > .card:not(:last-child) .card-footer {
+            border-bottom-right-radius: 0; }
+        .card-group > .card:not(:first-child) {
+          border-top-left-radius: 0;
+          border-bottom-left-radius: 0; }
+          .card-group > .card:not(:first-child) .card-img-top,
+          .card-group > .card:not(:first-child) .card-header {
+            border-top-left-radius: 0; }
+          .card-group > .card:not(:first-child) .card-img-bottom,
+          .card-group > .card:not(:first-child) .card-footer {
+            border-bottom-left-radius: 0; } }
+
+.card-columns .card {
+  margin-bottom: 1.25rem; }
+
+@media (min-width: 576px) {
+  .card-columns {
+    column-count: 3;
+    column-gap: 1.25rem;
+    orphans: 1;
+    widows: 1; }
+    .card-columns .card {
+      display: inline-block;
+      width: 100%; } }
+
+.accordion > .card {
+  overflow: hidden; }
+  .accordion > .card:not(:first-of-type) .card-header:first-child {
+    border-radius: 0; }
+  .accordion > .card:not(:first-of-type):not(:last-of-type) {
+    border-bottom: 0;
+    border-radius: 0; }
+  .accordion > .card:first-of-type {
+    border-bottom: 0;
+    border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0; }
+  .accordion > .card:last-of-type {
+    border-top-left-radius: 0;
+    border-top-right-radius: 0; }
+  .accordion > .card .card-header {
+    margin-bottom: -0.0625rem; }
+
+.breadcrumb {
+  display: flex;
+  flex-wrap: wrap;
+  padding: 0.75rem 1rem;
+  margin-bottom: 1rem;
+  list-style: none;
+  background-color: #1d253b;
+  border-radius: 0.25rem; }
+
+.breadcrumb-item + .breadcrumb-item {
+  padding-left: 0.5rem; }
+  .breadcrumb-item + .breadcrumb-item::before {
+    display: inline-block;
+    padding-right: 0.5rem;
+    color: #ffffff;
+    content: "/"; }
+
+.breadcrumb-item + .breadcrumb-item:hover::before {
+  text-decoration: underline; }
+
+.breadcrumb-item + .breadcrumb-item:hover::before {
+  text-decoration: none; }
+
+.breadcrumb-item.active {
+  color: #ffffff; }
+
+.pagination {
+  display: flex;
+  padding-left: 0;
+  list-style: none;
+  border-radius: 0.25rem; }
+
+.page-link {
+  position: relative;
+  display: block;
+  padding: 0 0.6875rem;
+  margin-left: -0.0625rem;
+  line-height: 1.25;
+  color: #ffffff;
+  background-color: transparent;
+  border: 0.0625rem solid #e3e3e3; }
+  .page-link:hover {
+    z-index: 2;
+    color: #6c757d;
+    text-decoration: none;
+    background-color: #e3e3e3;
+    border-color: #e3e3e3; }
+  .page-link:focus {
+    z-index: 2;
+    outline: 0;
+    box-shadow: none; }
+
+.page-item:first-child .page-link {
+  margin-left: 0;
+  border-top-left-radius: 0.25rem;
+  border-bottom-left-radius: 0.25rem; }
+
+.page-item:last-child .page-link {
+  border-top-right-radius: 0.25rem;
+  border-bottom-right-radius: 0.25rem; }
+
+.page-item.active .page-link {
+  z-index: 1;
+  color: #ffffff;
+  background-color: #e14eca;
+  border-color: #e14eca; }
+
+.page-item.disabled .page-link {
+  color: #6c757d;
+  pointer-events: none;
+  cursor: auto;
+  background-color: transparent;
+  border-color: #e3e3e3; }
+
+.pagination-lg .page-link {
+  padding: 0.75rem 1.5rem;
+  font-size: 0.99925rem;
+  line-height: 1.625rem; }
+
+.pagination-lg .page-item:first-child .page-link {
+  border-top-left-radius: 0.4285rem;
+  border-bottom-left-radius: 0.4285rem; }
+
+.pagination-lg .page-item:last-child .page-link {
+  border-top-right-radius: 0.4285rem;
+  border-bottom-right-radius: 0.4285rem; }
+
+.pagination-sm .page-link {
+  padding: 0.25rem 0.5rem;
+  font-size: 0.75rem;
+  line-height: 1.5; }
+
+.pagination-sm .page-item:first-child .page-link {
+  border-top-left-radius: 0.2857rem;
+  border-bottom-left-radius: 0.2857rem; }
+
+.pagination-sm .page-item:last-child .page-link {
+  border-top-right-radius: 0.2857rem;
+  border-bottom-right-radius: 0.2857rem; }
+
+.badge {
+  display: inline-block;
+  padding: 0.25rem 0.5rem;
+  font-size: 0.62475rem;
+  font-weight: 700;
+  line-height: 1;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: 0.25rem;
+  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) {
+    .badge {
+      transition: none; } }
+  a.badge:hover, a.badge:focus {
+    text-decoration: none; }
+  .badge:empty {
+    display: none; }
+
+.btn .badge {
+  position: relative;
+  top: -1px; }
+
+.badge-pill {
+  padding-right: 0.875em;
+  padding-left: 0.875em;
+  border-radius: 0.875rem; }
+
+.badge-primary {
+  color: #ffffff;
+  background-color: #e14eca; }
+  a.badge-primary:hover, a.badge-primary:focus {
+    color: #ffffff;
+    background-color: #d725bb; }
+  a.badge-primary:focus, a.badge-primary.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(225, 78, 202, 0.5); }
+
+.badge-secondary {
+  color: #212529;
+  background-color: #f4f5f7; }
+  a.badge-secondary:hover, a.badge-secondary:focus {
+    color: #212529;
+    background-color: #d6dae2; }
+  a.badge-secondary:focus, a.badge-secondary.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(244, 245, 247, 0.5); }
+
+.badge-success {
+  color: #ffffff;
+  background-color: #00f2c3; }
+  a.badge-success:hover, a.badge-success:focus {
+    color: #ffffff;
+    background-color: #00bf9a; }
+  a.badge-success:focus, a.badge-success.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(0, 242, 195, 0.5); }
+
+.badge-info {
+  color: #ffffff;
+  background-color: #1d8cf8; }
+  a.badge-info:hover, a.badge-info:focus {
+    color: #ffffff;
+    background-color: #0772db; }
+  a.badge-info:focus, a.badge-info.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(29, 140, 248, 0.5); }
+
+.badge-warning {
+  color: #ffffff;
+  background-color: #ff8d72; }
+  a.badge-warning:hover, a.badge-warning:focus {
+    color: #ffffff;
+    background-color: #ff643f; }
+  a.badge-warning:focus, a.badge-warning.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(255, 141, 114, 0.5); }
+
+.badge-danger {
+  color: #ffffff;
+  background-color: #fd5d93; }
+  a.badge-danger:hover, a.badge-danger:focus {
+    color: #ffffff;
+    background-color: #fc2b71; }
+  a.badge-danger:focus, a.badge-danger.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(253, 93, 147, 0.5); }
+
+.badge-light {
+  color: #ffffff;
+  background-color: #adb5bd; }
+  a.badge-light:hover, a.badge-light:focus {
+    color: #ffffff;
+    background-color: #919ca6; }
+  a.badge-light:focus, a.badge-light.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(173, 181, 189, 0.5); }
+
+.badge-dark {
+  color: #ffffff;
+  background-color: #212529; }
+  a.badge-dark:hover, a.badge-dark:focus {
+    color: #ffffff;
+    background-color: #0a0c0d; }
+  a.badge-dark:focus, a.badge-dark.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(33, 37, 41, 0.5); }
+
+.badge-default {
+  color: #ffffff;
+  background-color: #344675; }
+  a.badge-default:hover, a.badge-default:focus {
+    color: #ffffff;
+    background-color: #243152; }
+  a.badge-default:focus, a.badge-default.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(52, 70, 117, 0.5); }
+
+.badge-white {
+  color: #212529;
+  background-color: #ffffff; }
+  a.badge-white:hover, a.badge-white:focus {
+    color: #212529;
+    background-color: #e6e6e6; }
+  a.badge-white:focus, a.badge-white.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5); }
+
+.badge-neutral {
+  color: #212529;
+  background-color: #ffffff; }
+  a.badge-neutral:hover, a.badge-neutral:focus {
+    color: #212529;
+    background-color: #e6e6e6; }
+  a.badge-neutral:focus, a.badge-neutral.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5); }
+
+.badge-darker {
+  color: #ffffff;
+  background-color: black; }
+  a.badge-darker:hover, a.badge-darker:focus {
+    color: #ffffff;
+    background-color: black; }
+  a.badge-darker:focus, a.badge-darker.focus {
+    outline: 0;
+    box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.5); }
+
+.jumbotron {
+  padding: 2rem 1rem;
+  margin-bottom: 2rem;
+  background-color: #e9ecef;
+  border-radius: 0.4285rem; }
+  @media (min-width: 576px) {
+    .jumbotron {
+      padding: 4rem 2rem; } }
+
+.jumbotron-fluid {
+  padding-right: 0;
+  padding-left: 0;
+  border-radius: 0; }
+
+.alert {
+  position: relative;
+  padding: 0.9rem 1.25rem;
+  margin-bottom: 1rem;
+  border: 0.0625rem solid transparent;
+  border-radius: 0.2857rem; }
+
+.alert-heading {
+  color: inherit; }
+
+.alert-link {
+  font-weight: 600; }
+
+.alert-dismissible {
+  padding-right: 3.8125rem; }
+  .alert-dismissible .close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    padding: 0.9rem 1.25rem;
+    color: inherit; }
+
+.alert-primary {
+  color: #e14eca;
+  background-color: #e66ad2;
+  border-color: #e66ad2; }
+  .alert-primary hr {
+    border-top-color: #e254cb; }
+  .alert-primary .alert-link {
+    color: #d725bb; }
+
+.alert-secondary {
+  color: #f4f5f7;
+  background-color: #f6f7f8;
+  border-color: #f6f7f8; }
+  .alert-secondary hr {
+    border-top-color: #e8eaed; }
+  .alert-secondary .alert-link {
+    color: #d6dae2; }
+
+.alert-success {
+  color: #00f2c3;
+  background-color: #29f4cd;
+  border-color: #29f4cd; }
+  .alert-success hr {
+    border-top-color: #11f3c7; }
+  .alert-success .alert-link {
+    color: #00bf9a; }
+
+.alert-info {
+  color: #1d8cf8;
+  background-color: #419ef9;
+  border-color: #419ef9; }
+  .alert-info hr {
+    border-top-color: #2891f8; }
+  .alert-info .alert-link {
+    color: #0772db; }
+
+.alert-warning {
+  color: #ff8d72;
+  background-color: #ff9f89;
+  border-color: #ff9f89; }
+  .alert-warning hr {
+    border-top-color: #ff8a70; }
+  .alert-warning .alert-link {
+    color: #ff643f; }
+
+.alert-danger {
+  color: #fd5d93;
+  background-color: #fd77a4;
+  border-color: #fd77a4; }
+  .alert-danger hr {
+    border-top-color: #fd5e93; }
+  .alert-danger .alert-link {
+    color: #fc2b71; }
+
+.alert-light {
+  color: #adb5bd;
+  background-color: #bac1c8;
+  border-color: #bac1c8; }
+  .alert-light hr {
+    border-top-color: #acb4bd; }
+  .alert-light .alert-link {
+    color: #919ca6; }
+
+.alert-dark {
+  color: #212529;
+  background-color: #45484b;
+  border-color: #45484b; }
+  .alert-dark hr {
+    border-top-color: #393b3e; }
+  .alert-dark .alert-link {
+    color: #0a0c0d; }
+
+.alert-default {
+  color: #344675;
+  background-color: #54648b;
+  border-color: #54648b; }
+  .alert-default hr {
+    border-top-color: #4a597b; }
+  .alert-default .alert-link {
+    color: #243152; }
+
+.alert-white {
+  color: white;
+  background-color: white;
+  border-color: white; }
+  .alert-white hr {
+    border-top-color: #f2f2f2; }
+  .alert-white .alert-link {
+    color: #e6e6e6; }
+
+.alert-neutral {
+  color: white;
+  background-color: white;
+  border-color: white; }
+  .alert-neutral hr {
+    border-top-color: #f2f2f2; }
+  .alert-neutral .alert-link {
+    color: #e6e6e6; }
+
+.alert-darker {
+  color: black;
+  background-color: #292929;
+  border-color: #292929; }
+  .alert-darker hr {
+    border-top-color: #1c1c1c; }
+  .alert-darker .alert-link {
+    color: black; }
+
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 0.5rem 0; }
+  to {
+    background-position: 0 0; } }
+
+.progress {
+  display: flex;
+  height: 0.5rem;
+  overflow: hidden;
+  font-size: 0.65625rem;
+  background-color: rgba(0, 0, 0, 0.3);
+  border-radius: 0.875rem;
+  box-shadow: 0px 0px 0px 3px rgba(0, 0, 0, 0.3); }
+
+.progress-bar {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  color: #ffffff;
+  text-align: center;
+  white-space: nowrap;
+  background-color: #e14eca;
+  transition: width 0.6s ease; }
+  @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: 0.5rem 0.5rem; }
+
+.progress-bar-animated {
+  animation: progress-bar-stripes 1s linear infinite; }
+  @media (prefers-reduced-motion: reduce) {
+    .progress-bar-animated {
+      animation: none; } }
+
+.media {
+  display: flex;
+  align-items: flex-start; }
+
+.media-body {
+  flex: 1; }
+
+.list-group {
+  display: flex;
+  flex-direction: column;
+  padding-left: 0;
+  margin-bottom: 0; }
+
+.list-group-item-action {
+  width: 100%;
+  color: #525f7f;
+  text-align: inherit; }
+  .list-group-item-action:hover, .list-group-item-action:focus {
+    z-index: 1;
+    color: #525f7f;
+    text-decoration: none;
+    background-color: #f6f9fc; }
+  .list-group-item-action:active {
+    color: #525f7f;
+    background-color: #e9ecef; }
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 1rem 1rem;
+  margin-bottom: -0.0625rem;
+  background-color: #ffffff;
+  border: 0.0625rem solid #e9ecef; }
+  .list-group-item:first-child {
+    border-top-left-radius: 0.25rem;
+    border-top-right-radius: 0.25rem; }
+  .list-group-item:last-child {
+    margin-bottom: 0;
+    border-bottom-right-radius: 0.25rem;
+    border-bottom-left-radius: 0.25rem; }
+  .list-group-item.disabled, .list-group-item:disabled {
+    color: #6c757d;
+    pointer-events: none;
+    background-color: #ffffff; }
+  .list-group-item.active {
+    z-index: 2;
+    color: #ffffff;
+    background-color: #e14eca;
+    border-color: #e14eca; }
+
+.list-group-horizontal {
+  flex-direction: row; }
+  .list-group-horizontal .list-group-item {
+    margin-right: -0.0625rem;
+    margin-bottom: 0; }
+    .list-group-horizontal .list-group-item:first-child {
+      border-top-left-radius: 0.25rem;
+      border-bottom-left-radius: 0.25rem;
+      border-top-right-radius: 0; }
+    .list-group-horizontal .list-group-item:last-child {
+      margin-right: 0;
+      border-top-right-radius: 0.25rem;
+      border-bottom-right-radius: 0.25rem;
+      border-bottom-left-radius: 0; }
+
+@media (min-width: 576px) {
+  .list-group-horizontal-sm {
+    flex-direction: row; }
+    .list-group-horizontal-sm .list-group-item {
+      margin-right: -0.0625rem;
+      margin-bottom: 0; }
+      .list-group-horizontal-sm .list-group-item:first-child {
+        border-top-left-radius: 0.25rem;
+        border-bottom-left-radius: 0.25rem;
+        border-top-right-radius: 0; }
+      .list-group-horizontal-sm .list-group-item:last-child {
+        margin-right: 0;
+        border-top-right-radius: 0.25rem;
+        border-bottom-right-radius: 0.25rem;
+        border-bottom-left-radius: 0; } }
+
+@media (min-width: 768px) {
+  .list-group-horizontal-md {
+    flex-direction: row; }
+    .list-group-horizontal-md .list-group-item {
+      margin-right: -0.0625rem;
+      margin-bottom: 0; }
+      .list-group-horizontal-md .list-group-item:first-child {
+        border-top-left-radius: 0.25rem;
+        border-bottom-left-radius: 0.25rem;
+        border-top-right-radius: 0; }
+      .list-group-horizontal-md .list-group-item:last-child {
+        margin-right: 0;
+        border-top-right-radius: 0.25rem;
+        border-bottom-right-radius: 0.25rem;
+        border-bottom-left-radius: 0; } }
+
+@media (min-width: 992px) {
+  .list-group-horizontal-lg {
+    flex-direction: row; }
+    .list-group-horizontal-lg .list-group-item {
+      margin-right: -0.0625rem;
+      margin-bottom: 0; }
+      .list-group-horizontal-lg .list-group-item:first-child {
+        border-top-left-radius: 0.25rem;
+        border-bottom-left-radius: 0.25rem;
+        border-top-right-radius: 0; }
+      .list-group-horizontal-lg .list-group-item:last-child {
+        margin-right: 0;
+        border-top-right-radius: 0.25rem;
+        border-bottom-right-radius: 0.25rem;
+        border-bottom-left-radius: 0; } }
+
+@media (min-width: 1200px) {
+  .list-group-horizontal-xl {
+    flex-direction: row; }
+    .list-group-horizontal-xl .list-group-item {
+      margin-right: -0.0625rem;
+      margin-bottom: 0; }
+      .list-group-horizontal-xl .list-group-item:first-child {
+        border-top-left-radius: 0.25rem;
+        border-bottom-left-radius: 0.25rem;
+        border-top-right-radius: 0; }
+      .list-group-horizontal-xl .list-group-item:last-child {
+        margin-right: 0;
+        border-top-right-radius: 0.25rem;
+        border-bottom-right-radius: 0.25rem;
+        border-bottom-left-radius: 0; } }
+
+.list-group-flush .list-group-item {
+  border-right: 0;
+  border-left: 0;
+  border-radius: 0; }
+  .list-group-flush .list-group-item:last-child {
+    margin-bottom: -0.0625rem; }
+
+.list-group-flush:first-child .list-group-item:first-child {
+  border-top: 0; }
+
+.list-group-flush:last-child .list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom: 0; }
+
+.list-group-item-primary {
+  color: #853d89;
+  background-color: #f7cdf0; }
+  .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
+    color: #853d89;
+    background-color: #f3b7e9; }
+  .list-group-item-primary.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #853d89;
+    border-color: #853d89; }
+
+.list-group-item-secondary {
+  color: #8f94a0;
+  background-color: #fcfcfd; }
+  .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
+    color: #8f94a0;
+    background-color: #ededf3; }
+  .list-group-item-secondary.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #8f94a0;
+    border-color: #8f94a0; }
+
+.list-group-item-success {
+  color: #109285;
+  background-color: #b8fbee; }
+  .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
+    color: #109285;
+    background-color: #a0fae8; }
+  .list-group-item-success.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #109285;
+    border-color: #109285; }
+
+.list-group-item-info {
+  color: #1f5da1;
+  background-color: #c0dffd; }
+  .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
+    color: #1f5da1;
+    background-color: #a7d2fc; }
+  .list-group-item-info.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #1f5da1;
+    border-color: #1f5da1; }
+
+.list-group-item-warning {
+  color: #955d5b;
+  background-color: #ffdfd8; }
+  .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
+    color: #955d5b;
+    background-color: #ffcabf; }
+  .list-group-item-warning.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #955d5b;
+    border-color: #955d5b; }
+
+.list-group-item-danger {
+  color: #94456c;
+  background-color: #fed2e1; }
+  .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
+    color: #94456c;
+    background-color: #fdb9d0; }
+  .list-group-item-danger.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #94456c;
+    border-color: #94456c; }
+
+.list-group-item-light {
+  color: #6a7282;
+  background-color: #e8eaed; }
+  .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
+    color: #6a7282;
+    background-color: #dadde2; }
+  .list-group-item-light.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #6a7282;
+    border-color: #6a7282; }
+
+.list-group-item-dark {
+  color: #212735;
+  background-color: #c1c2c3; }
+  .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
+    color: #212735;
+    background-color: #b4b5b6; }
+  .list-group-item-dark.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #212735;
+    border-color: #212735; }
+
+.list-group-item-default {
+  color: #2b395d;
+  background-color: #c6cbd8; }
+  .list-group-item-default.list-group-item-action:hover, .list-group-item-default.list-group-item-action:focus {
+    color: #2b395d;
+    background-color: #b7bdce; }
+  .list-group-item-default.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #2b395d;
+    border-color: #2b395d; }
+
+.list-group-item-white {
+  color: #9599a4;
+  background-color: white; }
+  .list-group-item-white.list-group-item-action:hover, .list-group-item-white.list-group-item-action:focus {
+    color: #9599a4;
+    background-color: #f2f2f2; }
+  .list-group-item-white.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #9599a4;
+    border-color: #9599a4; }
+
+.list-group-item-neutral {
+  color: #9599a4;
+  background-color: white; }
+  .list-group-item-neutral.list-group-item-action:hover, .list-group-item-neutral.list-group-item-action:focus {
+    color: #9599a4;
+    background-color: #f2f2f2; }
+  .list-group-item-neutral.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #9599a4;
+    border-color: #9599a4; }
+
+.list-group-item-darker {
+  color: #101420;
+  background-color: #b8b8b8; }
+  .list-group-item-darker.list-group-item-action:hover, .list-group-item-darker.list-group-item-action:focus {
+    color: #101420;
+    background-color: #ababab; }
+  .list-group-item-darker.list-group-item-action.active {
+    color: #ffffff;
+    background-color: #101420;
+    border-color: #101420; }
+
+.close {
+  float: right;
+  font-size: 1.3125rem;
+  font-weight: 600;
+  line-height: 1;
+  color: rgba(0, 0, 0, 0.6);
+  text-shadow: none;
+  opacity: .5; }
+  .close:hover {
+    color: rgba(0, 0, 0, 0.6);
+    text-decoration: none; }
+  .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
+    opacity: .75; }
+
+button.close {
+  padding: 0;
+  background-color: transparent;
+  border: 0;
+  -webkit-appearance: none;
+          appearance: none; }
+
+a.close.disabled {
+  pointer-events: none; }
+
+.modal-open {
+  overflow: hidden; }
+  .modal-open .modal {
+    overflow-x: hidden;
+    overflow-y: auto; }
+
+.modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1050;
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  outline: 0; }
+
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 0.5rem;
+  pointer-events: none; }
+  .modal.fade .modal-dialog {
+    transition: transform 0.3s ease-out;
+    transform: translate(0, -50px); }
+    @media (prefers-reduced-motion: reduce) {
+      .modal.fade .modal-dialog {
+        transition: none; } }
+  .modal.show .modal-dialog {
+    transform: none; }
+
+.modal-dialog-scrollable {
+  display: flex;
+  max-height: calc(100% - 1rem); }
+  .modal-dialog-scrollable .modal-content {
+    max-height: calc(100vh - 1rem);
+    overflow: hidden; }
+  .modal-dialog-scrollable .modal-header,
+  .modal-dialog-scrollable .modal-footer {
+    flex-shrink: 0; }
+  .modal-dialog-scrollable .modal-body {
+    overflow-y: auto; }
+
+.modal-dialog-centered {
+  display: flex;
+  align-items: center;
+  min-height: calc(100% - 1rem); }
+  .modal-dialog-centered::before {
+    display: block;
+    height: calc(100vh - 1rem);
+    content: ""; }
+  .modal-dialog-centered.modal-dialog-scrollable {
+    flex-direction: column;
+    justify-content: center;
+    height: 100%; }
+    .modal-dialog-centered.modal-dialog-scrollable .modal-content {
+      max-height: none; }
+    .modal-dialog-centered.modal-dialog-scrollable::before {
+      content: none; }
+
+.modal-content {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  pointer-events: auto;
+  background-color: #ffffff;
+  background-clip: padding-box;
+  border: 1px solid rgba(34, 42, 66, 0.2);
+  border-radius: 0.2857rem;
+  box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.5);
+  outline: 0; }
+
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1040;
+  width: 100vw;
+  height: 100vh;
+  background-color: #222a42; }
+  .modal-backdrop.fade {
+    opacity: 0; }
+  .modal-backdrop.show {
+    opacity: 0.16; }
+
+.modal-header {
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+  padding: 24px 24px 0 24px;
+  border-bottom: 1px solid #e9ecef;
+  border-top-left-radius: 0.2857rem;
+  border-top-right-radius: 0.2857rem; }
+  .modal-header .close {
+    padding: 24px 24px 0 24px;
+    margin: -1rem -1rem -1rem auto; }
+
+.modal-title {
+  margin-bottom: 0;
+  line-height: 1.1; }
+
+.modal-body {
+  position: relative;
+  flex: 1 1 auto;
+  padding: 24px 24px 16px 24px; }
+
+.modal-footer {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+  padding: 24px 24px 16px 24px;
+  border-top: 1px solid #e9ecef;
+  border-bottom-right-radius: 0.2857rem;
+  border-bottom-left-radius: 0.2857rem; }
+  .modal-footer > :not(:first-child) {
+    margin-left: .25rem; }
+  .modal-footer > :not(:last-child) {
+    margin-right: .25rem; }
+
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll; }
+
+@media (min-width: 576px) {
+  .modal-dialog {
+    max-width: 500px;
+    margin: 1.75rem auto; }
+  .modal-dialog-scrollable {
+    max-height: calc(100% - 3.5rem); }
+    .modal-dialog-scrollable .modal-content {
+      max-height: calc(100vh - 3.5rem); }
+  .modal-dialog-centered {
+    min-height: calc(100% - 3.5rem); }
+    .modal-dialog-centered::before {
+      height: calc(100vh - 3.5rem); }
+  .modal-content {
+    box-shadow: 0 15px 35px rgba(50, 50, 93, 0.2), 0 5px 15px rgba(0, 0, 0, 0.17); }
+  .modal-sm {
+    max-width: 380px; } }
+
+@media (min-width: 992px) {
+  .modal-lg,
+  .modal-xl {
+    max-width: 800px; } }
+
+@media (min-width: 1200px) {
+  .modal-xl {
+    max-width: 1140px; } }
+
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  margin: 0;
+  font-family: "Poppins", sans-serif;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1.5;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+  font-size: 0.75rem;
+  word-wrap: break-word;
+  opacity: 0; }
+  .tooltip.show {
+    opacity: 0.9; }
+  .tooltip .arrow {
+    position: absolute;
+    display: block;
+    width: 0.8rem;
+    height: 0.4rem; }
+    .tooltip .arrow::before {
+      position: absolute;
+      content: "";
+      border-color: transparent;
+      border-style: solid; }
+
+.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] {
+  padding: 0.4rem 0; }
+  .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow {
+    bottom: 0; }
+    .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
+      top: 0;
+      border-width: 0.4rem 0.4rem 0;
+      border-top-color: #ffffff; }
+
+.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] {
+  padding: 0 0.4rem; }
+  .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow {
+    left: 0;
+    width: 0.4rem;
+    height: 0.8rem; }
+    .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before {
+      right: 0;
+      border-width: 0.4rem 0.4rem 0.4rem 0;
+      border-right-color: #ffffff; }
+
+.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] {
+  padding: 0.4rem 0; }
+  .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow {
+    top: 0; }
+    .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
+      bottom: 0;
+      border-width: 0 0.4rem 0.4rem;
+      border-bottom-color: #ffffff; }
+
+.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] {
+  padding: 0 0.4rem; }
+  .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow {
+    right: 0;
+    width: 0.4rem;
+    height: 0.8rem; }
+    .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before {
+      left: 0;
+      border-width: 0.4rem 0 0.4rem 0.4rem;
+      border-left-color: #ffffff; }
+
+.tooltip-inner {
+  max-width: 200px;
+  padding: 0.25rem 0.5rem;
+  color: #222a42;
+  text-align: center;
+  background-color: #ffffff;
+  border-radius: 0.25rem; }
+
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: block;
+  max-width: 276px;
+  font-family: "Poppins", sans-serif;
+  font-style: normal;
+  font-weight: 400;
+  line-height: 1.5;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  letter-spacing: normal;
+  word-break: normal;
+  word-spacing: normal;
+  white-space: normal;
+  line-break: auto;
+  font-size: 0.75rem;
+  word-wrap: break-word;
+  background-color: #ffffff;
+  background-clip: padding-box;
+  border: 1px solid rgba(34, 42, 66, 0.05);
+  border-radius: 0.4285rem;
+  box-shadow: 0px 0.5rem 2rem 0px rgba(34, 42, 66, 0.2); }
+  .popover .arrow {
+    position: absolute;
+    display: block;
+    width: 1.5rem;
+    height: 0.75rem;
+    margin: 0 0.4285rem; }
+    .popover .arrow::before, .popover .arrow::after {
+      position: absolute;
+      display: block;
+      content: "";
+      border-color: transparent;
+      border-style: solid; }
+
+.bs-popover-top, .bs-popover-auto[x-placement^="top"] {
+  margin-bottom: 0.75rem; }
+  .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow {
+    bottom: calc((0.75rem + 1px) * -1); }
+    .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before {
+      bottom: 0;
+      border-width: 0.75rem 0.75rem 0;
+      border-top-color: transparent; }
+    .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after {
+      bottom: 1px;
+      border-width: 0.75rem 0.75rem 0;
+      border-top-color: #ffffff; }
+
+.bs-popover-right, .bs-popover-auto[x-placement^="right"] {
+  margin-left: 0.75rem; }
+  .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow {
+    left: calc((0.75rem + 1px) * -1);
+    width: 0.75rem;
+    height: 1.5rem;
+    margin: 0.4285rem 0; }
+    .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before {
+      left: 0;
+      border-width: 0.75rem 0.75rem 0.75rem 0;
+      border-right-color: transparent; }
+    .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after {
+      left: 1px;
+      border-width: 0.75rem 0.75rem 0.75rem 0;
+      border-right-color: #ffffff; }
+
+.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] {
+  margin-top: 0.75rem; }
+  .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow {
+    top: calc((0.75rem + 1px) * -1); }
+    .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before {
+      top: 0;
+      border-width: 0 0.75rem 0.75rem 0.75rem;
+      border-bottom-color: transparent; }
+    .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after {
+      top: 1px;
+      border-width: 0 0.75rem 0.75rem 0.75rem;
+      border-bottom-color: #ffffff; }
+  .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    display: block;
+    width: 1.5rem;
+    margin-left: -0.75rem;
+    content: "";
+    border-bottom: 1px solid #ffffff; }
+
+.bs-popover-left, .bs-popover-auto[x-placement^="left"] {
+  margin-right: 0.75rem; }
+  .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow {
+    right: calc((0.75rem + 1px) * -1);
+    width: 0.75rem;
+    height: 1.5rem;
+    margin: 0.4285rem 0; }
+    .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before {
+      right: 0;
+      border-width: 0.75rem 0 0.75rem 0.75rem;
+      border-left-color: transparent; }
+    .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after {
+      right: 1px;
+      border-width: 0.75rem 0 0.75rem 0.75rem;
+      border-left-color: #ffffff; }
+
+.popover-header {
+  padding: 0.75rem 0.75rem;
+  margin-bottom: 0;
+  font-size: 0.875rem;
+  color: #32325d;
+  background-color: #ffffff;
+  border-bottom: 1px solid #f2f2f2;
+  border-top-left-radius: calc(0.4285rem - 1px);
+  border-top-right-radius: calc(0.4285rem - 1px); }
+  .popover-header:empty {
+    display: none; }
+
+.popover-body {
+  padding: 0.75rem 0.75rem;
+  color: #525f7f; }
+
+.carousel {
+  position: relative; }
+
+.carousel.pointer-event {
+  touch-action: pan-y; }
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden; }
+  .carousel-inner::after {
+    display: block;
+    clear: both;
+    content: ""; }
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: left;
+  width: 100%;
+  margin-right: -100%;
+  -webkit-backface-visibility: hidden;
+          backface-visibility: hidden;
+  transition: transform 0.6s ease-in-out; }
+  @media (prefers-reduced-motion: reduce) {
+    .carousel-item {
+      transition: none; } }
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block; }
+
+.carousel-item-next:not(.carousel-item-left),
+.active.carousel-item-right {
+  transform: translateX(100%); }
+
+.carousel-item-prev:not(.carousel-item-right),
+.active.carousel-item-left {
+  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-left,
+.carousel-fade .carousel-item-prev.carousel-item-right {
+  z-index: 1;
+  opacity: 1; }
+
+.carousel-fade .active.carousel-item-left,
+.carousel-fade .active.carousel-item-right {
+  z-index: 0;
+  opacity: 0;
+  transition: 0s 0.6s opacity; }
+  @media (prefers-reduced-motion: reduce) {
+    .carousel-fade .active.carousel-item-left,
+    .carousel-fade .active.carousel-item-right {
+      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%;
+  color: #ffffff;
+  text-align: center;
+  opacity: 0.5;
+  transition: opacity 0.15s ease; }
+  @media (prefers-reduced-motion: reduce) {
+    .carousel-control-prev,
+    .carousel-control-next {
+      transition: none; } }
+  .carousel-control-prev:hover, .carousel-control-prev:focus,
+  .carousel-control-next:hover,
+  .carousel-control-next:focus {
+    color: #ffffff;
+    text-decoration: none;
+    outline: 0;
+    opacity: 0.9; }
+
+.carousel-control-prev {
+  left: 0; }
+
+.carousel-control-next {
+  right: 0; }
+
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: 20px;
+  height: 20px;
+  background: no-repeat 50% / 100% 100%; }
+
+.carousel-control-prev-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); }
+
+.carousel-control-next-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); }
+
+.carousel-indicators {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 15;
+  display: flex;
+  justify-content: center;
+  padding-left: 0;
+  margin-right: 15%;
+  margin-left: 15%;
+  list-style: none; }
+  .carousel-indicators li {
+    box-sizing: content-box;
+    flex: 0 1 auto;
+    width: 30px;
+    height: 3px;
+    margin-right: 3px;
+    margin-left: 3px;
+    text-indent: -999px;
+    cursor: pointer;
+    background-color: #ffffff;
+    background-clip: padding-box;
+    border-top: 10px solid transparent;
+    border-bottom: 10px solid transparent;
+    opacity: .5;
+    transition: opacity 0.6s ease; }
+    @media (prefers-reduced-motion: reduce) {
+      .carousel-indicators li {
+        transition: none; } }
+  .carousel-indicators .active {
+    opacity: 1; }
+
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #ffffff;
+  text-align: center; }
+
+.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; }
+
+.bg-primary {
+  background-color: #e14eca !important; }
+
+a.bg-primary:hover, a.bg-primary:focus,
+button.bg-primary:hover,
+button.bg-primary:focus {
+  background-color: #d725bb !important; }
+
+.bg-secondary {
+  background-color: #f4f5f7 !important; }
+
+a.bg-secondary:hover, a.bg-secondary:focus,
+button.bg-secondary:hover,
+button.bg-secondary:focus {
+  background-color: #d6dae2 !important; }
+
+.bg-success {
+  background-color: #00f2c3 !important; }
+
+a.bg-success:hover, a.bg-success:focus,
+button.bg-success:hover,
+button.bg-success:focus {
+  background-color: #00bf9a !important; }
+
+.bg-info {
+  background-color: #1d8cf8 !important; }
+
+a.bg-info:hover, a.bg-info:focus,
+button.bg-info:hover,
+button.bg-info:focus {
+  background-color: #0772db !important; }
+
+.bg-warning {
+  background-color: #ff8d72 !important; }
+
+a.bg-warning:hover, a.bg-warning:focus,
+button.bg-warning:hover,
+button.bg-warning:focus {
+  background-color: #ff643f !important; }
+
+.bg-danger {
+  background-color: #fd5d93 !important; }
+
+a.bg-danger:hover, a.bg-danger:focus,
+button.bg-danger:hover,
+button.bg-danger:focus {
+  background-color: #fc2b71 !important; }
+
+.bg-light {
+  background-color: #adb5bd !important; }
+
+a.bg-light:hover, a.bg-light:focus,
+button.bg-light:hover,
+button.bg-light:focus {
+  background-color: #919ca6 !important; }
+
+.bg-dark {
+  background-color: #212529 !important; }
+
+a.bg-dark:hover, a.bg-dark:focus,
+button.bg-dark:hover,
+button.bg-dark:focus {
+  background-color: #0a0c0d !important; }
+
+.bg-default {
+  background-color: #344675 !important; }
+
+a.bg-default:hover, a.bg-default:focus,
+button.bg-default:hover,
+button.bg-default:focus {
+  background-color: #243152 !important; }
+
+.bg-white {
+  background-color: #ffffff !important; }
+
+a.bg-white:hover, a.bg-white:focus,
+button.bg-white:hover,
+button.bg-white:focus {
+  background-color: #e6e6e6 !important; }
+
+.bg-neutral {
+  background-color: #ffffff !important; }
+
+a.bg-neutral:hover, a.bg-neutral:focus,
+button.bg-neutral:hover,
+button.bg-neutral:focus {
+  background-color: #e6e6e6 !important; }
+
+.bg-darker {
+  background-color: black !important; }
+
+a.bg-darker:hover, a.bg-darker:focus,
+button.bg-darker:hover,
+button.bg-darker:focus {
+  background-color: black !important; }
+
+.bg-white {
+  background-color: #ffffff !important; }
+
+.bg-transparent {
+  background-color: transparent !important; }
+
+.border {
+  border: 0.0625rem solid #e9ecef !important; }
+
+.border-top {
+  border-top: 0.0625rem solid #e9ecef !important; }
+
+.border-right {
+  border-right: 0.0625rem solid #e9ecef !important; }
+
+.border-bottom {
+  border-bottom: 0.0625rem solid #e9ecef !important; }
+
+.border-left {
+  border-left: 0.0625rem solid #e9ecef !important; }
+
+.border-0 {
+  border: 0 !important; }
+
+.border-top-0 {
+  border-top: 0 !important; }
+
+.border-right-0 {
+  border-right: 0 !important; }
+
+.border-bottom-0 {
+  border-bottom: 0 !important; }
+
+.border-left-0 {
+  border-left: 0 !important; }
+
+.border-primary {
+  border-color: #e14eca !important; }
+
+.border-secondary {
+  border-color: #f4f5f7 !important; }
+
+.border-success {
+  border-color: #00f2c3 !important; }
+
+.border-info {
+  border-color: #1d8cf8 !important; }
+
+.border-warning {
+  border-color: #ff8d72 !important; }
+
+.border-danger {
+  border-color: #fd5d93 !important; }
+
+.border-light {
+  border-color: #adb5bd !important; }
+
+.border-dark {
+  border-color: #212529 !important; }
+
+.border-default {
+  border-color: #344675 !important; }
+
+.border-white {
+  border-color: #ffffff !important; }
+
+.border-neutral {
+  border-color: #ffffff !important; }
+
+.border-darker {
+  border-color: black !important; }
+
+.border-white {
+  border-color: #ffffff !important; }
+
+.rounded-sm {
+  border-radius: 0.2857rem !important; }
+
+.rounded {
+  border-radius: 0.25rem !important; }
+
+.rounded-top {
+  border-top-left-radius: 0.25rem !important;
+  border-top-right-radius: 0.25rem !important; }
+
+.rounded-right {
+  border-top-right-radius: 0.25rem !important;
+  border-bottom-right-radius: 0.25rem !important; }
+
+.rounded-bottom {
+  border-bottom-right-radius: 0.25rem !important;
+  border-bottom-left-radius: 0.25rem !important; }
+
+.rounded-left {
+  border-top-left-radius: 0.25rem !important;
+  border-bottom-left-radius: 0.25rem !important; }
+
+.rounded-lg {
+  border-radius: 0.4285rem !important; }
+
+.rounded-circle {
+  border-radius: 50% !important; }
+
+.rounded-pill {
+  border-radius: 50rem !important; }
+
+.rounded-0 {
+  border-radius: 0 !important; }
+
+.clearfix::after {
+  display: block;
+  clear: both;
+  content: ""; }
+
+.d-none {
+  display: none !important; }
+
+.d-inline {
+  display: inline !important; }
+
+.d-inline-block {
+  display: inline-block !important; }
+
+.d-block {
+  display: block !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; }
+
+@media (min-width: 576px) {
+  .d-sm-none {
+    display: none !important; }
+  .d-sm-inline {
+    display: inline !important; }
+  .d-sm-inline-block {
+    display: inline-block !important; }
+  .d-sm-block {
+    display: block !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; } }
+
+@media (min-width: 768px) {
+  .d-md-none {
+    display: none !important; }
+  .d-md-inline {
+    display: inline !important; }
+  .d-md-inline-block {
+    display: inline-block !important; }
+  .d-md-block {
+    display: block !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; } }
+
+@media (min-width: 992px) {
+  .d-lg-none {
+    display: none !important; }
+  .d-lg-inline {
+    display: inline !important; }
+  .d-lg-inline-block {
+    display: inline-block !important; }
+  .d-lg-block {
+    display: block !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; } }
+
+@media (min-width: 1200px) {
+  .d-xl-none {
+    display: none !important; }
+  .d-xl-inline {
+    display: inline !important; }
+  .d-xl-inline-block {
+    display: inline-block !important; }
+  .d-xl-block {
+    display: block !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; } }
+
+@media print {
+  .d-print-none {
+    display: none !important; }
+  .d-print-inline {
+    display: inline !important; }
+  .d-print-inline-block {
+    display: inline-block !important; }
+  .d-print-block {
+    display: block !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; } }
+
+.embed-responsive {
+  position: relative;
+  display: block;
+  width: 100%;
+  padding: 0;
+  overflow: hidden; }
+  .embed-responsive::before {
+    display: block;
+    content: ""; }
+  .embed-responsive .embed-responsive-item,
+  .embed-responsive iframe,
+  .embed-responsive embed,
+  .embed-responsive object,
+  .embed-responsive video {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    border: 0; }
+
+.embed-responsive-21by9::before {
+  padding-top: 42.85714%; }
+
+.embed-responsive-16by9::before {
+  padding-top: 56.25%; }
+
+.embed-responsive-4by3::before {
+  padding-top: 75%; }
+
+.embed-responsive-1by1::before {
+  padding-top: 100%; }
+
+.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-wrap {
+  flex-wrap: wrap !important; }
+
+.flex-nowrap {
+  flex-wrap: nowrap !important; }
+
+.flex-wrap-reverse {
+  flex-wrap: wrap-reverse !important; }
+
+.flex-fill {
+  flex: 1 1 auto !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; }
+
+.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; }
+
+.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; }
+
+@media (min-width: 576px) {
+  .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-wrap {
+    flex-wrap: wrap !important; }
+  .flex-sm-nowrap {
+    flex-wrap: nowrap !important; }
+  .flex-sm-wrap-reverse {
+    flex-wrap: wrap-reverse !important; }
+  .flex-sm-fill {
+    flex: 1 1 auto !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; }
+  .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; }
+  .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; } }
+
+@media (min-width: 768px) {
+  .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-wrap {
+    flex-wrap: wrap !important; }
+  .flex-md-nowrap {
+    flex-wrap: nowrap !important; }
+  .flex-md-wrap-reverse {
+    flex-wrap: wrap-reverse !important; }
+  .flex-md-fill {
+    flex: 1 1 auto !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; }
+  .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; }
+  .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; } }
+
+@media (min-width: 992px) {
+  .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-wrap {
+    flex-wrap: wrap !important; }
+  .flex-lg-nowrap {
+    flex-wrap: nowrap !important; }
+  .flex-lg-wrap-reverse {
+    flex-wrap: wrap-reverse !important; }
+  .flex-lg-fill {
+    flex: 1 1 auto !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; }
+  .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; }
+  .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; } }
+
+@media (min-width: 1200px) {
+  .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-wrap {
+    flex-wrap: wrap !important; }
+  .flex-xl-nowrap {
+    flex-wrap: nowrap !important; }
+  .flex-xl-wrap-reverse {
+    flex-wrap: wrap-reverse !important; }
+  .flex-xl-fill {
+    flex: 1 1 auto !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; }
+  .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; }
+  .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; } }
+
+.float-left {
+  float: left !important; }
+
+.float-right {
+  float: right !important; }
+
+.float-none {
+  float: none !important; }
+
+@media (min-width: 576px) {
+  .float-sm-left {
+    float: left !important; }
+  .float-sm-right {
+    float: right !important; }
+  .float-sm-none {
+    float: none !important; } }
+
+@media (min-width: 768px) {
+  .float-md-left {
+    float: left !important; }
+  .float-md-right {
+    float: right !important; }
+  .float-md-none {
+    float: none !important; } }
+
+@media (min-width: 992px) {
+  .float-lg-left {
+    float: left !important; }
+  .float-lg-right {
+    float: right !important; }
+  .float-lg-none {
+    float: none !important; } }
+
+@media (min-width: 1200px) {
+  .float-xl-left {
+    float: left !important; }
+  .float-xl-right {
+    float: right !important; }
+  .float-xl-none {
+    float: none !important; } }
+
+.overflow-auto {
+  overflow: auto !important; }
+
+.overflow-hidden {
+  overflow: hidden !important; }
+
+.position-static {
+  position: static !important; }
+
+.position-relative {
+  position: relative !important; }
+
+.position-absolute {
+  position: absolute !important; }
+
+.position-fixed {
+  position: fixed !important; }
+
+.position-sticky {
+  position: sticky !important; }
+
+.fixed-top {
+  position: fixed;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1030; }
+
+.fixed-bottom {
+  position: fixed;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1030; }
+
+@supports (position: sticky) {
+  .sticky-top {
+    position: sticky;
+    top: 0;
+    z-index: 1020; } }
+
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  white-space: nowrap;
+  border: 0; }
+
+.sr-only-focusable:active, .sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  overflow: visible;
+  clip: auto;
+  white-space: normal; }
+
+.shadow-sm {
+  box-shadow: 0 0.125rem 0.25rem rgba(34, 42, 66, 0.075) !important; }
+
+.shadow {
+  box-shadow: 0 1px 20px 0px rgba(0, 0, 0, 0.1) !important; }
+
+.shadow-lg {
+  box-shadow: 0 1rem 3rem rgba(34, 42, 66, 0.175) !important; }
+
+.shadow-none {
+  box-shadow: none !important; }
+
+.w-25 {
+  width: 25% !important; }
+
+.w-50 {
+  width: 50% !important; }
+
+.w-75 {
+  width: 75% !important; }
+
+.w-100 {
+  width: 100% !important; }
+
+.w-auto {
+  width: auto !important; }
+
+.h-25 {
+  height: 25% !important; }
+
+.h-50 {
+  height: 50% !important; }
+
+.h-75 {
+  height: 75% !important; }
+
+.h-100 {
+  height: 100% !important; }
+
+.h-auto {
+  height: auto !important; }
+
+.mw-100 {
+  max-width: 100% !important; }
+
+.mh-100 {
+  max-height: 100% !important; }
+
+.min-vw-100 {
+  min-width: 100vw !important; }
+
+.min-vh-100 {
+  min-height: 100vh !important; }
+
+.vw-100 {
+  width: 100vw !important; }
+
+.vh-100 {
+  height: 100vh !important; }
+
+.stretched-link::after {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1;
+  pointer-events: auto;
+  content: "";
+  background-color: rgba(0, 0, 0, 0); }
+
+.m-0 {
+  margin: 0 !important; }
+
+.mt-0,
+.my-0 {
+  margin-top: 0 !important; }
+
+.mr-0,
+.mx-0 {
+  margin-right: 0 !important; }
+
+.mb-0,
+.my-0 {
+  margin-bottom: 0 !important; }
+
+.ml-0,
+.mx-0 {
+  margin-left: 0 !important; }
+
+.m-1 {
+  margin: 0.25rem !important; }
+
+.mt-1,
+.my-1 {
+  margin-top: 0.25rem !important; }
+
+.mr-1,
+.mx-1 {
+  margin-right: 0.25rem !important; }
+
+.mb-1,
+.my-1 {
+  margin-bottom: 0.25rem !important; }
+
+.ml-1,
+.mx-1 {
+  margin-left: 0.25rem !important; }
+
+.m-2 {
+  margin: 0.5rem !important; }
+
+.mt-2,
+.my-2 {
+  margin-top: 0.5rem !important; }
+
+.mr-2,
+.mx-2 {
+  margin-right: 0.5rem !important; }
+
+.mb-2,
+.my-2 {
+  margin-bottom: 0.5rem !important; }
+
+.ml-2,
+.mx-2 {
+  margin-left: 0.5rem !important; }
+
+.m-3 {
+  margin: 1rem !important; }
+
+.mt-3,
+.my-3 {
+  margin-top: 1rem !important; }
+
+.mr-3,
+.mx-3 {
+  margin-right: 1rem !important; }
+
+.mb-3,
+.my-3 {
+  margin-bottom: 1rem !important; }
+
+.ml-3,
+.mx-3 {
+  margin-left: 1rem !important; }
+
+.m-4 {
+  margin: 1.5rem !important; }
+
+.mt-4,
+.my-4 {
+  margin-top: 1.5rem !important; }
+
+.mr-4,
+.mx-4 {
+  margin-right: 1.5rem !important; }
+
+.mb-4,
+.my-4 {
+  margin-bottom: 1.5rem !important; }
+
+.ml-4,
+.mx-4 {
+  margin-left: 1.5rem !important; }
+
+.m-5 {
+  margin: 3rem !important; }
+
+.mt-5,
+.my-5 {
+  margin-top: 3rem !important; }
+
+.mr-5,
+.mx-5 {
+  margin-right: 3rem !important; }
+
+.mb-5,
+.my-5 {
+  margin-bottom: 3rem !important; }
+
+.ml-5,
+.mx-5 {
+  margin-left: 3rem !important; }
+
+.m-sm {
+  margin: 2rem !important; }
+
+.mt-sm,
+.my-sm {
+  margin-top: 2rem !important; }
+
+.mr-sm,
+.mx-sm {
+  margin-right: 2rem !important; }
+
+.mb-sm,
+.my-sm {
+  margin-bottom: 2rem !important; }
+
+.ml-sm,
+.mx-sm {
+  margin-left: 2rem !important; }
+
+.m-md {
+  margin: 4rem !important; }
+
+.mt-md,
+.my-md {
+  margin-top: 4rem !important; }
+
+.mr-md,
+.mx-md {
+  margin-right: 4rem !important; }
+
+.mb-md,
+.my-md {
+  margin-bottom: 4rem !important; }
+
+.ml-md,
+.mx-md {
+  margin-left: 4rem !important; }
+
+.m-lg {
+  margin: 6rem !important; }
+
+.mt-lg,
+.my-lg {
+  margin-top: 6rem !important; }
+
+.mr-lg,
+.mx-lg {
+  margin-right: 6rem !important; }
+
+.mb-lg,
+.my-lg {
+  margin-bottom: 6rem !important; }
+
+.ml-lg,
+.mx-lg {
+  margin-left: 6rem !important; }
+
+.m-xl {
+  margin: 8rem !important; }
+
+.mt-xl,
+.my-xl {
+  margin-top: 8rem !important; }
+
+.mr-xl,
+.mx-xl {
+  margin-right: 8rem !important; }
+
+.mb-xl,
+.my-xl {
+  margin-bottom: 8rem !important; }
+
+.ml-xl,
+.mx-xl {
+  margin-left: 8rem !important; }
+
+.p-0 {
+  padding: 0 !important; }
+
+.pt-0,
+.py-0 {
+  padding-top: 0 !important; }
+
+.pr-0,
+.px-0 {
+  padding-right: 0 !important; }
+
+.pb-0,
+.py-0 {
+  padding-bottom: 0 !important; }
+
+.pl-0,
+.px-0 {
+  padding-left: 0 !important; }
+
+.p-1 {
+  padding: 0.25rem !important; }
+
+.pt-1,
+.py-1 {
+  padding-top: 0.25rem !important; }
+
+.pr-1,
+.px-1 {
+  padding-right: 0.25rem !important; }
+
+.pb-1,
+.py-1 {
+  padding-bottom: 0.25rem !important; }
+
+.pl-1,
+.px-1 {
+  padding-left: 0.25rem !important; }
+
+.p-2 {
+  padding: 0.5rem !important; }
+
+.pt-2,
+.py-2 {
+  padding-top: 0.5rem !important; }
+
+.pr-2,
+.px-2 {
+  padding-right: 0.5rem !important; }
+
+.pb-2,
+.py-2 {
+  padding-bottom: 0.5rem !important; }
+
+.pl-2,
+.px-2 {
+  padding-left: 0.5rem !important; }
+
+.p-3 {
+  padding: 1rem !important; }
+
+.pt-3,
+.py-3 {
+  padding-top: 1rem !important; }
+
+.pr-3,
+.px-3 {
+  padding-right: 1rem !important; }
+
+.pb-3,
+.py-3 {
+  padding-bottom: 1rem !important; }
+
+.pl-3,
+.px-3 {
+  padding-left: 1rem !important; }
+
+.p-4 {
+  padding: 1.5rem !important; }
+
+.pt-4,
+.py-4 {
+  padding-top: 1.5rem !important; }
+
+.pr-4,
+.px-4 {
+  padding-right: 1.5rem !important; }
+
+.pb-4,
+.py-4 {
+  padding-bottom: 1.5rem !important; }
+
+.pl-4,
+.px-4 {
+  padding-left: 1.5rem !important; }
+
+.p-5 {
+  padding: 3rem !important; }
+
+.pt-5,
+.py-5 {
+  padding-top: 3rem !important; }
+
+.pr-5,
+.px-5 {
+  padding-right: 3rem !important; }
+
+.pb-5,
+.py-5 {
+  padding-bottom: 3rem !important; }
+
+.pl-5,
+.px-5 {
+  padding-left: 3rem !important; }
+
+.p-sm {
+  padding: 2rem !important; }
+
+.pt-sm,
+.py-sm {
+  padding-top: 2rem !important; }
+
+.pr-sm,
+.px-sm {
+  padding-right: 2rem !important; }
+
+.pb-sm,
+.py-sm {
+  padding-bottom: 2rem !important; }
+
+.pl-sm,
+.px-sm {
+  padding-left: 2rem !important; }
+
+.p-md {
+  padding: 4rem !important; }
+
+.pt-md,
+.py-md {
+  padding-top: 4rem !important; }
+
+.pr-md,
+.px-md {
+  padding-right: 4rem !important; }
+
+.pb-md,
+.py-md {
+  padding-bottom: 4rem !important; }
+
+.pl-md,
+.px-md {
+  padding-left: 4rem !important; }
+
+.p-lg {
+  padding: 6rem !important; }
+
+.pt-lg,
+.py-lg {
+  padding-top: 6rem !important; }
+
+.pr-lg,
+.px-lg {
+  padding-right: 6rem !important; }
+
+.pb-lg,
+.py-lg {
+  padding-bottom: 6rem !important; }
+
+.pl-lg,
+.px-lg {
+  padding-left: 6rem !important; }
+
+.p-xl {
+  padding: 8rem !important; }
+
+.pt-xl,
+.py-xl {
+  padding-top: 8rem !important; }
+
+.pr-xl,
+.px-xl {
+  padding-right: 8rem !important; }
+
+.pb-xl,
+.py-xl {
+  padding-bottom: 8rem !important; }
+
+.pl-xl,
+.px-xl {
+  padding-left: 8rem !important; }
+
+.m-n1 {
+  margin: -0.25rem !important; }
+
+.mt-n1,
+.my-n1 {
+  margin-top: -0.25rem !important; }
+
+.mr-n1,
+.mx-n1 {
+  margin-right: -0.25rem !important; }
+
+.mb-n1,
+.my-n1 {
+  margin-bottom: -0.25rem !important; }
+
+.ml-n1,
+.mx-n1 {
+  margin-left: -0.25rem !important; }
+
+.m-n2 {
+  margin: -0.5rem !important; }
+
+.mt-n2,
+.my-n2 {
+  margin-top: -0.5rem !important; }
+
+.mr-n2,
+.mx-n2 {
+  margin-right: -0.5rem !important; }
+
+.mb-n2,
+.my-n2 {
+  margin-bottom: -0.5rem !important; }
+
+.ml-n2,
+.mx-n2 {
+  margin-left: -0.5rem !important; }
+
+.m-n3 {
+  margin: -1rem !important; }
+
+.mt-n3,
+.my-n3 {
+  margin-top: -1rem !important; }
+
+.mr-n3,
+.mx-n3 {
+  margin-right: -1rem !important; }
+
+.mb-n3,
+.my-n3 {
+  margin-bottom: -1rem !important; }
+
+.ml-n3,
+.mx-n3 {
+  margin-left: -1rem !important; }
+
+.m-n4 {
+  margin: -1.5rem !important; }
+
+.mt-n4,
+.my-n4 {
+  margin-top: -1.5rem !important; }
+
+.mr-n4,
+.mx-n4 {
+  margin-right: -1.5rem !important; }
+
+.mb-n4,
+.my-n4 {
+  margin-bottom: -1.5rem !important; }
+
+.ml-n4,
+.mx-n4 {
+  margin-left: -1.5rem !important; }
+
+.m-n5 {
+  margin: -3rem !important; }
+
+.mt-n5,
+.my-n5 {
+  margin-top: -3rem !important; }
+
+.mr-n5,
+.mx-n5 {
+  margin-right: -3rem !important; }
+
+.mb-n5,
+.my-n5 {
+  margin-bottom: -3rem !important; }
+
+.ml-n5,
+.mx-n5 {
+  margin-left: -3rem !important; }
+
+.m-nsm {
+  margin: -2rem !important; }
+
+.mt-nsm,
+.my-nsm {
+  margin-top: -2rem !important; }
+
+.mr-nsm,
+.mx-nsm {
+  margin-right: -2rem !important; }
+
+.mb-nsm,
+.my-nsm {
+  margin-bottom: -2rem !important; }
+
+.ml-nsm,
+.mx-nsm {
+  margin-left: -2rem !important; }
+
+.m-nmd {
+  margin: -4rem !important; }
+
+.mt-nmd,
+.my-nmd {
+  margin-top: -4rem !important; }
+
+.mr-nmd,
+.mx-nmd {
+  margin-right: -4rem !important; }
+
+.mb-nmd,
+.my-nmd {
+  margin-bottom: -4rem !important; }
+
+.ml-nmd,
+.mx-nmd {
+  margin-left: -4rem !important; }
+
+.m-nlg {
+  margin: -6rem !important; }
+
+.mt-nlg,
+.my-nlg {
+  margin-top: -6rem !important; }
+
+.mr-nlg,
+.mx-nlg {
+  margin-right: -6rem !important; }
+
+.mb-nlg,
+.my-nlg {
+  margin-bottom: -6rem !important; }
+
+.ml-nlg,
+.mx-nlg {
+  margin-left: -6rem !important; }
+
+.m-nxl {
+  margin: -8rem !important; }
+
+.mt-nxl,
+.my-nxl {
+  margin-top: -8rem !important; }
+
+.mr-nxl,
+.mx-nxl {
+  margin-right: -8rem !important; }
+
+.mb-nxl,
+.my-nxl {
+  margin-bottom: -8rem !important; }
+
+.ml-nxl,
+.mx-nxl {
+  margin-left: -8rem !important; }
+
+.m-auto {
+  margin: auto !important; }
+
+.mt-auto,
+.my-auto {
+  margin-top: auto !important; }
+
+.mr-auto,
+.mx-auto {
+  margin-right: auto !important; }
+
+.mb-auto,
+.my-auto {
+  margin-bottom: auto !important; }
+
+.ml-auto,
+.mx-auto {
+  margin-left: auto !important; }
+
+@media (min-width: 576px) {
+  .m-sm-0 {
+    margin: 0 !important; }
+  .mt-sm-0,
+  .my-sm-0 {
+    margin-top: 0 !important; }
+  .mr-sm-0,
+  .mx-sm-0 {
+    margin-right: 0 !important; }
+  .mb-sm-0,
+  .my-sm-0 {
+    margin-bottom: 0 !important; }
+  .ml-sm-0,
+  .mx-sm-0 {
+    margin-left: 0 !important; }
+  .m-sm-1 {
+    margin: 0.25rem !important; }
+  .mt-sm-1,
+  .my-sm-1 {
+    margin-top: 0.25rem !important; }
+  .mr-sm-1,
+  .mx-sm-1 {
+    margin-right: 0.25rem !important; }
+  .mb-sm-1,
+  .my-sm-1 {
+    margin-bottom: 0.25rem !important; }
+  .ml-sm-1,
+  .mx-sm-1 {
+    margin-left: 0.25rem !important; }
+  .m-sm-2 {
+    margin: 0.5rem !important; }
+  .mt-sm-2,
+  .my-sm-2 {
+    margin-top: 0.5rem !important; }
+  .mr-sm-2,
+  .mx-sm-2 {
+    margin-right: 0.5rem !important; }
+  .mb-sm-2,
+  .my-sm-2 {
+    margin-bottom: 0.5rem !important; }
+  .ml-sm-2,
+  .mx-sm-2 {
+    margin-left: 0.5rem !important; }
+  .m-sm-3 {
+    margin: 1rem !important; }
+  .mt-sm-3,
+  .my-sm-3 {
+    margin-top: 1rem !important; }
+  .mr-sm-3,
+  .mx-sm-3 {
+    margin-right: 1rem !important; }
+  .mb-sm-3,
+  .my-sm-3 {
+    margin-bottom: 1rem !important; }
+  .ml-sm-3,
+  .mx-sm-3 {
+    margin-left: 1rem !important; }
+  .m-sm-4 {
+    margin: 1.5rem !important; }
+  .mt-sm-4,
+  .my-sm-4 {
+    margin-top: 1.5rem !important; }
+  .mr-sm-4,
+  .mx-sm-4 {
+    margin-right: 1.5rem !important; }
+  .mb-sm-4,
+  .my-sm-4 {
+    margin-bottom: 1.5rem !important; }
+  .ml-sm-4,
+  .mx-sm-4 {
+    margin-left: 1.5rem !important; }
+  .m-sm-5 {
+    margin: 3rem !important; }
+  .mt-sm-5,
+  .my-sm-5 {
+    margin-top: 3rem !important; }
+  .mr-sm-5,
+  .mx-sm-5 {
+    margin-right: 3rem !important; }
+  .mb-sm-5,
+  .my-sm-5 {
+    margin-bottom: 3rem !important; }
+  .ml-sm-5,
+  .mx-sm-5 {
+    margin-left: 3rem !important; }
+  .m-sm-sm {
+    margin: 2rem !important; }
+  .mt-sm-sm,
+  .my-sm-sm {
+    margin-top: 2rem !important; }
+  .mr-sm-sm,
+  .mx-sm-sm {
+    margin-right: 2rem !important; }
+  .mb-sm-sm,
+  .my-sm-sm {
+    margin-bottom: 2rem !important; }
+  .ml-sm-sm,
+  .mx-sm-sm {
+    margin-left: 2rem !important; }
+  .m-sm-md {
+    margin: 4rem !important; }
+  .mt-sm-md,
+  .my-sm-md {
+    margin-top: 4rem !important; }
+  .mr-sm-md,
+  .mx-sm-md {
+    margin-right: 4rem !important; }
+  .mb-sm-md,
+  .my-sm-md {
+    margin-bottom: 4rem !important; }
+  .ml-sm-md,
+  .mx-sm-md {
+    margin-left: 4rem !important; }
+  .m-sm-lg {
+    margin: 6rem !important; }
+  .mt-sm-lg,
+  .my-sm-lg {
+    margin-top: 6rem !important; }
+  .mr-sm-lg,
+  .mx-sm-lg {
+    margin-right: 6rem !important; }
+  .mb-sm-lg,
+  .my-sm-lg {
+    margin-bottom: 6rem !important; }
+  .ml-sm-lg,
+  .mx-sm-lg {
+    margin-left: 6rem !important; }
+  .m-sm-xl {
+    margin: 8rem !important; }
+  .mt-sm-xl,
+  .my-sm-xl {
+    margin-top: 8rem !important; }
+  .mr-sm-xl,
+  .mx-sm-xl {
+    margin-right: 8rem !important; }
+  .mb-sm-xl,
+  .my-sm-xl {
+    margin-bottom: 8rem !important; }
+  .ml-sm-xl,
+  .mx-sm-xl {
+    margin-left: 8rem !important; }
+  .p-sm-0 {
+    padding: 0 !important; }
+  .pt-sm-0,
+  .py-sm-0 {
+    padding-top: 0 !important; }
+  .pr-sm-0,
+  .px-sm-0 {
+    padding-right: 0 !important; }
+  .pb-sm-0,
+  .py-sm-0 {
+    padding-bottom: 0 !important; }
+  .pl-sm-0,
+  .px-sm-0 {
+    padding-left: 0 !important; }
+  .p-sm-1 {
+    padding: 0.25rem !important; }
+  .pt-sm-1,
+  .py-sm-1 {
+    padding-top: 0.25rem !important; }
+  .pr-sm-1,
+  .px-sm-1 {
+    padding-right: 0.25rem !important; }
+  .pb-sm-1,
+  .py-sm-1 {
+    padding-bottom: 0.25rem !important; }
+  .pl-sm-1,
+  .px-sm-1 {
+    padding-left: 0.25rem !important; }
+  .p-sm-2 {
+    padding: 0.5rem !important; }
+  .pt-sm-2,
+  .py-sm-2 {
+    padding-top: 0.5rem !important; }
+  .pr-sm-2,
+  .px-sm-2 {
+    padding-right: 0.5rem !important; }
+  .pb-sm-2,
+  .py-sm-2 {
+    padding-bottom: 0.5rem !important; }
+  .pl-sm-2,
+  .px-sm-2 {
+    padding-left: 0.5rem !important; }
+  .p-sm-3 {
+    padding: 1rem !important; }
+  .pt-sm-3,
+  .py-sm-3 {
+    padding-top: 1rem !important; }
+  .pr-sm-3,
+  .px-sm-3 {
+    padding-right: 1rem !important; }
+  .pb-sm-3,
+  .py-sm-3 {
+    padding-bottom: 1rem !important; }
+  .pl-sm-3,
+  .px-sm-3 {
+    padding-left: 1rem !important; }
+  .p-sm-4 {
+    padding: 1.5rem !important; }
+  .pt-sm-4,
+  .py-sm-4 {
+    padding-top: 1.5rem !important; }
+  .pr-sm-4,
+  .px-sm-4 {
+    padding-right: 1.5rem !important; }
+  .pb-sm-4,
+  .py-sm-4 {
+    padding-bottom: 1.5rem !important; }
+  .pl-sm-4,
+  .px-sm-4 {
+    padding-left: 1.5rem !important; }
+  .p-sm-5 {
+    padding: 3rem !important; }
+  .pt-sm-5,
+  .py-sm-5 {
+    padding-top: 3rem !important; }
+  .pr-sm-5,
+  .px-sm-5 {
+    padding-right: 3rem !important; }
+  .pb-sm-5,
+  .py-sm-5 {
+    padding-bottom: 3rem !important; }
+  .pl-sm-5,
+  .px-sm-5 {
+    padding-left: 3rem !important; }
+  .p-sm-sm {
+    padding: 2rem !important; }
+  .pt-sm-sm,
+  .py-sm-sm {
+    padding-top: 2rem !important; }
+  .pr-sm-sm,
+  .px-sm-sm {
+    padding-right: 2rem !important; }
+  .pb-sm-sm,
+  .py-sm-sm {
+    padding-bottom: 2rem !important; }
+  .pl-sm-sm,
+  .px-sm-sm {
+    padding-left: 2rem !important; }
+  .p-sm-md {
+    padding: 4rem !important; }
+  .pt-sm-md,
+  .py-sm-md {
+    padding-top: 4rem !important; }
+  .pr-sm-md,
+  .px-sm-md {
+    padding-right: 4rem !important; }
+  .pb-sm-md,
+  .py-sm-md {
+    padding-bottom: 4rem !important; }
+  .pl-sm-md,
+  .px-sm-md {
+    padding-left: 4rem !important; }
+  .p-sm-lg {
+    padding: 6rem !important; }
+  .pt-sm-lg,
+  .py-sm-lg {
+    padding-top: 6rem !important; }
+  .pr-sm-lg,
+  .px-sm-lg {
+    padding-right: 6rem !important; }
+  .pb-sm-lg,
+  .py-sm-lg {
+    padding-bottom: 6rem !important; }
+  .pl-sm-lg,
+  .px-sm-lg {
+    padding-left: 6rem !important; }
+  .p-sm-xl {
+    padding: 8rem !important; }
+  .pt-sm-xl,
+  .py-sm-xl {
+    padding-top: 8rem !important; }
+  .pr-sm-xl,
+  .px-sm-xl {
+    padding-right: 8rem !important; }
+  .pb-sm-xl,
+  .py-sm-xl {
+    padding-bottom: 8rem !important; }
+  .pl-sm-xl,
+  .px-sm-xl {
+    padding-left: 8rem !important; }
+  .m-sm-n1 {
+    margin: -0.25rem !important; }
+  .mt-sm-n1,
+  .my-sm-n1 {
+    margin-top: -0.25rem !important; }
+  .mr-sm-n1,
+  .mx-sm-n1 {
+    margin-right: -0.25rem !important; }
+  .mb-sm-n1,
+  .my-sm-n1 {
+    margin-bottom: -0.25rem !important; }
+  .ml-sm-n1,
+  .mx-sm-n1 {
+    margin-left: -0.25rem !important; }
+  .m-sm-n2 {
+    margin: -0.5rem !important; }
+  .mt-sm-n2,
+  .my-sm-n2 {
+    margin-top: -0.5rem !important; }
+  .mr-sm-n2,
+  .mx-sm-n2 {
+    margin-right: -0.5rem !important; }
+  .mb-sm-n2,
+  .my-sm-n2 {
+    margin-bottom: -0.5rem !important; }
+  .ml-sm-n2,
+  .mx-sm-n2 {
+    margin-left: -0.5rem !important; }
+  .m-sm-n3 {
+    margin: -1rem !important; }
+  .mt-sm-n3,
+  .my-sm-n3 {
+    margin-top: -1rem !important; }
+  .mr-sm-n3,
+  .mx-sm-n3 {
+    margin-right: -1rem !important; }
+  .mb-sm-n3,
+  .my-sm-n3 {
+    margin-bottom: -1rem !important; }
+  .ml-sm-n3,
+  .mx-sm-n3 {
+    margin-left: -1rem !important; }
+  .m-sm-n4 {
+    margin: -1.5rem !important; }
+  .mt-sm-n4,
+  .my-sm-n4 {
+    margin-top: -1.5rem !important; }
+  .mr-sm-n4,
+  .mx-sm-n4 {
+    margin-right: -1.5rem !important; }
+  .mb-sm-n4,
+  .my-sm-n4 {
+    margin-bottom: -1.5rem !important; }
+  .ml-sm-n4,
+  .mx-sm-n4 {
+    margin-left: -1.5rem !important; }
+  .m-sm-n5 {
+    margin: -3rem !important; }
+  .mt-sm-n5,
+  .my-sm-n5 {
+    margin-top: -3rem !important; }
+  .mr-sm-n5,
+  .mx-sm-n5 {
+    margin-right: -3rem !important; }
+  .mb-sm-n5,
+  .my-sm-n5 {
+    margin-bottom: -3rem !important; }
+  .ml-sm-n5,
+  .mx-sm-n5 {
+    margin-left: -3rem !important; }
+  .m-sm-nsm {
+    margin: -2rem !important; }
+  .mt-sm-nsm,
+  .my-sm-nsm {
+    margin-top: -2rem !important; }
+  .mr-sm-nsm,
+  .mx-sm-nsm {
+    margin-right: -2rem !important; }
+  .mb-sm-nsm,
+  .my-sm-nsm {
+    margin-bottom: -2rem !important; }
+  .ml-sm-nsm,
+  .mx-sm-nsm {
+    margin-left: -2rem !important; }
+  .m-sm-nmd {
+    margin: -4rem !important; }
+  .mt-sm-nmd,
+  .my-sm-nmd {
+    margin-top: -4rem !important; }
+  .mr-sm-nmd,
+  .mx-sm-nmd {
+    margin-right: -4rem !important; }
+  .mb-sm-nmd,
+  .my-sm-nmd {
+    margin-bottom: -4rem !important; }
+  .ml-sm-nmd,
+  .mx-sm-nmd {
+    margin-left: -4rem !important; }
+  .m-sm-nlg {
+    margin: -6rem !important; }
+  .mt-sm-nlg,
+  .my-sm-nlg {
+    margin-top: -6rem !important; }
+  .mr-sm-nlg,
+  .mx-sm-nlg {
+    margin-right: -6rem !important; }
+  .mb-sm-nlg,
+  .my-sm-nlg {
+    margin-bottom: -6rem !important; }
+  .ml-sm-nlg,
+  .mx-sm-nlg {
+    margin-left: -6rem !important; }
+  .m-sm-nxl {
+    margin: -8rem !important; }
+  .mt-sm-nxl,
+  .my-sm-nxl {
+    margin-top: -8rem !important; }
+  .mr-sm-nxl,
+  .mx-sm-nxl {
+    margin-right: -8rem !important; }
+  .mb-sm-nxl,
+  .my-sm-nxl {
+    margin-bottom: -8rem !important; }
+  .ml-sm-nxl,
+  .mx-sm-nxl {
+    margin-left: -8rem !important; }
+  .m-sm-auto {
+    margin: auto !important; }
+  .mt-sm-auto,
+  .my-sm-auto {
+    margin-top: auto !important; }
+  .mr-sm-auto,
+  .mx-sm-auto {
+    margin-right: auto !important; }
+  .mb-sm-auto,
+  .my-sm-auto {
+    margin-bottom: auto !important; }
+  .ml-sm-auto,
+  .mx-sm-auto {
+    margin-left: auto !important; } }
+
+@media (min-width: 768px) {
+  .m-md-0 {
+    margin: 0 !important; }
+  .mt-md-0,
+  .my-md-0 {
+    margin-top: 0 !important; }
+  .mr-md-0,
+  .mx-md-0 {
+    margin-right: 0 !important; }
+  .mb-md-0,
+  .my-md-0 {
+    margin-bottom: 0 !important; }
+  .ml-md-0,
+  .mx-md-0 {
+    margin-left: 0 !important; }
+  .m-md-1 {
+    margin: 0.25rem !important; }
+  .mt-md-1,
+  .my-md-1 {
+    margin-top: 0.25rem !important; }
+  .mr-md-1,
+  .mx-md-1 {
+    margin-right: 0.25rem !important; }
+  .mb-md-1,
+  .my-md-1 {
+    margin-bottom: 0.25rem !important; }
+  .ml-md-1,
+  .mx-md-1 {
+    margin-left: 0.25rem !important; }
+  .m-md-2 {
+    margin: 0.5rem !important; }
+  .mt-md-2,
+  .my-md-2 {
+    margin-top: 0.5rem !important; }
+  .mr-md-2,
+  .mx-md-2 {
+    margin-right: 0.5rem !important; }
+  .mb-md-2,
+  .my-md-2 {
+    margin-bottom: 0.5rem !important; }
+  .ml-md-2,
+  .mx-md-2 {
+    margin-left: 0.5rem !important; }
+  .m-md-3 {
+    margin: 1rem !important; }
+  .mt-md-3,
+  .my-md-3 {
+    margin-top: 1rem !important; }
+  .mr-md-3,
+  .mx-md-3 {
+    margin-right: 1rem !important; }
+  .mb-md-3,
+  .my-md-3 {
+    margin-bottom: 1rem !important; }
+  .ml-md-3,
+  .mx-md-3 {
+    margin-left: 1rem !important; }
+  .m-md-4 {
+    margin: 1.5rem !important; }
+  .mt-md-4,
+  .my-md-4 {
+    margin-top: 1.5rem !important; }
+  .mr-md-4,
+  .mx-md-4 {
+    margin-right: 1.5rem !important; }
+  .mb-md-4,
+  .my-md-4 {
+    margin-bottom: 1.5rem !important; }
+  .ml-md-4,
+  .mx-md-4 {
+    margin-left: 1.5rem !important; }
+  .m-md-5 {
+    margin: 3rem !important; }
+  .mt-md-5,
+  .my-md-5 {
+    margin-top: 3rem !important; }
+  .mr-md-5,
+  .mx-md-5 {
+    margin-right: 3rem !important; }
+  .mb-md-5,
+  .my-md-5 {
+    margin-bottom: 3rem !important; }
+  .ml-md-5,
+  .mx-md-5 {
+    margin-left: 3rem !important; }
+  .m-md-sm {
+    margin: 2rem !important; }
+  .mt-md-sm,
+  .my-md-sm {
+    margin-top: 2rem !important; }
+  .mr-md-sm,
+  .mx-md-sm {
+    margin-right: 2rem !important; }
+  .mb-md-sm,
+  .my-md-sm {
+    margin-bottom: 2rem !important; }
+  .ml-md-sm,
+  .mx-md-sm {
+    margin-left: 2rem !important; }
+  .m-md-md {
+    margin: 4rem !important; }
+  .mt-md-md,
+  .my-md-md {
+    margin-top: 4rem !important; }
+  .mr-md-md,
+  .mx-md-md {
+    margin-right: 4rem !important; }
+  .mb-md-md,
+  .my-md-md {
+    margin-bottom: 4rem !important; }
+  .ml-md-md,
+  .mx-md-md {
+    margin-left: 4rem !important; }
+  .m-md-lg {
+    margin: 6rem !important; }
+  .mt-md-lg,
+  .my-md-lg {
+    margin-top: 6rem !important; }
+  .mr-md-lg,
+  .mx-md-lg {
+    margin-right: 6rem !important; }
+  .mb-md-lg,
+  .my-md-lg {
+    margin-bottom: 6rem !important; }
+  .ml-md-lg,
+  .mx-md-lg {
+    margin-left: 6rem !important; }
+  .m-md-xl {
+    margin: 8rem !important; }
+  .mt-md-xl,
+  .my-md-xl {
+    margin-top: 8rem !important; }
+  .mr-md-xl,
+  .mx-md-xl {
+    margin-right: 8rem !important; }
+  .mb-md-xl,
+  .my-md-xl {
+    margin-bottom: 8rem !important; }
+  .ml-md-xl,
+  .mx-md-xl {
+    margin-left: 8rem !important; }
+  .p-md-0 {
+    padding: 0 !important; }
+  .pt-md-0,
+  .py-md-0 {
+    padding-top: 0 !important; }
+  .pr-md-0,
+  .px-md-0 {
+    padding-right: 0 !important; }
+  .pb-md-0,
+  .py-md-0 {
+    padding-bottom: 0 !important; }
+  .pl-md-0,
+  .px-md-0 {
+    padding-left: 0 !important; }
+  .p-md-1 {
+    padding: 0.25rem !important; }
+  .pt-md-1,
+  .py-md-1 {
+    padding-top: 0.25rem !important; }
+  .pr-md-1,
+  .px-md-1 {
+    padding-right: 0.25rem !important; }
+  .pb-md-1,
+  .py-md-1 {
+    padding-bottom: 0.25rem !important; }
+  .pl-md-1,
+  .px-md-1 {
+    padding-left: 0.25rem !important; }
+  .p-md-2 {
+    padding: 0.5rem !important; }
+  .pt-md-2,
+  .py-md-2 {
+    padding-top: 0.5rem !important; }
+  .pr-md-2,
+  .px-md-2 {
+    padding-right: 0.5rem !important; }
+  .pb-md-2,
+  .py-md-2 {
+    padding-bottom: 0.5rem !important; }
+  .pl-md-2,
+  .px-md-2 {
+    padding-left: 0.5rem !important; }
+  .p-md-3 {
+    padding: 1rem !important; }
+  .pt-md-3,
+  .py-md-3 {
+    padding-top: 1rem !important; }
+  .pr-md-3,
+  .px-md-3 {
+    padding-right: 1rem !important; }
+  .pb-md-3,
+  .py-md-3 {
+    padding-bottom: 1rem !important; }
+  .pl-md-3,
+  .px-md-3 {
+    padding-left: 1rem !important; }
+  .p-md-4 {
+    padding: 1.5rem !important; }
+  .pt-md-4,
+  .py-md-4 {
+    padding-top: 1.5rem !important; }
+  .pr-md-4,
+  .px-md-4 {
+    padding-right: 1.5rem !important; }
+  .pb-md-4,
+  .py-md-4 {
+    padding-bottom: 1.5rem !important; }
+  .pl-md-4,
+  .px-md-4 {
+    padding-left: 1.5rem !important; }
+  .p-md-5 {
+    padding: 3rem !important; }
+  .pt-md-5,
+  .py-md-5 {
+    padding-top: 3rem !important; }
+  .pr-md-5,
+  .px-md-5 {
+    padding-right: 3rem !important; }
+  .pb-md-5,
+  .py-md-5 {
+    padding-bottom: 3rem !important; }
+  .pl-md-5,
+  .px-md-5 {
+    padding-left: 3rem !important; }
+  .p-md-sm {
+    padding: 2rem !important; }
+  .pt-md-sm,
+  .py-md-sm {
+    padding-top: 2rem !important; }
+  .pr-md-sm,
+  .px-md-sm {
+    padding-right: 2rem !important; }
+  .pb-md-sm,
+  .py-md-sm {
+    padding-bottom: 2rem !important; }
+  .pl-md-sm,
+  .px-md-sm {
+    padding-left: 2rem !important; }
+  .p-md-md {
+    padding: 4rem !important; }
+  .pt-md-md,
+  .py-md-md {
+    padding-top: 4rem !important; }
+  .pr-md-md,
+  .px-md-md {
+    padding-right: 4rem !important; }
+  .pb-md-md,
+  .py-md-md {
+    padding-bottom: 4rem !important; }
+  .pl-md-md,
+  .px-md-md {
+    padding-left: 4rem !important; }
+  .p-md-lg {
+    padding: 6rem !important; }
+  .pt-md-lg,
+  .py-md-lg {
+    padding-top: 6rem !important; }
+  .pr-md-lg,
+  .px-md-lg {
+    padding-right: 6rem !important; }
+  .pb-md-lg,
+  .py-md-lg {
+    padding-bottom: 6rem !important; }
+  .pl-md-lg,
+  .px-md-lg {
+    padding-left: 6rem !important; }
+  .p-md-xl {
+    padding: 8rem !important; }
+  .pt-md-xl,
+  .py-md-xl {
+    padding-top: 8rem !important; }
+  .pr-md-xl,
+  .px-md-xl {
+    padding-right: 8rem !important; }
+  .pb-md-xl,
+  .py-md-xl {
+    padding-bottom: 8rem !important; }
+  .pl-md-xl,
+  .px-md-xl {
+    padding-left: 8rem !important; }
+  .m-md-n1 {
+    margin: -0.25rem !important; }
+  .mt-md-n1,
+  .my-md-n1 {
+    margin-top: -0.25rem !important; }
+  .mr-md-n1,
+  .mx-md-n1 {
+    margin-right: -0.25rem !important; }
+  .mb-md-n1,
+  .my-md-n1 {
+    margin-bottom: -0.25rem !important; }
+  .ml-md-n1,
+  .mx-md-n1 {
+    margin-left: -0.25rem !important; }
+  .m-md-n2 {
+    margin: -0.5rem !important; }
+  .mt-md-n2,
+  .my-md-n2 {
+    margin-top: -0.5rem !important; }
+  .mr-md-n2,
+  .mx-md-n2 {
+    margin-right: -0.5rem !important; }
+  .mb-md-n2,
+  .my-md-n2 {
+    margin-bottom: -0.5rem !important; }
+  .ml-md-n2,
+  .mx-md-n2 {
+    margin-left: -0.5rem !important; }
+  .m-md-n3 {
+    margin: -1rem !important; }
+  .mt-md-n3,
+  .my-md-n3 {
+    margin-top: -1rem !important; }
+  .mr-md-n3,
+  .mx-md-n3 {
+    margin-right: -1rem !important; }
+  .mb-md-n3,
+  .my-md-n3 {
+    margin-bottom: -1rem !important; }
+  .ml-md-n3,
+  .mx-md-n3 {
+    margin-left: -1rem !important; }
+  .m-md-n4 {
+    margin: -1.5rem !important; }
+  .mt-md-n4,
+  .my-md-n4 {
+    margin-top: -1.5rem !important; }
+  .mr-md-n4,
+  .mx-md-n4 {
+    margin-right: -1.5rem !important; }
+  .mb-md-n4,
+  .my-md-n4 {
+    margin-bottom: -1.5rem !important; }
+  .ml-md-n4,
+  .mx-md-n4 {
+    margin-left: -1.5rem !important; }
+  .m-md-n5 {
+    margin: -3rem !important; }
+  .mt-md-n5,
+  .my-md-n5 {
+    margin-top: -3rem !important; }
+  .mr-md-n5,
+  .mx-md-n5 {
+    margin-right: -3rem !important; }
+  .mb-md-n5,
+  .my-md-n5 {
+    margin-bottom: -3rem !important; }
+  .ml-md-n5,
+  .mx-md-n5 {
+    margin-left: -3rem !important; }
+  .m-md-nsm {
+    margin: -2rem !important; }
+  .mt-md-nsm,
+  .my-md-nsm {
+    margin-top: -2rem !important; }
+  .mr-md-nsm,
+  .mx-md-nsm {
+    margin-right: -2rem !important; }
+  .mb-md-nsm,
+  .my-md-nsm {
+    margin-bottom: -2rem !important; }
+  .ml-md-nsm,
+  .mx-md-nsm {
+    margin-left: -2rem !important; }
+  .m-md-nmd {
+    margin: -4rem !important; }
+  .mt-md-nmd,
+  .my-md-nmd {
+    margin-top: -4rem !important; }
+  .mr-md-nmd,
+  .mx-md-nmd {
+    margin-right: -4rem !important; }
+  .mb-md-nmd,
+  .my-md-nmd {
+    margin-bottom: -4rem !important; }
+  .ml-md-nmd,
+  .mx-md-nmd {
+    margin-left: -4rem !important; }
+  .m-md-nlg {
+    margin: -6rem !important; }
+  .mt-md-nlg,
+  .my-md-nlg {
+    margin-top: -6rem !important; }
+  .mr-md-nlg,
+  .mx-md-nlg {
+    margin-right: -6rem !important; }
+  .mb-md-nlg,
+  .my-md-nlg {
+    margin-bottom: -6rem !important; }
+  .ml-md-nlg,
+  .mx-md-nlg {
+    margin-left: -6rem !important; }
+  .m-md-nxl {
+    margin: -8rem !important; }
+  .mt-md-nxl,
+  .my-md-nxl {
+    margin-top: -8rem !important; }
+  .mr-md-nxl,
+  .mx-md-nxl {
+    margin-right: -8rem !important; }
+  .mb-md-nxl,
+  .my-md-nxl {
+    margin-bottom: -8rem !important; }
+  .ml-md-nxl,
+  .mx-md-nxl {
+    margin-left: -8rem !important; }
+  .m-md-auto {
+    margin: auto !important; }
+  .mt-md-auto,
+  .my-md-auto {
+    margin-top: auto !important; }
+  .mr-md-auto,
+  .mx-md-auto {
+    margin-right: auto !important; }
+  .mb-md-auto,
+  .my-md-auto {
+    margin-bottom: auto !important; }
+  .ml-md-auto,
+  .mx-md-auto {
+    margin-left: auto !important; } }
+
+@media (min-width: 992px) {
+  .m-lg-0 {
+    margin: 0 !important; }
+  .mt-lg-0,
+  .my-lg-0 {
+    margin-top: 0 !important; }
+  .mr-lg-0,
+  .mx-lg-0 {
+    margin-right: 0 !important; }
+  .mb-lg-0,
+  .my-lg-0 {
+    margin-bottom: 0 !important; }
+  .ml-lg-0,
+  .mx-lg-0 {
+    margin-left: 0 !important; }
+  .m-lg-1 {
+    margin: 0.25rem !important; }
+  .mt-lg-1,
+  .my-lg-1 {
+    margin-top: 0.25rem !important; }
+  .mr-lg-1,
+  .mx-lg-1 {
+    margin-right: 0.25rem !important; }
+  .mb-lg-1,
+  .my-lg-1 {
+    margin-bottom: 0.25rem !important; }
+  .ml-lg-1,
+  .mx-lg-1 {
+    margin-left: 0.25rem !important; }
+  .m-lg-2 {
+    margin: 0.5rem !important; }
+  .mt-lg-2,
+  .my-lg-2 {
+    margin-top: 0.5rem !important; }
+  .mr-lg-2,
+  .mx-lg-2 {
+    margin-right: 0.5rem !important; }
+  .mb-lg-2,
+  .my-lg-2 {
+    margin-bottom: 0.5rem !important; }
+  .ml-lg-2,
+  .mx-lg-2 {
+    margin-left: 0.5rem !important; }
+  .m-lg-3 {
+    margin: 1rem !important; }
+  .mt-lg-3,
+  .my-lg-3 {
+    margin-top: 1rem !important; }
+  .mr-lg-3,
+  .mx-lg-3 {
+    margin-right: 1rem !important; }
+  .mb-lg-3,
+  .my-lg-3 {
+    margin-bottom: 1rem !important; }
+  .ml-lg-3,
+  .mx-lg-3 {
+    margin-left: 1rem !important; }
+  .m-lg-4 {
+    margin: 1.5rem !important; }
+  .mt-lg-4,
+  .my-lg-4 {
+    margin-top: 1.5rem !important; }
+  .mr-lg-4,
+  .mx-lg-4 {
+    margin-right: 1.5rem !important; }
+  .mb-lg-4,
+  .my-lg-4 {
+    margin-bottom: 1.5rem !important; }
+  .ml-lg-4,
+  .mx-lg-4 {
+    margin-left: 1.5rem !important; }
+  .m-lg-5 {
+    margin: 3rem !important; }
+  .mt-lg-5,
+  .my-lg-5 {
+    margin-top: 3rem !important; }
+  .mr-lg-5,
+  .mx-lg-5 {
+    margin-right: 3rem !important; }
+  .mb-lg-5,
+  .my-lg-5 {
+    margin-bottom: 3rem !important; }
+  .ml-lg-5,
+  .mx-lg-5 {
+    margin-left: 3rem !important; }
+  .m-lg-sm {
+    margin: 2rem !important; }
+  .mt-lg-sm,
+  .my-lg-sm {
+    margin-top: 2rem !important; }
+  .mr-lg-sm,
+  .mx-lg-sm {
+    margin-right: 2rem !important; }
+  .mb-lg-sm,
+  .my-lg-sm {
+    margin-bottom: 2rem !important; }
+  .ml-lg-sm,
+  .mx-lg-sm {
+    margin-left: 2rem !important; }
+  .m-lg-md {
+    margin: 4rem !important; }
+  .mt-lg-md,
+  .my-lg-md {
+    margin-top: 4rem !important; }
+  .mr-lg-md,
+  .mx-lg-md {
+    margin-right: 4rem !important; }
+  .mb-lg-md,
+  .my-lg-md {
+    margin-bottom: 4rem !important; }
+  .ml-lg-md,
+  .mx-lg-md {
+    margin-left: 4rem !important; }
+  .m-lg-lg {
+    margin: 6rem !important; }
+  .mt-lg-lg,
+  .my-lg-lg {
+    margin-top: 6rem !important; }
+  .mr-lg-lg,
+  .mx-lg-lg {
+    margin-right: 6rem !important; }
+  .mb-lg-lg,
+  .my-lg-lg {
+    margin-bottom: 6rem !important; }
+  .ml-lg-lg,
+  .mx-lg-lg {
+    margin-left: 6rem !important; }
+  .m-lg-xl {
+    margin: 8rem !important; }
+  .mt-lg-xl,
+  .my-lg-xl {
+    margin-top: 8rem !important; }
+  .mr-lg-xl,
+  .mx-lg-xl {
+    margin-right: 8rem !important; }
+  .mb-lg-xl,
+  .my-lg-xl {
+    margin-bottom: 8rem !important; }
+  .ml-lg-xl,
+  .mx-lg-xl {
+    margin-left: 8rem !important; }
+  .p-lg-0 {
+    padding: 0 !important; }
+  .pt-lg-0,
+  .py-lg-0 {
+    padding-top: 0 !important; }
+  .pr-lg-0,
+  .px-lg-0 {
+    padding-right: 0 !important; }
+  .pb-lg-0,
+  .py-lg-0 {
+    padding-bottom: 0 !important; }
+  .pl-lg-0,
+  .px-lg-0 {
+    padding-left: 0 !important; }
+  .p-lg-1 {
+    padding: 0.25rem !important; }
+  .pt-lg-1,
+  .py-lg-1 {
+    padding-top: 0.25rem !important; }
+  .pr-lg-1,
+  .px-lg-1 {
+    padding-right: 0.25rem !important; }
+  .pb-lg-1,
+  .py-lg-1 {
+    padding-bottom: 0.25rem !important; }
+  .pl-lg-1,
+  .px-lg-1 {
+    padding-left: 0.25rem !important; }
+  .p-lg-2 {
+    padding: 0.5rem !important; }
+  .pt-lg-2,
+  .py-lg-2 {
+    padding-top: 0.5rem !important; }
+  .pr-lg-2,
+  .px-lg-2 {
+    padding-right: 0.5rem !important; }
+  .pb-lg-2,
+  .py-lg-2 {
+    padding-bottom: 0.5rem !important; }
+  .pl-lg-2,
+  .px-lg-2 {
+    padding-left: 0.5rem !important; }
+  .p-lg-3 {
+    padding: 1rem !important; }
+  .pt-lg-3,
+  .py-lg-3 {
+    padding-top: 1rem !important; }
+  .pr-lg-3,
+  .px-lg-3 {
+    padding-right: 1rem !important; }
+  .pb-lg-3,
+  .py-lg-3 {
+    padding-bottom: 1rem !important; }
+  .pl-lg-3,
+  .px-lg-3 {
+    padding-left: 1rem !important; }
+  .p-lg-4 {
+    padding: 1.5rem !important; }
+  .pt-lg-4,
+  .py-lg-4 {
+    padding-top: 1.5rem !important; }
+  .pr-lg-4,
+  .px-lg-4 {
+    padding-right: 1.5rem !important; }
+  .pb-lg-4,
+  .py-lg-4 {
+    padding-bottom: 1.5rem !important; }
+  .pl-lg-4,
+  .px-lg-4 {
+    padding-left: 1.5rem !important; }
+  .p-lg-5 {
+    padding: 3rem !important; }
+  .pt-lg-5,
+  .py-lg-5 {
+    padding-top: 3rem !important; }
+  .pr-lg-5,
+  .px-lg-5 {
+    padding-right: 3rem !important; }
+  .pb-lg-5,
+  .py-lg-5 {
+    padding-bottom: 3rem !important; }
+  .pl-lg-5,
+  .px-lg-5 {
+    padding-left: 3rem !important; }
+  .p-lg-sm {
+    padding: 2rem !important; }
+  .pt-lg-sm,
+  .py-lg-sm {
+    padding-top: 2rem !important; }
+  .pr-lg-sm,
+  .px-lg-sm {
+    padding-right: 2rem !important; }
+  .pb-lg-sm,
+  .py-lg-sm {
+    padding-bottom: 2rem !important; }
+  .pl-lg-sm,
+  .px-lg-sm {
+    padding-left: 2rem !important; }
+  .p-lg-md {
+    padding: 4rem !important; }
+  .pt-lg-md,
+  .py-lg-md {
+    padding-top: 4rem !important; }
+  .pr-lg-md,
+  .px-lg-md {
+    padding-right: 4rem !important; }
+  .pb-lg-md,
+  .py-lg-md {
+    padding-bottom: 4rem !important; }
+  .pl-lg-md,
+  .px-lg-md {
+    padding-left: 4rem !important; }
+  .p-lg-lg {
+    padding: 6rem !important; }
+  .pt-lg-lg,
+  .py-lg-lg {
+    padding-top: 6rem !important; }
+  .pr-lg-lg,
+  .px-lg-lg {
+    padding-right: 6rem !important; }
+  .pb-lg-lg,
+  .py-lg-lg {
+    padding-bottom: 6rem !important; }
+  .pl-lg-lg,
+  .px-lg-lg {
+    padding-left: 6rem !important; }
+  .p-lg-xl {
+    padding: 8rem !important; }
+  .pt-lg-xl,
+  .py-lg-xl {
+    padding-top: 8rem !important; }
+  .pr-lg-xl,
+  .px-lg-xl {
+    padding-right: 8rem !important; }
+  .pb-lg-xl,
+  .py-lg-xl {
+    padding-bottom: 8rem !important; }
+  .pl-lg-xl,
+  .px-lg-xl {
+    padding-left: 8rem !important; }
+  .m-lg-n1 {
+    margin: -0.25rem !important; }
+  .mt-lg-n1,
+  .my-lg-n1 {
+    margin-top: -0.25rem !important; }
+  .mr-lg-n1,
+  .mx-lg-n1 {
+    margin-right: -0.25rem !important; }
+  .mb-lg-n1,
+  .my-lg-n1 {
+    margin-bottom: -0.25rem !important; }
+  .ml-lg-n1,
+  .mx-lg-n1 {
+    margin-left: -0.25rem !important; }
+  .m-lg-n2 {
+    margin: -0.5rem !important; }
+  .mt-lg-n2,
+  .my-lg-n2 {
+    margin-top: -0.5rem !important; }
+  .mr-lg-n2,
+  .mx-lg-n2 {
+    margin-right: -0.5rem !important; }
+  .mb-lg-n2,
+  .my-lg-n2 {
+    margin-bottom: -0.5rem !important; }
+  .ml-lg-n2,
+  .mx-lg-n2 {
+    margin-left: -0.5rem !important; }
+  .m-lg-n3 {
+    margin: -1rem !important; }
+  .mt-lg-n3,
+  .my-lg-n3 {
+    margin-top: -1rem !important; }
+  .mr-lg-n3,
+  .mx-lg-n3 {
+    margin-right: -1rem !important; }
+  .mb-lg-n3,
+  .my-lg-n3 {
+    margin-bottom: -1rem !important; }
+  .ml-lg-n3,
+  .mx-lg-n3 {
+    margin-left: -1rem !important; }
+  .m-lg-n4 {
+    margin: -1.5rem !important; }
+  .mt-lg-n4,
+  .my-lg-n4 {
+    margin-top: -1.5rem !important; }
+  .mr-lg-n4,
+  .mx-lg-n4 {
+    margin-right: -1.5rem !important; }
+  .mb-lg-n4,
+  .my-lg-n4 {
+    margin-bottom: -1.5rem !important; }
+  .ml-lg-n4,
+  .mx-lg-n4 {
+    margin-left: -1.5rem !important; }
+  .m-lg-n5 {
+    margin: -3rem !important; }
+  .mt-lg-n5,
+  .my-lg-n5 {
+    margin-top: -3rem !important; }
+  .mr-lg-n5,
+  .mx-lg-n5 {
+    margin-right: -3rem !important; }
+  .mb-lg-n5,
+  .my-lg-n5 {
+    margin-bottom: -3rem !important; }
+  .ml-lg-n5,
+  .mx-lg-n5 {
+    margin-left: -3rem !important; }
+  .m-lg-nsm {
+    margin: -2rem !important; }
+  .mt-lg-nsm,
+  .my-lg-nsm {
+    margin-top: -2rem !important; }
+  .mr-lg-nsm,
+  .mx-lg-nsm {
+    margin-right: -2rem !important; }
+  .mb-lg-nsm,
+  .my-lg-nsm {
+    margin-bottom: -2rem !important; }
+  .ml-lg-nsm,
+  .mx-lg-nsm {
+    margin-left: -2rem !important; }
+  .m-lg-nmd {
+    margin: -4rem !important; }
+  .mt-lg-nmd,
+  .my-lg-nmd {
+    margin-top: -4rem !important; }
+  .mr-lg-nmd,
+  .mx-lg-nmd {
+    margin-right: -4rem !important; }
+  .mb-lg-nmd,
+  .my-lg-nmd {
+    margin-bottom: -4rem !important; }
+  .ml-lg-nmd,
+  .mx-lg-nmd {
+    margin-left: -4rem !important; }
+  .m-lg-nlg {
+    margin: -6rem !important; }
+  .mt-lg-nlg,
+  .my-lg-nlg {
+    margin-top: -6rem !important; }
+  .mr-lg-nlg,
+  .mx-lg-nlg {
+    margin-right: -6rem !important; }
+  .mb-lg-nlg,
+  .my-lg-nlg {
+    margin-bottom: -6rem !important; }
+  .ml-lg-nlg,
+  .mx-lg-nlg {
+    margin-left: -6rem !important; }
+  .m-lg-nxl {
+    margin: -8rem !important; }
+  .mt-lg-nxl,
+  .my-lg-nxl {
+    margin-top: -8rem !important; }
+  .mr-lg-nxl,
+  .mx-lg-nxl {
+    margin-right: -8rem !important; }
+  .mb-lg-nxl,
+  .my-lg-nxl {
+    margin-bottom: -8rem !important; }
+  .ml-lg-nxl,
+  .mx-lg-nxl {
+    margin-left: -8rem !important; }
+  .m-lg-auto {
+    margin: auto !important; }
+  .mt-lg-auto,
+  .my-lg-auto {
+    margin-top: auto !important; }
+  .mr-lg-auto,
+  .mx-lg-auto {
+    margin-right: auto !important; }
+  .mb-lg-auto,
+  .my-lg-auto {
+    margin-bottom: auto !important; }
+  .ml-lg-auto,
+  .mx-lg-auto {
+    margin-left: auto !important; } }
+
+@media (min-width: 1200px) {
+  .m-xl-0 {
+    margin: 0 !important; }
+  .mt-xl-0,
+  .my-xl-0 {
+    margin-top: 0 !important; }
+  .mr-xl-0,
+  .mx-xl-0 {
+    margin-right: 0 !important; }
+  .mb-xl-0,
+  .my-xl-0 {
+    margin-bottom: 0 !important; }
+  .ml-xl-0,
+  .mx-xl-0 {
+    margin-left: 0 !important; }
+  .m-xl-1 {
+    margin: 0.25rem !important; }
+  .mt-xl-1,
+  .my-xl-1 {
+    margin-top: 0.25rem !important; }
+  .mr-xl-1,
+  .mx-xl-1 {
+    margin-right: 0.25rem !important; }
+  .mb-xl-1,
+  .my-xl-1 {
+    margin-bottom: 0.25rem !important; }
+  .ml-xl-1,
+  .mx-xl-1 {
+    margin-left: 0.25rem !important; }
+  .m-xl-2 {
+    margin: 0.5rem !important; }
+  .mt-xl-2,
+  .my-xl-2 {
+    margin-top: 0.5rem !important; }
+  .mr-xl-2,
+  .mx-xl-2 {
+    margin-right: 0.5rem !important; }
+  .mb-xl-2,
+  .my-xl-2 {
+    margin-bottom: 0.5rem !important; }
+  .ml-xl-2,
+  .mx-xl-2 {
+    margin-left: 0.5rem !important; }
+  .m-xl-3 {
+    margin: 1rem !important; }
+  .mt-xl-3,
+  .my-xl-3 {
+    margin-top: 1rem !important; }
+  .mr-xl-3,
+  .mx-xl-3 {
+    margin-right: 1rem !important; }
+  .mb-xl-3,
+  .my-xl-3 {
+    margin-bottom: 1rem !important; }
+  .ml-xl-3,
+  .mx-xl-3 {
+    margin-left: 1rem !important; }
+  .m-xl-4 {
+    margin: 1.5rem !important; }
+  .mt-xl-4,
+  .my-xl-4 {
+    margin-top: 1.5rem !important; }
+  .mr-xl-4,
+  .mx-xl-4 {
+    margin-right: 1.5rem !important; }
+  .mb-xl-4,
+  .my-xl-4 {
+    margin-bottom: 1.5rem !important; }
+  .ml-xl-4,
+  .mx-xl-4 {
+    margin-left: 1.5rem !important; }
+  .m-xl-5 {
+    margin: 3rem !important; }
+  .mt-xl-5,
+  .my-xl-5 {
+    margin-top: 3rem !important; }
+  .mr-xl-5,
+  .mx-xl-5 {
+    margin-right: 3rem !important; }
+  .mb-xl-5,
+  .my-xl-5 {
+    margin-bottom: 3rem !important; }
+  .ml-xl-5,
+  .mx-xl-5 {
+    margin-left: 3rem !important; }
+  .m-xl-sm {
+    margin: 2rem !important; }
+  .mt-xl-sm,
+  .my-xl-sm {
+    margin-top: 2rem !important; }
+  .mr-xl-sm,
+  .mx-xl-sm {
+    margin-right: 2rem !important; }
+  .mb-xl-sm,
+  .my-xl-sm {
+    margin-bottom: 2rem !important; }
+  .ml-xl-sm,
+  .mx-xl-sm {
+    margin-left: 2rem !important; }
+  .m-xl-md {
+    margin: 4rem !important; }
+  .mt-xl-md,
+  .my-xl-md {
+    margin-top: 4rem !important; }
+  .mr-xl-md,
+  .mx-xl-md {
+    margin-right: 4rem !important; }
+  .mb-xl-md,
+  .my-xl-md {
+    margin-bottom: 4rem !important; }
+  .ml-xl-md,
+  .mx-xl-md {
+    margin-left: 4rem !important; }
+  .m-xl-lg {
+    margin: 6rem !important; }
+  .mt-xl-lg,
+  .my-xl-lg {
+    margin-top: 6rem !important; }
+  .mr-xl-lg,
+  .mx-xl-lg {
+    margin-right: 6rem !important; }
+  .mb-xl-lg,
+  .my-xl-lg {
+    margin-bottom: 6rem !important; }
+  .ml-xl-lg,
+  .mx-xl-lg {
+    margin-left: 6rem !important; }
+  .m-xl-xl {
+    margin: 8rem !important; }
+  .mt-xl-xl,
+  .my-xl-xl {
+    margin-top: 8rem !important; }
+  .mr-xl-xl,
+  .mx-xl-xl {
+    margin-right: 8rem !important; }
+  .mb-xl-xl,
+  .my-xl-xl {
+    margin-bottom: 8rem !important; }
+  .ml-xl-xl,
+  .mx-xl-xl {
+    margin-left: 8rem !important; }
+  .p-xl-0 {
+    padding: 0 !important; }
+  .pt-xl-0,
+  .py-xl-0 {
+    padding-top: 0 !important; }
+  .pr-xl-0,
+  .px-xl-0 {
+    padding-right: 0 !important; }
+  .pb-xl-0,
+  .py-xl-0 {
+    padding-bottom: 0 !important; }
+  .pl-xl-0,
+  .px-xl-0 {
+    padding-left: 0 !important; }
+  .p-xl-1 {
+    padding: 0.25rem !important; }
+  .pt-xl-1,
+  .py-xl-1 {
+    padding-top: 0.25rem !important; }
+  .pr-xl-1,
+  .px-xl-1 {
+    padding-right: 0.25rem !important; }
+  .pb-xl-1,
+  .py-xl-1 {
+    padding-bottom: 0.25rem !important; }
+  .pl-xl-1,
+  .px-xl-1 {
+    padding-left: 0.25rem !important; }
+  .p-xl-2 {
+    padding: 0.5rem !important; }
+  .pt-xl-2,
+  .py-xl-2 {
+    padding-top: 0.5rem !important; }
+  .pr-xl-2,
+  .px-xl-2 {
+    padding-right: 0.5rem !important; }
+  .pb-xl-2,
+  .py-xl-2 {
+    padding-bottom: 0.5rem !important; }
+  .pl-xl-2,
+  .px-xl-2 {
+    padding-left: 0.5rem !important; }
+  .p-xl-3 {
+    padding: 1rem !important; }
+  .pt-xl-3,
+  .py-xl-3 {
+    padding-top: 1rem !important; }
+  .pr-xl-3,
+  .px-xl-3 {
+    padding-right: 1rem !important; }
+  .pb-xl-3,
+  .py-xl-3 {
+    padding-bottom: 1rem !important; }
+  .pl-xl-3,
+  .px-xl-3 {
+    padding-left: 1rem !important; }
+  .p-xl-4 {
+    padding: 1.5rem !important; }
+  .pt-xl-4,
+  .py-xl-4 {
+    padding-top: 1.5rem !important; }
+  .pr-xl-4,
+  .px-xl-4 {
+    padding-right: 1.5rem !important; }
+  .pb-xl-4,
+  .py-xl-4 {
+    padding-bottom: 1.5rem !important; }
+  .pl-xl-4,
+  .px-xl-4 {
+    padding-left: 1.5rem !important; }
+  .p-xl-5 {
+    padding: 3rem !important; }
+  .pt-xl-5,
+  .py-xl-5 {
+    padding-top: 3rem !important; }
+  .pr-xl-5,
+  .px-xl-5 {
+    padding-right: 3rem !important; }
+  .pb-xl-5,
+  .py-xl-5 {
+    padding-bottom: 3rem !important; }
+  .pl-xl-5,
+  .px-xl-5 {
+    padding-left: 3rem !important; }
+  .p-xl-sm {
+    padding: 2rem !important; }
+  .pt-xl-sm,
+  .py-xl-sm {
+    padding-top: 2rem !important; }
+  .pr-xl-sm,
+  .px-xl-sm {
+    padding-right: 2rem !important; }
+  .pb-xl-sm,
+  .py-xl-sm {
+    padding-bottom: 2rem !important; }
+  .pl-xl-sm,
+  .px-xl-sm {
+    padding-left: 2rem !important; }
+  .p-xl-md {
+    padding: 4rem !important; }
+  .pt-xl-md,
+  .py-xl-md {
+    padding-top: 4rem !important; }
+  .pr-xl-md,
+  .px-xl-md {
+    padding-right: 4rem !important; }
+  .pb-xl-md,
+  .py-xl-md {
+    padding-bottom: 4rem !important; }
+  .pl-xl-md,
+  .px-xl-md {
+    padding-left: 4rem !important; }
+  .p-xl-lg {
+    padding: 6rem !important; }
+  .pt-xl-lg,
+  .py-xl-lg {
+    padding-top: 6rem !important; }
+  .pr-xl-lg,
+  .px-xl-lg {
+    padding-right: 6rem !important; }
+  .pb-xl-lg,
+  .py-xl-lg {
+    padding-bottom: 6rem !important; }
+  .pl-xl-lg,
+  .px-xl-lg {
+    padding-left: 6rem !important; }
+  .p-xl-xl {
+    padding: 8rem !important; }
+  .pt-xl-xl,
+  .py-xl-xl {
+    padding-top: 8rem !important; }
+  .pr-xl-xl,
+  .px-xl-xl {
+    padding-right: 8rem !important; }
+  .pb-xl-xl,
+  .py-xl-xl {
+    padding-bottom: 8rem !important; }
+  .pl-xl-xl,
+  .px-xl-xl {
+    padding-left: 8rem !important; }
+  .m-xl-n1 {
+    margin: -0.25rem !important; }
+  .mt-xl-n1,
+  .my-xl-n1 {
+    margin-top: -0.25rem !important; }
+  .mr-xl-n1,
+  .mx-xl-n1 {
+    margin-right: -0.25rem !important; }
+  .mb-xl-n1,
+  .my-xl-n1 {
+    margin-bottom: -0.25rem !important; }
+  .ml-xl-n1,
+  .mx-xl-n1 {
+    margin-left: -0.25rem !important; }
+  .m-xl-n2 {
+    margin: -0.5rem !important; }
+  .mt-xl-n2,
+  .my-xl-n2 {
+    margin-top: -0.5rem !important; }
+  .mr-xl-n2,
+  .mx-xl-n2 {
+    margin-right: -0.5rem !important; }
+  .mb-xl-n2,
+  .my-xl-n2 {
+    margin-bottom: -0.5rem !important; }
+  .ml-xl-n2,
+  .mx-xl-n2 {
+    margin-left: -0.5rem !important; }
+  .m-xl-n3 {
+    margin: -1rem !important; }
+  .mt-xl-n3,
+  .my-xl-n3 {
+    margin-top: -1rem !important; }
+  .mr-xl-n3,
+  .mx-xl-n3 {
+    margin-right: -1rem !important; }
+  .mb-xl-n3,
+  .my-xl-n3 {
+    margin-bottom: -1rem !important; }
+  .ml-xl-n3,
+  .mx-xl-n3 {
+    margin-left: -1rem !important; }
+  .m-xl-n4 {
+    margin: -1.5rem !important; }
+  .mt-xl-n4,
+  .my-xl-n4 {
+    margin-top: -1.5rem !important; }
+  .mr-xl-n4,
+  .mx-xl-n4 {
+    margin-right: -1.5rem !important; }
+  .mb-xl-n4,
+  .my-xl-n4 {
+    margin-bottom: -1.5rem !important; }
+  .ml-xl-n4,
+  .mx-xl-n4 {
+    margin-left: -1.5rem !important; }
+  .m-xl-n5 {
+    margin: -3rem !important; }
+  .mt-xl-n5,
+  .my-xl-n5 {
+    margin-top: -3rem !important; }
+  .mr-xl-n5,
+  .mx-xl-n5 {
+    margin-right: -3rem !important; }
+  .mb-xl-n5,
+  .my-xl-n5 {
+    margin-bottom: -3rem !important; }
+  .ml-xl-n5,
+  .mx-xl-n5 {
+    margin-left: -3rem !important; }
+  .m-xl-nsm {
+    margin: -2rem !important; }
+  .mt-xl-nsm,
+  .my-xl-nsm {
+    margin-top: -2rem !important; }
+  .mr-xl-nsm,
+  .mx-xl-nsm {
+    margin-right: -2rem !important; }
+  .mb-xl-nsm,
+  .my-xl-nsm {
+    margin-bottom: -2rem !important; }
+  .ml-xl-nsm,
+  .mx-xl-nsm {
+    margin-left: -2rem !important; }
+  .m-xl-nmd {
+    margin: -4rem !important; }
+  .mt-xl-nmd,
+  .my-xl-nmd {
+    margin-top: -4rem !important; }
+  .mr-xl-nmd,
+  .mx-xl-nmd {
+    margin-right: -4rem !important; }
+  .mb-xl-nmd,
+  .my-xl-nmd {
+    margin-bottom: -4rem !important; }
+  .ml-xl-nmd,
+  .mx-xl-nmd {
+    margin-left: -4rem !important; }
+  .m-xl-nlg {
+    margin: -6rem !important; }
+  .mt-xl-nlg,
+  .my-xl-nlg {
+    margin-top: -6rem !important; }
+  .mr-xl-nlg,
+  .mx-xl-nlg {
+    margin-right: -6rem !important; }
+  .mb-xl-nlg,
+  .my-xl-nlg {
+    margin-bottom: -6rem !important; }
+  .ml-xl-nlg,
+  .mx-xl-nlg {
+    margin-left: -6rem !important; }
+  .m-xl-nxl {
+    margin: -8rem !important; }
+  .mt-xl-nxl,
+  .my-xl-nxl {
+    margin-top: -8rem !important; }
+  .mr-xl-nxl,
+  .mx-xl-nxl {
+    margin-right: -8rem !important; }
+  .mb-xl-nxl,
+  .my-xl-nxl {
+    margin-bottom: -8rem !important; }
+  .ml-xl-nxl,
+  .mx-xl-nxl {
+    margin-left: -8rem !important; }
+  .m-xl-auto {
+    margin: auto !important; }
+  .mt-xl-auto,
+  .my-xl-auto {
+    margin-top: auto !important; }
+  .mr-xl-auto,
+  .mx-xl-auto {
+    margin-right: auto !important; }
+  .mb-xl-auto,
+  .my-xl-auto {
+    margin-bottom: auto !important; }
+  .ml-xl-auto,
+  .mx-xl-auto {
+    margin-left: auto !important; } }
+
+.text-monospace {
+  font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; }
+
+.text-justify {
+  text-align: justify !important; }
+
+.text-wrap {
+  white-space: normal !important; }
+
+.text-nowrap {
+  white-space: nowrap !important; }
+
+.text-truncate {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap; }
+
+.text-left {
+  text-align: left !important; }
+
+.text-right {
+  text-align: right !important; }
+
+.text-center {
+  text-align: center !important; }
+
+@media (min-width: 576px) {
+  .text-sm-left {
+    text-align: left !important; }
+  .text-sm-right {
+    text-align: right !important; }
+  .text-sm-center {
+    text-align: center !important; } }
+
+@media (min-width: 768px) {
+  .text-md-left {
+    text-align: left !important; }
+  .text-md-right {
+    text-align: right !important; }
+  .text-md-center {
+    text-align: center !important; } }
+
+@media (min-width: 992px) {
+  .text-lg-left {
+    text-align: left !important; }
+  .text-lg-right {
+    text-align: right !important; }
+  .text-lg-center {
+    text-align: center !important; } }
+
+@media (min-width: 1200px) {
+  .text-xl-left {
+    text-align: left !important; }
+  .text-xl-right {
+    text-align: right !important; }
+  .text-xl-center {
+    text-align: center !important; } }
+
+.text-lowercase {
+  text-transform: lowercase !important; }
+
+.text-uppercase {
+  text-transform: uppercase !important; }
+
+.text-capitalize {
+  text-transform: capitalize !important; }
+
+.font-weight-light {
+  font-weight: 300 !important; }
+
+.font-weight-lighter {
+  font-weight: lighter !important; }
+
+.font-weight-normal {
+  font-weight: 400 !important; }
+
+.font-weight-bold {
+  font-weight: 600 !important; }
+
+.font-weight-bolder {
+  font-weight: bolder !important; }
+
+.font-italic {
+  font-style: italic !important; }
+
+.text-white {
+  color: #ffffff !important; }
+
+.text-primary {
+  color: #e14eca !important; }
+
+a.text-primary:hover, a.text-primary:focus {
+  color: #c221a9 !important; }
+
+.text-secondary {
+  color: #f4f5f7 !important; }
+
+a.text-secondary:hover, a.text-secondary:focus {
+  color: #c8cdd7 !important; }
+
+.text-success {
+  color: #00f2c3 !important; }
+
+a.text-success:hover, a.text-success:focus {
+  color: #00a685 !important; }
+
+.text-info {
+  color: #1d8cf8 !important; }
+
+a.text-info:hover, a.text-info:focus {
+  color: #0666c2 !important; }
+
+.text-warning {
+  color: #ff8d72 !important; }
+
+a.text-warning:hover, a.text-warning:focus {
+  color: #ff4f26 !important; }
+
+.text-danger {
+  color: #fd5d93 !important; }
+
+a.text-danger:hover, a.text-danger:focus {
+  color: #fc1161 !important; }
+
+.text-light {
+  color: #adb5bd !important; }
+
+a.text-light:hover, a.text-light:focus {
+  color: #838f9b !important; }
+
+.text-dark {
+  color: #212529 !important; }
+
+a.text-dark:hover, a.text-dark:focus {
+  color: black !important; }
+
+.text-default {
+  color: #344675 !important; }
+
+a.text-default:hover, a.text-default:focus {
+  color: #1c2640 !important; }
+
+.text-white {
+  color: #ffffff !important; }
+
+a.text-white:hover, a.text-white:focus {
+  color: #d9d9d9 !important; }
+
+.text-neutral {
+  color: #ffffff !important; }
+
+a.text-neutral:hover, a.text-neutral:focus {
+  color: #d9d9d9 !important; }
+
+.text-darker {
+  color: black !important; }
+
+a.text-darker:hover, a.text-darker:focus {
+  color: black !important; }
+
+.text-body {
+  color: #525f7f !important; }
+
+.text-muted {
+  color: #6c757d !important; }
+
+.text-black-50 {
+  color: rgba(34, 42, 66, 0.5) !important; }
+
+.text-white-50 {
+  color: rgba(255, 255, 255, 0.5) !important; }
+
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0; }
+
+.text-decoration-none {
+  text-decoration: none !important; }
+
+.text-break {
+  word-break: break-word !important;
+  overflow-wrap: break-word !important; }
+
+.text-reset {
+  color: inherit !important; }
+
+.visible {
+  visibility: visible !important; }
+
+.invisible {
+  visibility: hidden !important; }
+
+@media print {
+  *,
+  *::before,
+  *::after {
+    text-shadow: none !important;
+    box-shadow: none !important; }
+  a:not(.btn) {
+    text-decoration: underline; }
+  abbr[title]::after {
+    content: " (" attr(title) ")"; }
+  pre {
+    white-space: pre-wrap !important; }
+  pre,
+  blockquote {
+    border: 0.0625rem solid #adb5bd;
+    page-break-inside: avoid; }
+  thead {
+    display: table-header-group; }
+  tr,
+  img {
+    page-break-inside: avoid; }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3; }
+  h2,
+  h3 {
+    page-break-after: avoid; }
+  @page {
+    size: a3; }
+  body {
+    min-width: 992px !important; }
+  .container {
+    min-width: 992px !important; }
+  .navbar {
+    display: none; }
+  .badge {
+    border: 0.0625rem solid #222a42; }
+  .table {
+    border-collapse: collapse !important; }
+    .table td,
+    .table th {
+      background-color: #ffffff !important; }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #e3e3e3 !important; }
+  .table-dark {
+    color: inherit; }
+    .table-dark th,
+    .table-dark td,
+    .table-dark thead th,
+    .table-dark tbody + tbody {
+      border-color: #e3e3e3; }
+  .table .thead-dark th {
+    color: inherit;
+    border-color: #e3e3e3; } }
+
+.alert {
+  border: 0;
+  color: #ffffff; }
+  .alert .alert-link {
+    color: #ffffff; }
+  .alert.alert-success {
+    background-color: #00bf9a; }
+  .alert i.fa,
+  .alert i.tim-icons {
+    font-size: 1rem; }
+  .alert .close {
+    color: #ffffff;
+    opacity: .9;
+    text-shadow: none;
+    line-height: 0;
+    outline: 0; }
+  .alert span[data-notify="icon"] {
+    font-size: 22px;
+    display: block;
+    left: 19px;
+    position: absolute;
+    top: 50%;
+    margin-top: -11px; }
+  .alert button.close {
+    position: absolute;
+    right: 15px;
+    top: 50%;
+    margin-top: -13px;
+    width: 25px;
+    height: 25px;
+    padding: 3px; }
+  .alert .close ~ span {
+    display: block;
+    max-width: 89%; }
+  .alert.alert-with-icon {
+    padding-left: 65px; }
+
+.alert-dismissible .close {
+  top: 50%;
+  right: 1.25rem;
+  padding: 0;
+  transform: translateY(-50%);
+  color: rgba(255, 255, 255, 0.6);
+  opacity: 1; }
+  .alert-dismissible .close:hover, .alert-dismissible .close:focus {
+    color: rgba(255, 255, 255, 0.9);
+    opacity: 1 !important; }
+  @media (max-width: 575.98px) {
+    .alert-dismissible .close {
+      top: 1rem;
+      right: .5rem; } }
+  .alert-dismissible .close > span:not(.sr-only) {
+    font-size: 1.5rem;
+    background-color: transparent;
+    color: rgba(255, 255, 255, 0.6); }
+  .alert-dismissible .close:hover > span:not(.sr-only), .alert-dismissible .close:focus > span:not(.sr-only) {
+    background-color: transparent;
+    color: rgba(255, 255, 255, 0.9); }
+
+.btn,
+.navbar .navbar-nav > a.btn {
+  border-width: 2px;
+  border: none;
+  position: relative;
+  overflow: hidden;
+  margin: 4px 1px;
+  border-radius: 0.4285rem;
+  cursor: pointer;
+  background: #344675;
+  background-image: linear-gradient(to bottom left, #344675, #263148, #344675);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #344675;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #ffffff; }
+  .btn.animation-on-hover:hover,
+  .navbar .navbar-nav > a.btn.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn:hover, .btn:focus, .btn:active, .btn.active, .btn:active:focus, .btn:active:hover, .btn.active:focus, .btn.active:hover,
+  .navbar .navbar-nav > a.btn:hover,
+  .navbar .navbar-nav > a.btn:focus,
+  .navbar .navbar-nav > a.btn:active,
+  .navbar .navbar-nav > a.btn.active,
+  .navbar .navbar-nav > a.btn:active:focus,
+  .navbar .navbar-nav > a.btn:active:hover,
+  .navbar .navbar-nav > a.btn.active:focus,
+  .navbar .navbar-nav > a.btn.active:hover {
+    background-color: #263148 !important;
+    background-image: linear-gradient(to bottom left, #344675, #263148, #344675) !important;
+    background-image: -moz-linear-gradient(to bottom left, #344675, #263148, #344675) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn:active,
+  .navbar .navbar-nav > a.btn:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn:not([data-action]):hover,
+  .navbar .navbar-nav > a.btn:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn.disabled, .btn.disabled:hover, .btn.disabled:focus, .btn.disabled.focus, .btn.disabled:active, .btn.disabled.active, .btn:disabled, .btn:disabled:hover, .btn:disabled:focus, .btn:disabled.focus, .btn:disabled:active, .btn:disabled.active, .btn[disabled], .btn[disabled]:hover, .btn[disabled]:focus, .btn[disabled].focus, .btn[disabled]:active, .btn[disabled].active,
+  fieldset[disabled] .btn,
+  fieldset[disabled] .btn:hover,
+  fieldset[disabled] .btn:focus,
+  fieldset[disabled] .btn.focus,
+  fieldset[disabled] .btn:active,
+  fieldset[disabled] .btn.active,
+  .navbar .navbar-nav > a.btn.disabled,
+  .navbar .navbar-nav > a.btn.disabled:hover,
+  .navbar .navbar-nav > a.btn.disabled:focus,
+  .navbar .navbar-nav > a.btn.disabled.focus,
+  .navbar .navbar-nav > a.btn.disabled:active,
+  .navbar .navbar-nav > a.btn.disabled.active,
+  .navbar .navbar-nav > a.btn:disabled,
+  .navbar .navbar-nav > a.btn:disabled:hover,
+  .navbar .navbar-nav > a.btn:disabled:focus,
+  .navbar .navbar-nav > a.btn:disabled.focus,
+  .navbar .navbar-nav > a.btn:disabled:active,
+  .navbar .navbar-nav > a.btn:disabled.active,
+  .navbar .navbar-nav > a.btn[disabled],
+  .navbar .navbar-nav > a.btn[disabled]:hover,
+  .navbar .navbar-nav > a.btn[disabled]:focus,
+  .navbar .navbar-nav > a.btn[disabled].focus,
+  .navbar .navbar-nav > a.btn[disabled]:active,
+  .navbar .navbar-nav > a.btn[disabled].active,
+  fieldset[disabled]
+  .navbar .navbar-nav > a.btn,
+  fieldset[disabled]
+  .navbar .navbar-nav > a.btn:hover,
+  fieldset[disabled]
+  .navbar .navbar-nav > a.btn:focus,
+  fieldset[disabled]
+  .navbar .navbar-nav > a.btn.focus,
+  fieldset[disabled]
+  .navbar .navbar-nav > a.btn:active,
+  fieldset[disabled]
+  .navbar .navbar-nav > a.btn.active {
+    background-color: #344675;
+    border-color: #344675; }
+  .btn.btn-simple,
+  .navbar .navbar-nav > a.btn.btn-simple {
+    color: #344675;
+    border-color: #344675;
+    background: transparent; }
+    .btn.btn-simple:hover, .btn.btn-simple:focus, .btn.btn-simple:active, .btn.btn-simple:not(:disabled):not(.disabled):active,
+    .navbar .navbar-nav > a.btn.btn-simple:hover,
+    .navbar .navbar-nav > a.btn.btn-simple:focus,
+    .navbar .navbar-nav > a.btn.btn-simple:active,
+    .navbar .navbar-nav > a.btn.btn-simple:not(:disabled):not(.disabled):active {
+      color: #344675;
+      border-color: #344675;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn.btn-simple.active,
+    .navbar .navbar-nav > a.btn.btn-simple.active {
+      border-color: #344675 !important; }
+      .btn.btn-simple.active:hover, .btn.btn-simple.active:focus, .btn.btn-simple.active:active, .btn.btn-simple.active:not(:disabled):not(.disabled):active,
+      .navbar .navbar-nav > a.btn.btn-simple.active:hover,
+      .navbar .navbar-nav > a.btn.btn-simple.active:focus,
+      .navbar .navbar-nav > a.btn.btn-simple.active:active,
+      .navbar .navbar-nav > a.btn.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #344675;
+        background-image: linear-gradient(to bottom left, #344675, #263148, #344675) !important;
+        background-image: -moz-linear-gradient(to bottom left, #344675, #263148, #344675) !important;
+        background-color: #263148 !important;
+        box-shadow: none; }
+  .btn.btn-link,
+  .navbar .navbar-nav > a.btn.btn-link {
+    color: #344675; }
+    .btn.btn-link:hover, .btn.btn-link:focus, .btn.btn-link:active,
+    .navbar .navbar-nav > a.btn.btn-link:hover,
+    .navbar .navbar-nav > a.btn.btn-link:focus,
+    .navbar .navbar-nav > a.btn.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+  .btn:hover, .btn:focus,
+  .navbar .navbar-nav > a.btn:hover,
+  .navbar .navbar-nav > a.btn:focus {
+    opacity: 1;
+    filter: alpha(opacity=100);
+    outline: 0 !important; }
+  .btn:active, .btn.active,
+  .open > .btn.dropdown-toggle,
+  .navbar .navbar-nav > a.btn:active,
+  .navbar .navbar-nav > a.btn.active,
+  .open >
+  .navbar .navbar-nav > a.btn.dropdown-toggle {
+    box-shadow: none;
+    outline: 0 !important; }
+  .btn .badge,
+  .navbar .navbar-nav > a.btn .badge {
+    margin: 0; }
+  .btn.btn-icon,
+  .navbar .navbar-nav > a.btn.btn-icon {
+    height: 2.375rem;
+    min-width: 2.375rem;
+    width: 2.375rem;
+    padding: 0;
+    font-size: 0.9375rem;
+    overflow: hidden;
+    position: relative;
+    line-height: normal; }
+    .btn.btn-icon.btn-simple,
+    .navbar .navbar-nav > a.btn.btn-icon.btn-simple {
+      padding: 0; }
+    .btn.btn-icon.btn-sm, .btn-group-sm > .btn.btn-icon,
+    .navbar .navbar-nav > a.btn.btn-icon.btn-sm,
+    .navbar .btn-group-sm.navbar-nav > a.btn.btn-icon {
+      height: 1.875rem;
+      min-width: 1.875rem;
+      width: 1.875rem; }
+      .btn.btn-icon.btn-sm .fa, .btn-group-sm > .btn.btn-icon .fa,
+      .btn.btn-icon.btn-sm .far,
+      .btn-group-sm > .btn.btn-icon .far,
+      .btn.btn-icon.btn-sm .fas,
+      .btn-group-sm > .btn.btn-icon .fas,
+      .btn.btn-icon.btn-sm .tim-icons,
+      .btn-group-sm > .btn.btn-icon .tim-icons,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-sm .fa,
+      .navbar .btn-group-sm.navbar-nav > a.btn.btn-icon .fa,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-sm .far,
+      .navbar .btn-group-sm.navbar-nav > a.btn.btn-icon .far,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-sm .fas,
+      .navbar .btn-group-sm.navbar-nav > a.btn.btn-icon .fas,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-sm .tim-icons,
+      .navbar .btn-group-sm.navbar-nav > a.btn.btn-icon .tim-icons {
+        font-size: 0.6875rem; }
+    .btn.btn-icon.btn-lg, .btn-group-lg > .btn.btn-icon,
+    .navbar .navbar-nav > a.btn.btn-icon.btn-lg,
+    .navbar .btn-group-lg.navbar-nav > a.btn.btn-icon {
+      height: 3.6rem;
+      min-width: 3.6rem;
+      width: 3.6rem; }
+      .btn.btn-icon.btn-lg .fa, .btn-group-lg > .btn.btn-icon .fa,
+      .btn.btn-icon.btn-lg .far,
+      .btn-group-lg > .btn.btn-icon .far,
+      .btn.btn-icon.btn-lg .fas,
+      .btn-group-lg > .btn.btn-icon .fas,
+      .btn.btn-icon.btn-lg .tim-icons,
+      .btn-group-lg > .btn.btn-icon .tim-icons,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-lg .fa,
+      .navbar .btn-group-lg.navbar-nav > a.btn.btn-icon .fa,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-lg .far,
+      .navbar .btn-group-lg.navbar-nav > a.btn.btn-icon .far,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-lg .fas,
+      .navbar .btn-group-lg.navbar-nav > a.btn.btn-icon .fas,
+      .navbar .navbar-nav > a.btn.btn-icon.btn-lg .tim-icons,
+      .navbar .btn-group-lg.navbar-nav > a.btn.btn-icon .tim-icons {
+        font-size: 1.325rem; }
+    .btn.btn-icon:not(.btn-footer) .tim-icons,
+    .btn.btn-icon:not(.btn-footer) .fa,
+    .btn.btn-icon:not(.btn-footer) .far,
+    .btn.btn-icon:not(.btn-footer) .fas,
+    .navbar .navbar-nav > a.btn.btn-icon:not(.btn-footer) .tim-icons,
+    .navbar .navbar-nav > a.btn.btn-icon:not(.btn-footer) .fa,
+    .navbar .navbar-nav > a.btn.btn-icon:not(.btn-footer) .far,
+    .navbar .navbar-nav > a.btn.btn-icon:not(.btn-footer) .fas {
+      position: absolute;
+      font-size: 1em;
+      top: 50%;
+      left: 50%;
+      transform: translate(-12px, -12px);
+      line-height: 1.5626rem;
+      width: 24px; }
+  .btn:not(.btn-icon) .tim-icons,
+  .navbar .navbar-nav > a.btn:not(.btn-icon) .tim-icons {
+    position: relative;
+    top: 1px; }
+  .btn span,
+  .navbar .navbar-nav > a.btn span {
+    position: relative;
+    display: block; }
+  .btn.btn-link.dropdown-toggle,
+  .navbar .navbar-nav > a.btn.btn-link.dropdown-toggle {
+    color: #9A9A9A; }
+  .btn.dropdown-toggle:after,
+  .navbar .navbar-nav > a.btn.dropdown-toggle:after {
+    margin-left: 30px !important; }
+
+.btn-primary {
+  background: #e14eca;
+  background-image: linear-gradient(to bottom left, #e14eca, #ba54f5, #e14eca);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #e14eca;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #ffffff; }
+  .btn-primary.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary:active:focus, .btn-primary:active:hover, .btn-primary.active:focus, .btn-primary.active:hover {
+    background-color: #ba54f5 !important;
+    background-image: linear-gradient(to bottom left, #e14eca, #ba54f5, #e14eca) !important;
+    background-image: -moz-linear-gradient(to bottom left, #e14eca, #ba54f5, #e14eca) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn-primary:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn-primary:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn-primary.disabled, .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary:disabled, .btn-primary:disabled:hover, .btn-primary:disabled:focus, .btn-primary:disabled.focus, .btn-primary:disabled:active, .btn-primary:disabled.active, .btn-primary[disabled], .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus, .btn-primary[disabled]:active, .btn-primary[disabled].active,
+  fieldset[disabled] .btn-primary,
+  fieldset[disabled] .btn-primary:hover,
+  fieldset[disabled] .btn-primary:focus,
+  fieldset[disabled] .btn-primary.focus,
+  fieldset[disabled] .btn-primary:active,
+  fieldset[disabled] .btn-primary.active {
+    background-color: #e14eca;
+    border-color: #e14eca; }
+  .btn-primary.btn-simple {
+    color: #e14eca;
+    border-color: #e14eca;
+    background: transparent; }
+    .btn-primary.btn-simple:hover, .btn-primary.btn-simple:focus, .btn-primary.btn-simple:active, .btn-primary.btn-simple:not(:disabled):not(.disabled):active {
+      color: #e14eca;
+      border-color: #e14eca;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn-primary.btn-simple.active {
+      border-color: #e14eca !important; }
+      .btn-primary.btn-simple.active:hover, .btn-primary.btn-simple.active:focus, .btn-primary.btn-simple.active:active, .btn-primary.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #e14eca;
+        background-image: linear-gradient(to bottom left, #e14eca, #ba54f5, #e14eca) !important;
+        background-image: -moz-linear-gradient(to bottom left, #e14eca, #ba54f5, #e14eca) !important;
+        background-color: #ba54f5 !important;
+        box-shadow: none; }
+  .btn-primary.btn-link {
+    color: #e14eca; }
+    .btn-primary.btn-link:hover, .btn-primary.btn-link:focus, .btn-primary.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+
+.btn-success {
+  background: #00f2c3;
+  background-image: linear-gradient(to bottom left, #00f2c3, #0098f0, #00f2c3);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #00f2c3;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #ffffff; }
+  .btn-success.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success:active:focus, .btn-success:active:hover, .btn-success.active:focus, .btn-success.active:hover {
+    background-color: #0098f0 !important;
+    background-image: linear-gradient(to bottom left, #00f2c3, #0098f0, #00f2c3) !important;
+    background-image: -moz-linear-gradient(to bottom left, #00f2c3, #0098f0, #00f2c3) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn-success:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn-success:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success:disabled, .btn-success:disabled:hover, .btn-success:disabled:focus, .btn-success:disabled.focus, .btn-success:disabled:active, .btn-success:disabled.active, .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled].focus, .btn-success[disabled]:active, .btn-success[disabled].active,
+  fieldset[disabled] .btn-success,
+  fieldset[disabled] .btn-success:hover,
+  fieldset[disabled] .btn-success:focus,
+  fieldset[disabled] .btn-success.focus,
+  fieldset[disabled] .btn-success:active,
+  fieldset[disabled] .btn-success.active {
+    background-color: #00f2c3;
+    border-color: #00f2c3; }
+  .btn-success.btn-simple {
+    color: #00f2c3;
+    border-color: #00f2c3;
+    background: transparent; }
+    .btn-success.btn-simple:hover, .btn-success.btn-simple:focus, .btn-success.btn-simple:active, .btn-success.btn-simple:not(:disabled):not(.disabled):active {
+      color: #00f2c3;
+      border-color: #00f2c3;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn-success.btn-simple.active {
+      border-color: #00f2c3 !important; }
+      .btn-success.btn-simple.active:hover, .btn-success.btn-simple.active:focus, .btn-success.btn-simple.active:active, .btn-success.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #00f2c3;
+        background-image: linear-gradient(to bottom left, #00f2c3, #0098f0, #00f2c3) !important;
+        background-image: -moz-linear-gradient(to bottom left, #00f2c3, #0098f0, #00f2c3) !important;
+        background-color: #0098f0 !important;
+        box-shadow: none; }
+  .btn-success.btn-link {
+    color: #00f2c3; }
+    .btn-success.btn-link:hover, .btn-success.btn-link:focus, .btn-success.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+
+.btn-info {
+  background: #1d8cf8;
+  background-image: linear-gradient(to bottom left, #1d8cf8, #3358f4, #1d8cf8);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #1d8cf8;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #ffffff; }
+  .btn-info.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info:active:focus, .btn-info:active:hover, .btn-info.active:focus, .btn-info.active:hover {
+    background-color: #3358f4 !important;
+    background-image: linear-gradient(to bottom left, #1d8cf8, #3358f4, #1d8cf8) !important;
+    background-image: -moz-linear-gradient(to bottom left, #1d8cf8, #3358f4, #1d8cf8) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn-info:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn-info:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info:disabled, .btn-info:disabled:hover, .btn-info:disabled:focus, .btn-info:disabled.focus, .btn-info:disabled:active, .btn-info:disabled.active, .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled].focus, .btn-info[disabled]:active, .btn-info[disabled].active,
+  fieldset[disabled] .btn-info,
+  fieldset[disabled] .btn-info:hover,
+  fieldset[disabled] .btn-info:focus,
+  fieldset[disabled] .btn-info.focus,
+  fieldset[disabled] .btn-info:active,
+  fieldset[disabled] .btn-info.active {
+    background-color: #1d8cf8;
+    border-color: #1d8cf8; }
+  .btn-info.btn-simple {
+    color: #1d8cf8;
+    border-color: #1d8cf8;
+    background: transparent; }
+    .btn-info.btn-simple:hover, .btn-info.btn-simple:focus, .btn-info.btn-simple:active, .btn-info.btn-simple:not(:disabled):not(.disabled):active {
+      color: #1d8cf8;
+      border-color: #1d8cf8;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn-info.btn-simple.active {
+      border-color: #1d8cf8 !important; }
+      .btn-info.btn-simple.active:hover, .btn-info.btn-simple.active:focus, .btn-info.btn-simple.active:active, .btn-info.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #1d8cf8;
+        background-image: linear-gradient(to bottom left, #1d8cf8, #3358f4, #1d8cf8) !important;
+        background-image: -moz-linear-gradient(to bottom left, #1d8cf8, #3358f4, #1d8cf8) !important;
+        background-color: #3358f4 !important;
+        box-shadow: none; }
+  .btn-info.btn-link {
+    color: #1d8cf8; }
+    .btn-info.btn-link:hover, .btn-info.btn-link:focus, .btn-info.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+
+.btn-warning {
+  background: #ff8d72;
+  background-image: linear-gradient(to bottom left, #ff8d72, #ff6491, #ff8d72);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #ff8d72;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #ffffff; }
+  .btn-warning.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning:active:focus, .btn-warning:active:hover, .btn-warning.active:focus, .btn-warning.active:hover {
+    background-color: #ff6491 !important;
+    background-image: linear-gradient(to bottom left, #ff8d72, #ff6491, #ff8d72) !important;
+    background-image: -moz-linear-gradient(to bottom left, #ff8d72, #ff6491, #ff8d72) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn-warning:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn-warning:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning:disabled, .btn-warning:disabled:hover, .btn-warning:disabled:focus, .btn-warning:disabled.focus, .btn-warning:disabled:active, .btn-warning:disabled.active, .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled].focus, .btn-warning[disabled]:active, .btn-warning[disabled].active,
+  fieldset[disabled] .btn-warning,
+  fieldset[disabled] .btn-warning:hover,
+  fieldset[disabled] .btn-warning:focus,
+  fieldset[disabled] .btn-warning.focus,
+  fieldset[disabled] .btn-warning:active,
+  fieldset[disabled] .btn-warning.active {
+    background-color: #ff8d72;
+    border-color: #ff8d72; }
+  .btn-warning.btn-simple {
+    color: #ff8d72;
+    border-color: #ff8d72;
+    background: transparent; }
+    .btn-warning.btn-simple:hover, .btn-warning.btn-simple:focus, .btn-warning.btn-simple:active, .btn-warning.btn-simple:not(:disabled):not(.disabled):active {
+      color: #ff8d72;
+      border-color: #ff8d72;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn-warning.btn-simple.active {
+      border-color: #ff8d72 !important; }
+      .btn-warning.btn-simple.active:hover, .btn-warning.btn-simple.active:focus, .btn-warning.btn-simple.active:active, .btn-warning.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #ff8d72;
+        background-image: linear-gradient(to bottom left, #ff8d72, #ff6491, #ff8d72) !important;
+        background-image: -moz-linear-gradient(to bottom left, #ff8d72, #ff6491, #ff8d72) !important;
+        background-color: #ff6491 !important;
+        box-shadow: none; }
+  .btn-warning.btn-link {
+    color: #ff8d72; }
+    .btn-warning.btn-link:hover, .btn-warning.btn-link:focus, .btn-warning.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+  .btn-warning:not(:disabled):not(.disabled):active {
+    color: #ffffff; }
+
+.btn-danger {
+  background: #fd5d93;
+  background-image: linear-gradient(to bottom left, #fd5d93, #ec250d, #fd5d93);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #fd5d93;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #ffffff; }
+  .btn-danger.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger:active:focus, .btn-danger:active:hover, .btn-danger.active:focus, .btn-danger.active:hover {
+    background-color: #ec250d !important;
+    background-image: linear-gradient(to bottom left, #fd5d93, #ec250d, #fd5d93) !important;
+    background-image: -moz-linear-gradient(to bottom left, #fd5d93, #ec250d, #fd5d93) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn-danger:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn-danger:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger:disabled, .btn-danger:disabled:hover, .btn-danger:disabled:focus, .btn-danger:disabled.focus, .btn-danger:disabled:active, .btn-danger:disabled.active, .btn-danger[disabled], .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled].focus, .btn-danger[disabled]:active, .btn-danger[disabled].active,
+  fieldset[disabled] .btn-danger,
+  fieldset[disabled] .btn-danger:hover,
+  fieldset[disabled] .btn-danger:focus,
+  fieldset[disabled] .btn-danger.focus,
+  fieldset[disabled] .btn-danger:active,
+  fieldset[disabled] .btn-danger.active {
+    background-color: #fd5d93;
+    border-color: #fd5d93; }
+  .btn-danger.btn-simple {
+    color: #fd5d93;
+    border-color: #fd5d93;
+    background: transparent; }
+    .btn-danger.btn-simple:hover, .btn-danger.btn-simple:focus, .btn-danger.btn-simple:active, .btn-danger.btn-simple:not(:disabled):not(.disabled):active {
+      color: #fd5d93;
+      border-color: #fd5d93;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn-danger.btn-simple.active {
+      border-color: #fd5d93 !important; }
+      .btn-danger.btn-simple.active:hover, .btn-danger.btn-simple.active:focus, .btn-danger.btn-simple.active:active, .btn-danger.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #fd5d93;
+        background-image: linear-gradient(to bottom left, #fd5d93, #ec250d, #fd5d93) !important;
+        background-image: -moz-linear-gradient(to bottom left, #fd5d93, #ec250d, #fd5d93) !important;
+        background-color: #ec250d !important;
+        box-shadow: none; }
+  .btn-danger.btn-link {
+    color: #fd5d93; }
+    .btn-danger.btn-link:hover, .btn-danger.btn-link:focus, .btn-danger.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+
+.btn-neutral {
+  background: #ffffff;
+  background-image: linear-gradient(to bottom left, #ffffff, #ffffff, #ffffff);
+  background-size: 210% 210%;
+  background-position: top right;
+  background-color: #ffffff;
+  transition: all 0.15s ease;
+  box-shadow: none;
+  color: #e14eca; }
+  .btn-neutral.animation-on-hover:hover {
+    background-position: bottom left;
+    transition: 0.3s ease-in-out; }
+  .btn-neutral:hover, .btn-neutral:focus, .btn-neutral:active, .btn-neutral.active, .btn-neutral:active:focus, .btn-neutral:active:hover, .btn-neutral.active:focus, .btn-neutral.active:hover {
+    background-color: #ffffff !important;
+    background-image: linear-gradient(to bottom left, #ffffff, #ffffff, #ffffff) !important;
+    background-image: -moz-linear-gradient(to bottom left, #ffffff, #ffffff, #ffffff) !important;
+    color: #ffffff;
+    box-shadow: none; }
+  .btn-neutral:active {
+    box-shadow: none !important;
+    transform: translateY(1px) !important;
+    transition: all .15s ease; }
+  .btn-neutral:not([data-action]):hover {
+    box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+    transform: translateY(-1px);
+    -webkit-transform: translateY(-1px); }
+  .btn-neutral.disabled, .btn-neutral.disabled:hover, .btn-neutral.disabled:focus, .btn-neutral.disabled.focus, .btn-neutral.disabled:active, .btn-neutral.disabled.active, .btn-neutral:disabled, .btn-neutral:disabled:hover, .btn-neutral:disabled:focus, .btn-neutral:disabled.focus, .btn-neutral:disabled:active, .btn-neutral:disabled.active, .btn-neutral[disabled], .btn-neutral[disabled]:hover, .btn-neutral[disabled]:focus, .btn-neutral[disabled].focus, .btn-neutral[disabled]:active, .btn-neutral[disabled].active,
+  fieldset[disabled] .btn-neutral,
+  fieldset[disabled] .btn-neutral:hover,
+  fieldset[disabled] .btn-neutral:focus,
+  fieldset[disabled] .btn-neutral.focus,
+  fieldset[disabled] .btn-neutral:active,
+  fieldset[disabled] .btn-neutral.active {
+    background-color: #ffffff;
+    border-color: #ffffff; }
+  .btn-neutral.btn-danger {
+    color: #fd5d93; }
+    .btn-neutral.btn-danger:hover, .btn-neutral.btn-danger:focus, .btn-neutral.btn-danger:active, .btn-neutral.btn-danger:active:focus {
+      color: #ec250d; }
+  .btn-neutral.btn-info {
+    color: #1d8cf8; }
+    .btn-neutral.btn-info:hover, .btn-neutral.btn-info:focus, .btn-neutral.btn-info:active, .btn-neutral.btn-info:active:focus {
+      color: #3358f4; }
+  .btn-neutral.btn-warning {
+    color: #ff8d72; }
+    .btn-neutral.btn-warning:hover, .btn-neutral.btn-warning:focus, .btn-neutral.btn-warning:active, .btn-neutral.btn-warning:active:focus {
+      color: #ff6491; }
+  .btn-neutral.btn-success {
+    color: #00f2c3; }
+    .btn-neutral.btn-success:hover, .btn-neutral.btn-success:focus, .btn-neutral.btn-success:active, .btn-neutral.btn-success:active:focus {
+      color: #0098f0; }
+  .btn-neutral.btn-default {
+    color: #344675; }
+    .btn-neutral.btn-default:hover, .btn-neutral.btn-default:focus, .btn-neutral.btn-default:active, .btn-neutral.btn-default:active:focus {
+      color: #263148; }
+  .btn-neutral.active, .btn-neutral:active, .btn-neutral:active:focus, .btn-neutral:active:hover, .btn-neutral.active:focus, .btn-neutral.active:hover,
+  .show > .btn-neutral.dropdown-toggle,
+  .show > .btn-neutral.dropdown-toggle:focus,
+  .show > .btn-neutral.dropdown-toggle:hover {
+    background-color: #ffffff;
+    color: #ba54f5;
+    box-shadow: none; }
+  .btn-neutral:hover, .btn-neutral:focus {
+    color: #ba54f5; }
+    .btn-neutral:hover:not(.nav-link), .btn-neutral:focus:not(.nav-link) {
+      box-shadow: none; }
+  .btn-neutral.btn-simple {
+    color: #ffffff;
+    border-color: #ffffff;
+    background: transparent; }
+    .btn-neutral.btn-simple:hover, .btn-neutral.btn-simple:focus, .btn-neutral.btn-simple:active, .btn-neutral.btn-simple:not(:disabled):not(.disabled):active {
+      color: #ffffff;
+      border-color: #ffffff;
+      background-color: transparent !important;
+      background-image: none !important;
+      box-shadow: none; }
+    .btn-neutral.btn-simple.active {
+      border-color: #ffffff !important; }
+      .btn-neutral.btn-simple.active:hover, .btn-neutral.btn-simple.active:focus, .btn-neutral.btn-simple.active:active, .btn-neutral.btn-simple.active:not(:disabled):not(.disabled):active {
+        color: #ffffff;
+        border-color: #ffffff;
+        background-image: linear-gradient(to bottom left, #ffffff, #ffffff, #ffffff) !important;
+        background-image: -moz-linear-gradient(to bottom left, #ffffff, #ffffff, #ffffff) !important;
+        background-color: #ffffff !important;
+        box-shadow: none; }
+  .btn-neutral.btn-link {
+    color: #ffffff; }
+    .btn-neutral.btn-link:hover, .btn-neutral.btn-link:focus, .btn-neutral.btn-link:active {
+      background-color: transparent !important;
+      background-image: none !important;
+      color: #ffffff !important;
+      text-decoration: none;
+      box-shadow: none; }
+
+.btn:disabled, .btn[disabled], .btn.disabled {
+  opacity: 0.5;
+  filter: alpha(opacity=50);
+  pointer-events: none; }
+
+.btn-simple {
+  border: 1px solid;
+  border-color: #344675;
+  box-shadow: none;
+  padding: 10px 22px;
+  background-color: transparent; }
+
+.btn-simple.disabled, .btn-simple.disabled:hover, .btn-simple.disabled:focus, .btn-simple.disabled.focus, .btn-simple.disabled:active, .btn-simple.disabled.active, .btn-simple:disabled, .btn-simple:disabled:hover, .btn-simple:disabled:focus, .btn-simple:disabled.focus, .btn-simple:disabled:active, .btn-simple:disabled.active, .btn-simple[disabled], .btn-simple[disabled]:hover, .btn-simple[disabled]:focus, .btn-simple[disabled].focus, .btn-simple[disabled]:active, .btn-simple[disabled].active,
+fieldset[disabled] .btn-simple,
+fieldset[disabled] .btn-simple:hover,
+fieldset[disabled] .btn-simple:focus,
+fieldset[disabled] .btn-simple.focus,
+fieldset[disabled] .btn-simple:active,
+fieldset[disabled] .btn-simple.active,
+.btn-link.disabled,
+.btn-link.disabled:hover,
+.btn-link.disabled:focus,
+.btn-link.disabled.focus,
+.btn-link.disabled:active,
+.btn-link.disabled.active,
+.btn-link:disabled,
+.btn-link:disabled:hover,
+.btn-link:disabled:focus,
+.btn-link:disabled.focus,
+.btn-link:disabled:active,
+.btn-link:disabled.active,
+.btn-link[disabled],
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus,
+.btn-link[disabled].focus,
+.btn-link[disabled]:active,
+.btn-link[disabled].active,
+fieldset[disabled]
+.btn-link,
+fieldset[disabled]
+.btn-link:hover,
+fieldset[disabled]
+.btn-link:focus,
+fieldset[disabled]
+.btn-link.focus,
+fieldset[disabled]
+.btn-link:active,
+fieldset[disabled]
+.btn-link.active {
+  background: transparent; }
+
+.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {
+  box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4); }
+
+.btn-link {
+  border: 0;
+  box-shadow: none;
+  padding: 0.5rem 0.7rem;
+  background: transparent;
+  color: #e3e3e3;
+  font-weight: 600; }
+  .btn-link:hover {
+    box-shadow: none !important;
+    transform: none !important; }
+
+.btn-lg, .btn-group-lg > .btn {
+  font-size: 0.875rem;
+  border-radius: 0.4285rem;
+  padding: 15px 48px; }
+  .btn-lg.btn-simple, .btn-group-lg > .btn-simple.btn {
+    padding: 14px 47px; }
+
+.btn-sm, .btn-group-sm > .btn {
+  font-size: 0.875rem;
+  border-radius: 0.2857rem;
+  padding: 5px 15px; }
+  .btn-sm.btn-simple, .btn-group-sm > .btn-simple.btn {
+    padding: 4px 14px; }
+
+.btn-wd {
+  min-width: 140px; }
+
+.btn-group.select {
+  width: 100%; }
+
+.btn-group .btn.active {
+  box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+  transform: translateY(-1px);
+  -webkit-transform: translateY(-1px); }
+
+.btn-group.select .btn {
+  text-align: left; }
+
+.btn-group.select .caret {
+  position: absolute;
+  top: 50%;
+  margin-top: -1px;
+  right: 8px; }
+
+.btn-group .btn.active {
+  box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.4);
+  transform: translateY(-1px);
+  -webkit-transform: translateY(-1px); }
+
+.btn-round {
+  border-width: 1px;
+  border-radius: 30px; }
+  .btn-round.btn-simple {
+    padding: 10px 22px; }
+
+.no-caret.dropdown-toggle::after {
+  display: none; }
+
+.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
+.show > .btn-secondary.dropdown-toggle {
+  color: #ffffff; }
+
+.btn-group label.btn.active {
+  transform: translateY(0);
+  -webkit-transform: translateY(0); }
+
+.dropdown-menu {
+  border: 0;
+  box-shadow: 0px 10px 50px 0px rgba(0, 0, 0, 0.2);
+  border-radius: 0.1428rem;
+  transition: all 150ms linear; }
+  .dropdown-menu.dropdown-menu-right:before, .dropdown-menu.dropdown-menu-right:after {
+    left: auto;
+    right: 10px; }
+  .dropdown-menu.dropdown-black {
+    background: linear-gradient(to bottom, #222a42 0%, #1d253b 100%);
+    border: 1px solid #344675; }
+    .dropdown-menu.dropdown-black .dropdown-item {
+      color: rgba(255, 255, 255, 0.7); }
+    .dropdown-menu.dropdown-black .dropdown-divider {
+      border-color: #344675; }
+    .dropdown-menu.dropdown-black:before {
+      color: #222a42;
+      z-index: 2; }
+    .dropdown-menu.dropdown-black:after {
+      display: inline-block;
+      position: absolute;
+      width: 0;
+      height: 0;
+      z-index: 1;
+      vertical-align: middle;
+      content: "";
+      top: -6px;
+      left: 10px;
+      right: auto;
+      color: #344675;
+      border-bottom: .4em solid;
+      border-right: .4em solid transparent;
+      border-left: .4em solid transparent; }
+    .dropdown-menu.dropdown-black.dropdown-menu-right:after {
+      left: auto;
+      right: 10px; }
+    .dropup .dropdown-menu.dropdown-black:after {
+      color: #1d253b;
+      z-index: 2; }
+    .dropup .dropdown-menu.dropdown-black:before {
+      display: inline-block;
+      position: absolute;
+      width: 0;
+      height: 0;
+      vertical-align: middle;
+      content: "";
+      top: auto;
+      bottom: -6px;
+      right: auto;
+      left: 10px;
+      color: #555555;
+      border-top: .4em solid;
+      border-right: .4em solid transparent;
+      border-left: .4em solid transparent;
+      border-bottom: none;
+      z-index: 1; }
+  .dropdown-menu i {
+    margin-right: 5px;
+    position: relative;
+    top: 1px; }
+  .dropdown-menu .tim-icons {
+    margin-right: 10px;
+    position: relative;
+    top: 4px;
+    font-size: 18px;
+    margin-top: -5px;
+    opacity: .5; }
+  .dropdown-menu .dropdown-item.active, .dropdown-menu .dropdown-item:active {
+    color: inherit; }
+  .dropup .dropdown-menu:before {
+    display: none; }
+  .dropup .dropdown-menu:after {
+    display: inline-block;
+    position: absolute;
+    width: 0;
+    height: 0;
+    vertical-align: middle;
+    content: "";
+    top: auto;
+    bottom: -5px;
+    right: auto;
+    left: 10px;
+    color: #ffffff;
+    border-top: .4em solid;
+    border-right: .4em solid transparent;
+    border-left: .4em solid transparent;
+    border-bottom: none; }
+  .dropup .dropdown-menu.dropdown-menu-right:after, .dropup .dropdown-menu.dropdown-menu-right:before {
+    right: 10px;
+    left: auto; }
+  .dropdown-menu:before {
+    display: inline-block;
+    position: absolute;
+    width: 0;
+    height: 0;
+    vertical-align: middle;
+    content: "";
+    top: -5px;
+    left: 10px;
+    right: auto;
+    color: #ffffff;
+    border-bottom: .4em solid;
+    border-right: .4em solid transparent;
+    border-left: .4em solid transparent; }
+  .dropdown-menu.dropdown-menu-right {
+    right: 0 !important;
+    left: auto !important; }
+  .dropdown-menu .dropdown-item,
+  .bootstrap-select .dropdown-menu.inner li a {
+    font-size: 0.75rem;
+    padding-top: .6rem;
+    padding-bottom: .6rem;
+    margin-top: 5px;
+    transition: all 150ms linear; }
+    .dropdown-menu .dropdown-item:hover, .dropdown-menu .dropdown-item:focus,
+    .bootstrap-select .dropdown-menu.inner li a:hover,
+    .bootstrap-select .dropdown-menu.inner li a:focus {
+      background-color: rgba(222, 222, 222, 0.3); }
+    .dropdown-menu .dropdown-item.disabled, .dropdown-menu .dropdown-item:disabled,
+    .bootstrap-select .dropdown-menu.inner li a.disabled,
+    .bootstrap-select .dropdown-menu.inner li a:disabled {
+      color: rgba(182, 182, 182, 0.6); }
+      .dropdown-menu .dropdown-item.disabled:hover, .dropdown-menu .dropdown-item.disabled:focus, .dropdown-menu .dropdown-item:disabled:hover, .dropdown-menu .dropdown-item:disabled:focus,
+      .bootstrap-select .dropdown-menu.inner li a.disabled:hover,
+      .bootstrap-select .dropdown-menu.inner li a.disabled:focus,
+      .bootstrap-select .dropdown-menu.inner li a:disabled:hover,
+      .bootstrap-select .dropdown-menu.inner li a:disabled:focus {
+        background-color: transparent;
+        box-shadow: none; }
+  .dropdown-menu .dropdown-divider {
+    background-color: rgba(222, 222, 222, 0.5); }
+  .dropdown-menu .dropdown-header:not([href]):not([tabindex]) {
+    color: rgba(182, 182, 182, 0.6);
+    font-size: 0.62475rem;
+    text-transform: uppercase;
+    font-weight: 600; }
+  .dropdown-menu.dropdown-primary {
+    background-color: #df41c6; }
+    .dropdown-menu.dropdown-primary:before {
+      color: #df41c6; }
+    .dropdown-menu.dropdown-primary .dropdown-header:not([href]):not([tabindex]) {
+      color: rgba(255, 255, 255, 0.8); }
+    .dropdown-menu.dropdown-primary .dropdown-item {
+      color: #ffffff; }
+      .dropdown-menu.dropdown-primary .dropdown-item:hover, .dropdown-menu.dropdown-primary .dropdown-item:focus {
+        background-color: rgba(255, 255, 255, 0.2); }
+    .dropdown-menu.dropdown-primary .dropdown-divider {
+      background-color: rgba(255, 255, 255, 0.2); }
+  .dropdown-menu.dropdown-info {
+    background-color: #0e84f8; }
+    .dropdown-menu.dropdown-info:before {
+      color: #0e84f8; }
+    .dropdown-menu.dropdown-info .dropdown-header:not([href]):not([tabindex]) {
+      color: rgba(255, 255, 255, 0.8); }
+    .dropdown-menu.dropdown-info .dropdown-item {
+      color: #ffffff; }
+      .dropdown-menu.dropdown-info .dropdown-item:hover, .dropdown-menu.dropdown-info .dropdown-item:focus {
+        background-color: rgba(255, 255, 255, 0.2); }
+    .dropdown-menu.dropdown-info .dropdown-divider {
+      background-color: rgba(255, 255, 255, 0.2); }
+  .dropdown-menu.dropdown-danger {
+    background-color: #fd4e89; }
+    .dropdown-menu.dropdown-danger:before {
+      color: #fd4e89; }
+    .dropdown-menu.dropdown-danger .dropdown-header:not([href]):not([tabindex]) {
+      color: rgba(255, 255, 255, 0.8); }
+    .dropdown-menu.dropdown-danger .dropdown-item {
+      color: #ffffff; }
+      .dropdown-menu.dropdown-danger .dropdown-item:hover, .dropdown-menu.dropdown-danger .dropdown-item:focus {
+        background-color: rgba(255, 255, 255, 0.2); }
+    .dropdown-menu.dropdown-danger .dropdown-divider {
+      background-color: rgba(255, 255, 255, 0.2); }
+  .dropdown-menu.dropdown-success {
+    background-color: #00e3b7; }
+    .dropdown-menu.dropdown-success:before {
+      color: #00e3b7; }
+    .dropdown-menu.dropdown-success .dropdown-header:not([href]):not([tabindex]) {
+      color: rgba(255, 255, 255, 0.8); }
+    .dropdown-menu.dropdown-success .dropdown-item {
+      color: #ffffff; }
+      .dropdown-menu.dropdown-success .dropdown-item:hover, .dropdown-menu.dropdown-success .dropdown-item:focus {
+        background-color: rgba(255, 255, 255, 0.2); }
+    .dropdown-menu.dropdown-success .dropdown-divider {
+      background-color: rgba(255, 255, 255, 0.2); }
+  .dropdown-menu.dropdown-warning {
+    background-color: #ff8163; }
+    .dropdown-menu.dropdown-warning:before {
+      color: #ff8163; }
+    .dropdown-menu.dropdown-warning .dropdown-header:not([href]):not([tabindex]) {
+      color: rgba(255, 255, 255, 0.8); }
+    .dropdown-menu.dropdown-warning .dropdown-item {
+      color: #ffffff; }
+      .dropdown-menu.dropdown-warning .dropdown-item:hover, .dropdown-menu.dropdown-warning .dropdown-item:focus {
+        background-color: rgba(255, 255, 255, 0.2); }
+    .dropdown-menu.dropdown-warning .dropdown-divider {
+      background-color: rgba(255, 255, 255, 0.2); }
+  .dropdown .dropdown-menu,
+  .dropup:not(.bootstrap-select) .dropdown-menu,
+  .bootstrap-select .dropdown-menu:not(.inner), .dropdown-menu.bootstrap-datetimepicker-widget.bottom {
+    transform: translate3d(0, -20px, 0) !important;
+    visibility: hidden;
+    display: block;
+    opacity: 0;
+    filter: alpha(opacity=0);
+    top: 100% !important; }
+  .dropdown-menu.bootstrap-datetimepicker-widget.top {
+    transform: translate3d(0, -20px, 0) !important;
+    visibility: hidden;
+    display: block;
+    opacity: 0;
+    filter: alpha(opacity=0); }
+  .dropdown-menu.bootstrap-datetimepicker-widget.top, .dropdown-menu.bootstrap-datetimepicker-widget.bottom {
+    transform: translate3d(0, -20px, 0) !important; }
+  .bootstrap-select.dropup .dropdown-menu:not(.inner) {
+    transform: translate3d(0, 25px, 0) !important; }
+  .dropup:not(.bootstrap-select) .dropdown-menu {
+    transform: translate3d(0, 20px, 0) !important;
+    top: auto !important;
+    bottom: 100%; }
+  .dropdown.show .dropdown-menu,
+  .bootstrap-select.show .dropdown-menu:not(.inner), .dropdown-menu.bootstrap-datetimepicker-widget.top.open, .dropdown-menu.bootstrap-datetimepicker-widget.bottom.open,
+  .dropup.show:not(.bootstrap-select) .dropdown-menu,
+  .navbar .dropdown.show .dropdown-menu {
+    opacity: 1;
+    filter: alpha(opacity=100);
+    visibility: visible;
+    transform: translate3d(0, 1px, 0) !important; }
+  .dropdown-menu.bootstrap-datetimepicker-widget.top.open, .dropdown-menu.bootstrap-datetimepicker-widget.bottom.open {
+    transform: translate3d(0, 0px, 0) !important; }
+  .dropup.show:not(.bootstrap-select) .dropdown-menu {
+    transform: translate3d(0, -2px, 0) !important; }
+  .dropdown-menu.dropdown-navbar {
+    left: -80px; }
+    .dropdown-menu.dropdown-navbar:before, .dropdown-menu.dropdown-navbar:after {
+      left: auto;
+      right: 17px; }
+
+.btn {
+  cursor: pointer; }
+  .btn.dropdown-toggle[data-toggle="dropdown"] {
+    padding: 10px;
+    margin: 0;
+    margin-bottom: 5px; }
+    .btn.dropdown-toggle[data-toggle="dropdown"]:after {
+      content: "";
+      margin-left: 5px; }
+  .btn span.bs-caret {
+    display: none; }
+  .btn.btn-link.dropdown-toggle {
+    height: 22px;
+    padding: 0;
+    margin-right: 5px; }
+
+.dropdown-toggle:after {
+  content: unset; }
+
+.btn:not(:disabled):not(.disabled).active:focus,
+.btn:not(:disabled):not(.disabled):active:focus,
+.show > .btn.dropdown-toggle:focus {
+  box-shadow: none; }
+
+.dropdown-menu-sm {
+  min-width: 100px;
+  border: 0.4285rem; }
+
+.dropdown-menu-lg {
+  min-width: 260px;
+  border-radius: 0.4285rem; }
+
+.dropdown-menu-xl {
+  min-width: 450px;
+  border-radius: 0.4285rem; }
+
+@media screen and (max-width: 991px) {
+  .dropdown-toggle:after {
+    display: inline-block;
+    width: 0;
+    height: 0;
+    margin-left: .255em;
+    vertical-align: .255em;
+    content: "";
+    border-top: .3em solid;
+    border-right: .3em solid transparent;
+    border-bottom: 0;
+    border-left: .3em solid transparent; } }
+
+@media screen and (min-width: 992px) {
+  .dropdown-menu .dropdown-item {
+    color: #9A9A9A; } }
+
+.footer {
+  padding: 24px 0 24px 250px; }
+  .footer [class*="container-"] {
+    padding: 0; }
+  .footer .nav {
+    display: inline-block;
+    float: left;
+    margin-bottom: 0;
+    padding-left: 30px;
+    list-style: none; }
+  .footer .nav-item {
+    display: inline-block; }
+    .footer .nav-item:first-child a {
+      padding-left: 0; }
+  .footer .nav-link {
+    color: #ffffff;
+    padding: 0 0.5rem;
+    font-size: 0.75rem;
+    text-transform: uppercase;
+    text-decoration: none; }
+    .footer .nav-link:hover {
+      text-decoration: none; }
+  .footer .copyright {
+    font-size: 0.75rem;
+    line-height: 1.8;
+    color: #ffffff; }
+  .footer:after {
+    display: table;
+    clear: both;
+    content: " "; }
+
+@media screen and (max-width: 991px) {
+  .footer {
+    padding-left: 0px; }
+    .footer .copyright {
+      text-align: right;
+      margin-right: 15px; } }
+
+@media screen and (min-width: 992px) {
+  .footer .copyright {
+    float: right;
+    padding-right: 30px; } }
+
+@media screen and (max-width: 768px) {
+  .footer nav {
+    display: block;
+    margin-bottom: 5px;
+    float: none; } }
+
+@media screen and (max-width: 576px) {
+  .footer {
+    text-align: center; }
+    .footer .copyright {
+      text-align: center; }
+    .footer .nav {
+      float: none;
+      padding-left: 0; } }
+
+/* Form controls */
+.form-control::-moz-placeholder {
+  color: #6c757c;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.form-control:-moz-placeholder {
+  color: #6c757c;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.form-control::-webkit-input-placeholder {
+  color: #6c757c;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.form-control:-ms-input-placeholder {
+  color: #6c757c;
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.form-control {
+  border-color: #2b3553;
+  border-radius: 0.4285rem;
+  font-size: 0.75rem;
+  transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; }
+  .form-control:focus {
+    border-color: #e14eca;
+    background-color: transparent;
+    box-shadow: none; }
+    .form-control:focus + .input-group-append .input-group-text,
+    .form-control:focus ~ .input-group-append .input-group-text,
+    .form-control:focus + .input-group-prepend .input-group-text,
+    .form-control:focus ~ .input-group-prepend .input-group-text {
+      border: 1px solid #e14eca;
+      border-left: none;
+      background-color: transparent; }
+  .has-success .form-control,
+  .has-error .form-control,
+  .has-success .form-control:focus,
+  .has-error .form-control:focus {
+    box-shadow: none; }
+  .has-danger .form-control.form-control-success, .has-danger .form-control.form-control-danger,
+  .has-success .form-control.form-control-success,
+  .has-success .form-control.form-control-danger {
+    background-image: none; }
+  .form-control + .form-control-feedback {
+    border-radius: 0.4285rem;
+    margin-top: -7px;
+    position: absolute;
+    right: 10px;
+    top: 50%;
+    vertical-align: middle; }
+  .open .form-control {
+    border-radius: 0.4285rem 0.4285rem 0 0;
+    border-bottom-color: transparent; }
+  .form-control + .input-group-append .input-group-text,
+  .form-control + .input-group-prepend .input-group-text {
+    background-color: #ffffff; }
+
+.has-success .input-group-append .input-group-text,
+.has-success .input-group-prepend .input-group-text,
+.has-success .form-control {
+  border-color: #2b3553; }
+
+.has-success .form-control:focus,
+.has-success.input-group-focus .input-group-append .input-group-text,
+.has-success.input-group-focus .input-group-prepend .input-group-text {
+  border-color: #00bf9a; }
+
+.has-danger .form-control,
+.has-danger .input-group-append .input-group-text,
+.has-danger .input-group-prepend .input-group-text,
+.has-danger.input-group-focus .input-group-prepend .input-group-text,
+.has-danger.input-group-focus .input-group-append .input-group-text {
+  border-color: #f33620;
+  color: #ec250d;
+  background-color: rgba(222, 222, 222, 0.1); }
+  .has-danger .form-control:focus,
+  .has-danger .input-group-append .input-group-text:focus,
+  .has-danger .input-group-prepend .input-group-text:focus,
+  .has-danger.input-group-focus .input-group-prepend .input-group-text:focus,
+  .has-danger.input-group-focus .input-group-append .input-group-text:focus {
+    background-color: transparent; }
+
+.has-success:after,
+.has-danger:after {
+  font-family: 'nucleo';
+  content: "\ea1b";
+  display: inline-block;
+  position: absolute;
+  right: 20px;
+  top: 13px;
+  color: #00f2c3;
+  font-size: 11px; }
+
+.has-success.form-control-lg:after,
+.has-danger.form-control-lg:after {
+  font-size: 13px;
+  top: 24px; }
+
+.has-success.has-label:after,
+.has-danger.has-label:after {
+  top: 37px; }
+
+.has-success.form-check:after,
+.has-danger.form-check:after {
+  display: none !important; }
+
+.has-success.form-check .form-check-label,
+.has-danger.form-check .form-check-label {
+  color: #00f2c3; }
+
+.has-danger:after {
+  content: "\ea48";
+  color: #ec250d; }
+
+.has-danger.form-check .form-check-label {
+  color: #ec250d; }
+
+img {
+  max-width: 100%;
+  border-radius: 0.2857rem; }
+
+.img-raised {
+  box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); }
+
+.modal-content {
+  border: 0; }
+  .modal-content .modal-header {
+    border-bottom: none; }
+    .modal-content .modal-header button {
+      position: absolute;
+      right: 27px;
+      top: 24px;
+      outline: 0;
+      padding: 1rem;
+      margin: -1rem -1rem -1rem auto; }
+    .modal-content .modal-header .title {
+      color: #222a42;
+      margin-top: 5px;
+      margin-bottom: 0; }
+    .modal-content .modal-header .modal-title {
+      color: #222a42; }
+    .modal-content .modal-header i.tim-icons {
+      font-size: 16px; }
+  .modal-content .modal-body {
+    line-height: 1.9; }
+    .modal-content .modal-body p {
+      color: #222a42; }
+  .modal-content .modal-footer {
+    border-top: 0;
+    /* Safari 6.1+ */
+    justify-content: space-between; }
+    .modal-content .modal-footer button {
+      margin: 0;
+      padding-left: 16px;
+      padding-right: 16px;
+      width: auto; }
+      .modal-content .modal-footer button.pull-left {
+        padding-left: 5px;
+        padding-right: 5px;
+        position: relative;
+        left: -5px; }
+  .modal-content .modal-body + .modal-footer {
+    padding-top: 0; }
+
+.modal-backdrop {
+  background: rgba(0, 0, 0, 0.3); }
+
+.modal.modal-default .modal-content {
+  background-color: #ffffff;
+  color: #222a42; }
+
+.modal.modal-default .modal-body p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-default .form-control::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-default .form-control:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-default .form-control::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-default .form-control:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-default .form-control {
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+  .modal.modal-default .form-control:focus {
+    border-color: #ffffff;
+    background-color: transparent;
+    color: #ffffff; }
+
+.modal.modal-default .has-success:after,
+.modal.modal-default .has-danger:after {
+  color: #ffffff; }
+
+.modal.modal-default .has-danger .form-control {
+  background-color: transparent; }
+
+.modal.modal-default .input-group-prepend {
+  margin-right: 0; }
+
+.modal.modal-default .input-group-prepend .input-group-text,
+.modal.modal-default .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+
+.modal.modal-default .input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-default .input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  border-color: #ffffff;
+  color: #ffffff; }
+
+.modal.modal-default .form-group.no-border .form-control,
+.modal.modal-default .input-group.no-border .form-control {
+  background-color: rgba(30, 30, 47, 0.2);
+  color: #ffffff; }
+  .modal.modal-default .form-group.no-border .form-control:focus, .modal.modal-default .form-group.no-border .form-control:active, .modal.modal-default .form-group.no-border .form-control:active,
+  .modal.modal-default .input-group.no-border .form-control:focus,
+  .modal.modal-default .input-group.no-border .form-control:active,
+  .modal.modal-default .input-group.no-border .form-control:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-default .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-default .form-group.no-border .form-control + .input-group-append .input-group-text,
+.modal.modal-default .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-default .input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2); }
+  .modal.modal-default .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus, .modal.modal-default .form-group.no-border .form-control + .input-group-prepend .input-group-text:active, .modal.modal-default .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-default .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-default .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-default .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-default .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .modal.modal-default .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-default .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-default .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-default .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-default .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-default .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-default .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.modal.modal-default .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-default .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-default .form-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-default .form-group.no-border .input-group-append .input-group-text,
+.modal.modal-default .input-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-default .input-group.no-border .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border: none;
+  color: #ffffff; }
+
+.modal.modal-default .form-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-default .form-group.no-border.input-group-focus .input-group-append .input-group-text,
+.modal.modal-default .input-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-default .input-group.no-border.input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-primary .modal-content {
+  background-color: #e14eca;
+  color: #ffffff; }
+
+.modal.modal-primary .modal-body p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-primary .form-control::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-primary .form-control:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-primary .form-control::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-primary .form-control:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-primary .form-control {
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+  .modal.modal-primary .form-control:focus {
+    border-color: #ffffff;
+    background-color: transparent;
+    color: #ffffff; }
+
+.modal.modal-primary .has-success:after,
+.modal.modal-primary .has-danger:after {
+  color: #ffffff; }
+
+.modal.modal-primary .has-danger .form-control {
+  background-color: transparent; }
+
+.modal.modal-primary .input-group-prepend {
+  margin-right: 0; }
+
+.modal.modal-primary .input-group-prepend .input-group-text,
+.modal.modal-primary .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+
+.modal.modal-primary .input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-primary .input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  border-color: #ffffff;
+  color: #ffffff; }
+
+.modal.modal-primary .form-group.no-border .form-control,
+.modal.modal-primary .input-group.no-border .form-control {
+  background-color: rgba(30, 30, 47, 0.2);
+  color: #ffffff; }
+  .modal.modal-primary .form-group.no-border .form-control:focus, .modal.modal-primary .form-group.no-border .form-control:active, .modal.modal-primary .form-group.no-border .form-control:active,
+  .modal.modal-primary .input-group.no-border .form-control:focus,
+  .modal.modal-primary .input-group.no-border .form-control:active,
+  .modal.modal-primary .input-group.no-border .form-control:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-primary .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-primary .form-group.no-border .form-control + .input-group-append .input-group-text,
+.modal.modal-primary .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-primary .input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2); }
+  .modal.modal-primary .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus, .modal.modal-primary .form-group.no-border .form-control + .input-group-prepend .input-group-text:active, .modal.modal-primary .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-primary .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-primary .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-primary .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-primary .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .modal.modal-primary .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-primary .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-primary .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-primary .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-primary .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-primary .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-primary .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.modal.modal-primary .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-primary .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-primary .form-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-primary .form-group.no-border .input-group-append .input-group-text,
+.modal.modal-primary .input-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-primary .input-group.no-border .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border: none;
+  color: #ffffff; }
+
+.modal.modal-primary .form-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-primary .form-group.no-border.input-group-focus .input-group-append .input-group-text,
+.modal.modal-primary .input-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-primary .input-group.no-border.input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-danger .modal-content {
+  background-color: #fd5d93;
+  color: #ffffff; }
+
+.modal.modal-danger .modal-body p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-danger .form-control::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-danger .form-control:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-danger .form-control::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-danger .form-control:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-danger .form-control {
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+  .modal.modal-danger .form-control:focus {
+    border-color: #ffffff;
+    background-color: transparent;
+    color: #ffffff; }
+
+.modal.modal-danger .has-success:after,
+.modal.modal-danger .has-danger:after {
+  color: #ffffff; }
+
+.modal.modal-danger .has-danger .form-control {
+  background-color: transparent; }
+
+.modal.modal-danger .input-group-prepend {
+  margin-right: 0; }
+
+.modal.modal-danger .input-group-prepend .input-group-text,
+.modal.modal-danger .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+
+.modal.modal-danger .input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-danger .input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  border-color: #ffffff;
+  color: #ffffff; }
+
+.modal.modal-danger .form-group.no-border .form-control,
+.modal.modal-danger .input-group.no-border .form-control {
+  background-color: rgba(30, 30, 47, 0.2);
+  color: #ffffff; }
+  .modal.modal-danger .form-group.no-border .form-control:focus, .modal.modal-danger .form-group.no-border .form-control:active, .modal.modal-danger .form-group.no-border .form-control:active,
+  .modal.modal-danger .input-group.no-border .form-control:focus,
+  .modal.modal-danger .input-group.no-border .form-control:active,
+  .modal.modal-danger .input-group.no-border .form-control:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-danger .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-danger .form-group.no-border .form-control + .input-group-append .input-group-text,
+.modal.modal-danger .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-danger .input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2); }
+  .modal.modal-danger .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus, .modal.modal-danger .form-group.no-border .form-control + .input-group-prepend .input-group-text:active, .modal.modal-danger .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-danger .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-danger .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-danger .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-danger .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .modal.modal-danger .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-danger .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-danger .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-danger .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-danger .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-danger .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-danger .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.modal.modal-danger .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-danger .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-danger .form-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-danger .form-group.no-border .input-group-append .input-group-text,
+.modal.modal-danger .input-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-danger .input-group.no-border .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border: none;
+  color: #ffffff; }
+
+.modal.modal-danger .form-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-danger .form-group.no-border.input-group-focus .input-group-append .input-group-text,
+.modal.modal-danger .input-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-danger .input-group.no-border.input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-warning .modal-content {
+  background-color: #ff8d72;
+  color: #ffffff; }
+
+.modal.modal-warning .modal-body p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-warning .form-control::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-warning .form-control:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-warning .form-control::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-warning .form-control:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-warning .form-control {
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+  .modal.modal-warning .form-control:focus {
+    border-color: #ffffff;
+    background-color: transparent;
+    color: #ffffff; }
+
+.modal.modal-warning .has-success:after,
+.modal.modal-warning .has-danger:after {
+  color: #ffffff; }
+
+.modal.modal-warning .has-danger .form-control {
+  background-color: transparent; }
+
+.modal.modal-warning .input-group-prepend {
+  margin-right: 0; }
+
+.modal.modal-warning .input-group-prepend .input-group-text,
+.modal.modal-warning .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+
+.modal.modal-warning .input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-warning .input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  border-color: #ffffff;
+  color: #ffffff; }
+
+.modal.modal-warning .form-group.no-border .form-control,
+.modal.modal-warning .input-group.no-border .form-control {
+  background-color: rgba(30, 30, 47, 0.2);
+  color: #ffffff; }
+  .modal.modal-warning .form-group.no-border .form-control:focus, .modal.modal-warning .form-group.no-border .form-control:active, .modal.modal-warning .form-group.no-border .form-control:active,
+  .modal.modal-warning .input-group.no-border .form-control:focus,
+  .modal.modal-warning .input-group.no-border .form-control:active,
+  .modal.modal-warning .input-group.no-border .form-control:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-warning .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-warning .form-group.no-border .form-control + .input-group-append .input-group-text,
+.modal.modal-warning .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-warning .input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2); }
+  .modal.modal-warning .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus, .modal.modal-warning .form-group.no-border .form-control + .input-group-prepend .input-group-text:active, .modal.modal-warning .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-warning .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-warning .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-warning .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-warning .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .modal.modal-warning .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-warning .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-warning .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-warning .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-warning .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-warning .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-warning .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.modal.modal-warning .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-warning .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-warning .form-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-warning .form-group.no-border .input-group-append .input-group-text,
+.modal.modal-warning .input-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-warning .input-group.no-border .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border: none;
+  color: #ffffff; }
+
+.modal.modal-warning .form-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-warning .form-group.no-border.input-group-focus .input-group-append .input-group-text,
+.modal.modal-warning .input-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-warning .input-group.no-border.input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-success .modal-content {
+  background-color: #00f2c3;
+  color: #ffffff; }
+
+.modal.modal-success .modal-body p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-success .form-control::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-success .form-control:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-success .form-control::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-success .form-control:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-success .form-control {
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+  .modal.modal-success .form-control:focus {
+    border-color: #ffffff;
+    background-color: transparent;
+    color: #ffffff; }
+
+.modal.modal-success .has-success:after,
+.modal.modal-success .has-danger:after {
+  color: #ffffff; }
+
+.modal.modal-success .has-danger .form-control {
+  background-color: transparent; }
+
+.modal.modal-success .input-group-prepend {
+  margin-right: 0; }
+
+.modal.modal-success .input-group-prepend .input-group-text,
+.modal.modal-success .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+
+.modal.modal-success .input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-success .input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  border-color: #ffffff;
+  color: #ffffff; }
+
+.modal.modal-success .form-group.no-border .form-control,
+.modal.modal-success .input-group.no-border .form-control {
+  background-color: rgba(30, 30, 47, 0.2);
+  color: #ffffff; }
+  .modal.modal-success .form-group.no-border .form-control:focus, .modal.modal-success .form-group.no-border .form-control:active, .modal.modal-success .form-group.no-border .form-control:active,
+  .modal.modal-success .input-group.no-border .form-control:focus,
+  .modal.modal-success .input-group.no-border .form-control:active,
+  .modal.modal-success .input-group.no-border .form-control:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-success .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-success .form-group.no-border .form-control + .input-group-append .input-group-text,
+.modal.modal-success .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-success .input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2); }
+  .modal.modal-success .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus, .modal.modal-success .form-group.no-border .form-control + .input-group-prepend .input-group-text:active, .modal.modal-success .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-success .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-success .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-success .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-success .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .modal.modal-success .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-success .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-success .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-success .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-success .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-success .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-success .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.modal.modal-success .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-success .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-success .form-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-success .form-group.no-border .input-group-append .input-group-text,
+.modal.modal-success .input-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-success .input-group.no-border .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border: none;
+  color: #ffffff; }
+
+.modal.modal-success .form-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-success .form-group.no-border.input-group-focus .input-group-append .input-group-text,
+.modal.modal-success .input-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-success .input-group.no-border.input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-info .modal-content {
+  background-color: #1d8cf8;
+  color: #ffffff; }
+
+.modal.modal-info .modal-body p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-info .form-control::-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-info .form-control:-moz-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-info .form-control::-webkit-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-info .form-control:-ms-input-placeholder {
+  color: rgba(255, 255, 255, 0.4);
+  opacity: 1;
+  filter: alpha(opacity=100); }
+
+.modal.modal-info .form-control {
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+  .modal.modal-info .form-control:focus {
+    border-color: #ffffff;
+    background-color: transparent;
+    color: #ffffff; }
+
+.modal.modal-info .has-success:after,
+.modal.modal-info .has-danger:after {
+  color: #ffffff; }
+
+.modal.modal-info .has-danger .form-control {
+  background-color: transparent; }
+
+.modal.modal-info .input-group-prepend {
+  margin-right: 0; }
+
+.modal.modal-info .input-group-prepend .input-group-text,
+.modal.modal-info .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border-color: rgba(255, 255, 255, 0.5);
+  color: #ffffff; }
+
+.modal.modal-info .input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-info .input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  border-color: #ffffff;
+  color: #ffffff; }
+
+.modal.modal-info .form-group.no-border .form-control,
+.modal.modal-info .input-group.no-border .form-control {
+  background-color: rgba(30, 30, 47, 0.2);
+  color: #ffffff; }
+  .modal.modal-info .form-group.no-border .form-control:focus, .modal.modal-info .form-group.no-border .form-control:active, .modal.modal-info .form-group.no-border .form-control:active,
+  .modal.modal-info .input-group.no-border .form-control:focus,
+  .modal.modal-info .input-group.no-border .form-control:active,
+  .modal.modal-info .input-group.no-border .form-control:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-info .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-info .form-group.no-border .form-control + .input-group-append .input-group-text,
+.modal.modal-info .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.modal.modal-info .input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2); }
+  .modal.modal-info .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus, .modal.modal-info .form-group.no-border .form-control + .input-group-prepend .input-group-text:active, .modal.modal-info .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-info .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-info .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-info .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-info .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .modal.modal-info .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-info .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .modal.modal-info .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .modal.modal-info .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .modal.modal-info .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    background-color: rgba(30, 30, 47, 0.3);
+    color: #ffffff; }
+
+.modal.modal-info .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-info .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.modal.modal-info .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.modal.modal-info .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal.modal-info .form-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-info .form-group.no-border .input-group-append .input-group-text,
+.modal.modal-info .input-group.no-border .input-group-prepend .input-group-text,
+.modal.modal-info .input-group.no-border .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.2);
+  border: none;
+  color: #ffffff; }
+
+.modal.modal-info .form-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-info .form-group.no-border.input-group-focus .input-group-append .input-group-text,
+.modal.modal-info .input-group.no-border.input-group-focus .input-group-prepend .input-group-text,
+.modal.modal-info .input-group.no-border.input-group-focus .input-group-append .input-group-text {
+  background-color: rgba(30, 30, 47, 0.3);
+  color: #ffffff; }
+
+.modal .modal-header .close {
+  color: #fd5d93;
+  text-shadow: none; }
+  .modal .modal-header .close:hover, .modal .modal-header .close:focus {
+    opacity: 1; }
+
+.modal.modal-black .modal-content {
+  background: linear-gradient(to bottom, #222a42 0%, #1d253b 100%);
+  color: rgba(255, 255, 255, 0.8); }
+  .modal.modal-black .modal-content .modal-header .modal-title, .modal.modal-black .modal-content .modal-header .title {
+    color: rgba(255, 255, 255, 0.9); }
+  .modal.modal-black .modal-content .modal-body p {
+    color: rgba(255, 255, 255, 0.8); }
+
+.modal.modal-black h1, .modal.modal-black h2, .modal.modal-black h3, .modal.modal-black h4, .modal.modal-black h5, .modal.modal-black h6, .modal.modal-black p {
+  color: #ffffff; }
+
+.modal-search .modal-dialog {
+  margin: 20px auto;
+  max-width: 650px; }
+  .modal-search .modal-dialog input {
+    border: none;
+    font-size: 17px;
+    font-weight: 100; }
+  .modal-search .modal-dialog span {
+    font-size: 35px;
+    color: #b7b7b7; }
+
+.modal-search .modal-content .modal-header {
+  padding: 24px; }
+
+.modal-search .modal-header .close {
+  color: #555555;
+  top: 30px !important; }
+
+.modal-search .modal-footer {
+  border-top: 2px solid #f9f9f9;
+  margin: 0px 25px 20px; }
+
+.navbar {
+  padding: 10px 30px 10px 15px;
+  width: 100%;
+  z-index: 1050;
+  background: #1a1e34; }
+  .navbar .photo {
+    display: inline-block;
+    height: 30px;
+    width: 30px;
+    border-radius: 50%;
+    vertical-align: middle;
+    overflow: hidden; }
+    .navbar .photo img {
+      width: 100%; }
+  .navbar .navbar-wrapper {
+    display: flex;
+    align-items: center; }
+  .navbar .navbar-text {
+    color: #ffffff; }
+  .navbar .btn {
+    margin: 0 5px 0 10px; }
+  .navbar.navbar-absolute {
+    position: absolute;
+    z-index: 1050; }
+  .navbar.navbar-transparent {
+    background: transparent !important; }
+  .navbar.bg-white .navbar-nav .search-bar.input-group i {
+    color: #222a42; }
+  .navbar.bg-white .navbar-nav .search-bar.input-group .form-control {
+    background: rgba(34, 42, 66, 0.1);
+    border-radius: 4px; }
+  .navbar.bg-white .navbar-nav a.nav-link {
+    color: #222a42 !important; }
+    .navbar.bg-white .navbar-nav a.nav-link p {
+      color: #222a42; }
+  .navbar.bg-white .navbar-text, .navbar.bg-white .navbar-brand {
+    color: #222a42; }
+  .navbar.bg-white .form-control {
+    color: #222a42 !important; }
+  .navbar.bg-white .form-control::placeholder {
+    color: #9A9A9A !important; }
+  .navbar.bg-dark {
+    background: #222a42 !important; }
+  .navbar.bg-primary {
+    background-color: #e14eca !important; }
+  .navbar.bg-warning {
+    background-color: #ff8d72 !important; }
+  .navbar.bg-info {
+    background-color: #1d8cf8 !important; }
+  .navbar.bg-success {
+    background-color: #00bf9a !important; }
+  .navbar.bg-danger {
+    background-color: #fd5d93 !important; }
+  .navbar .navbar-brand {
+    position: fixed;
+    padding-top: .3125rem;
+    padding-bottom: .3125rem;
+    color: #ffffff;
+    margin-left: 17px;
+    margin-top: 3px;
+    text-transform: uppercase;
+    font-size: 1rem; }
+  .navbar .navbar-toggle button:focus, .navbar .navbar-toggler {
+    outline: none; }
+
+.navbar-minimize-fixed {
+  position: fixed;
+  margin-left: 40px;
+  margin-top: 14px;
+  transition: 0.3s ease;
+  color: white;
+  z-index: 20;
+  opacity: 0;
+  transition: 0.2s ease; }
+  .navbar-minimize-fixed button i {
+    font-size: 20px; }
+
+.notification {
+  background: #fd5d93;
+  color: #ffffff;
+  border-radius: 0.875rem;
+  height: 6px;
+  width: 6px;
+  position: absolute;
+  text-align: center;
+  font-size: 12px;
+  font-weight: 800;
+  top: 10px;
+  right: 10px;
+  border: 1px solid #fd5d93; }
+
+.navbar-nav li {
+  padding: 0 10px; }
+  .navbar-nav li a {
+    color: #ffffff; }
+  .navbar-nav li i {
+    vertical-align: middle;
+    font-size: 20px; }
+
+@media screen and (max-width: 991px) {
+  .navbar .container-fluid {
+    padding-right: 15px;
+    padding-left: 15px; }
+  .navbar .navbar-collapse .input-group {
+    margin: 0;
+    margin-top: 5px; }
+  .navbar .navbar-nav .btn {
+    margin-left: -3px;
+    display: flex; }
+    .navbar .navbar-nav .btn i {
+      margin-right: 12px; }
+    .navbar .navbar-nav .btn span {
+      margin: 0;
+      text-transform: uppercase;
+      font-weight: 300; }
+      .navbar .navbar-nav .btn span, .navbar .navbar-nav .btn span:hover, .navbar .navbar-nav .btn span:focus, .navbar .navbar-nav .btn span:active, .navbar .navbar-nav .btn span:active:focus {
+        color: #222a42 !important; }
+  .navbar .navbar-nav a.nav-link i {
+    opacity: 1;
+    margin-left: 4px;
+    margin-right: 5px; }
+  .navbar .navbar-nav a.nav-link p {
+    display: inline-block;
+    text-transform: uppercase;
+    margin-left: 7px; }
+  .navbar .navbar-nav .modal-search .modal-dialog {
+    padding: 0 40px; }
+  .navbar .navbar-nav .dropdown {
+    margin: 5px 0; }
+    .navbar .navbar-nav .dropdown .nav-link {
+      padding-bottom: 0; }
+    .navbar .navbar-nav .dropdown .dropdown-menu .dropdown-item {
+      margin-top: 0;
+      padding-left: 24px; }
+  .navbar .dropdown.show .dropdown-menu {
+    display: block; }
+  .navbar .dropdown .dropdown-menu {
+    display: none; }
+    .navbar .dropdown .dropdown-menu li a {
+      color: #222a42; }
+  .navbar .dropdown.show .dropdown-menu,
+  .navbar .dropdown .dropdown-menu {
+    background-color: transparent;
+    border: 0;
+    transition: none;
+    box-shadow: none;
+    width: auto;
+    margin: 0px 1rem;
+    margin-top: 0px; }
+    .navbar .dropdown.show .dropdown-menu:before,
+    .navbar .dropdown .dropdown-menu:before {
+      display: none; }
+  .navbar .dropdown-menu .dropdown-item:focus,
+  .navbar .dropdown-menu .dropdown-item:hover {
+    color: #ffffff; }
+  .navbar.bg-white .dropdown-menu .dropdown-item:focus,
+  .navbar.bg-white .dropdown-menu .dropdown-item:hover {
+    color: #344675; }
+  .navbar button.navbar-toggler[data-target="#navigation"] {
+    padding-top: 0; }
+  .navbar .navbar-toggler-bar {
+    display: block;
+    position: relative;
+    width: 22px;
+    height: 1px;
+    border-radius: 1px;
+    background: #ffffff; }
+    .navbar .navbar-toggler-bar.navbar-kebab {
+      height: 4px;
+      width: 4px;
+      margin-bottom: 3px;
+      border-radius: 50%; }
+    .navbar .navbar-toggler-bar + .navbar-toggler-bar {
+      margin-top: 7px; }
+    .navbar .navbar-toggler-bar + .navbar-toggler-bar.navbar-kebab {
+      margin-top: 0px; }
+    .navbar .navbar-toggler-bar.bar2 {
+      width: 17px;
+      transition: width .2s linear; }
+  .navbar.bg-white:not(.navbar-transparent) .navbar-toggler-bar {
+    background-color: #344675; }
+  .navbar .toggled .navbar-toggler-bar {
+    width: 24px; }
+    .navbar .toggled .navbar-toggler-bar + .navbar-toggler-bar {
+      margin-top: 5px; }
+  .navbar .navbar-brand {
+    margin-left: 20px;
+    position: relative; }
+  .navbar-nav .nav-link i.fa,
+  .navbar-nav .nav-link i.tim-icons {
+    opacity: .5; }
+  .bar1,
+  .bar2,
+  .bar3 {
+    outline: 1px solid transparent; }
+  .bar1 {
+    top: 0px;
+    animation: topbar-back 500ms 0s;
+    animation-fill-mode: forwards; }
+  .bar2 {
+    opacity: 1; }
+  .bar3 {
+    bottom: 0px;
+    animation: bottombar-back 500ms 0s;
+    animation-fill-mode: forwards; }
+  .toggled .bar1 {
+    top: 6px;
+    animation: topbar-x 500ms 0s;
+    animation-fill-mode: forwards; }
+  .toggled .bar2 {
+    opacity: 0; }
+  .toggled .bar3 {
+    bottom: 6px;
+    animation: bottombar-x 500ms 0s;
+    animation-fill-mode: forwards; }
+  @keyframes topbar-x {
+    0% {
+      top: 0px;
+      transform: rotate(0deg); }
+    45% {
+      top: 6px;
+      transform: rotate(145deg); }
+    75% {
+      transform: rotate(130deg); }
+    100% {
+      transform: rotate(135deg); } }
+  @keyframes topbar-back {
+    0% {
+      top: 6px;
+      transform: rotate(135deg); }
+    45% {
+      transform: rotate(-10deg); }
+    75% {
+      transform: rotate(5deg); }
+    100% {
+      top: 0px;
+      transform: rotate(0); } }
+  @keyframes bottombar-x {
+    0% {
+      bottom: 0px;
+      transform: rotate(0deg); }
+    45% {
+      bottom: 6px;
+      transform: rotate(-145deg); }
+    75% {
+      transform: rotate(-130deg); }
+    100% {
+      transform: rotate(-135deg); } }
+  @keyframes bottombar-back {
+    0% {
+      bottom: 6px;
+      transform: rotate(-135deg); }
+    45% {
+      transform: rotate(10deg); }
+    75% {
+      transform: rotate(-5deg); }
+    100% {
+      bottom: 0px;
+      transform: rotate(0); } }
+  @keyframes fadeIn {
+    0% {
+      opacity: 0; }
+    100% {
+      opacity: 1; } } }
+
+@media screen and (min-width: 992px) {
+  .navbar-collapse {
+    background: none !important; }
+  .navbar .navbar-toggle {
+    display: none; }
+  .navbar-nav .nav-link.profile-photo {
+    padding: 0;
+    margin: 7px 0.7rem; }
+  .navbar .caret {
+    position: absolute;
+    left: 80%;
+    top: 55%;
+    margin-left: 0; }
+  .navbar-expand-lg .navbar-nav .nav-link {
+    padding-right: 0.5rem;
+    padding-left: 0.5rem; } }
+
+@media screen and (max-width: 576px) {
+  .navbar[class*='navbar-toggleable-'] .container {
+    margin-left: 0;
+    margin-right: 0; } }
+
+body {
+  -moz-osx-font-smoothing: grayscale;
+  -webkit-font-smoothing: antialiased; }
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  line-height: 1.2; }
+
+p {
+  font-weight: 300; }
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: "Poppins", sans-serif; }
+
+.card h1, .card h2, .card h3, .card h4, .card h5, .card h6, .card p {
+  color: rgba(255, 255, 255, 0.8); }
+
+h1, h2, h3, h4, h5, h6 {
+  font-weight: 400;
+  color: rgba(255, 255, 255, 0.8); }
+
+a {
+  color: #ba54f5;
+  font-weight: 300; }
+  a:hover, a:focus {
+    color: #e14eca; }
+
+h1, .h1 {
+  line-height: 1.05;
+  margin-bottom: 30px; }
+  h1 small, .h1 small {
+    font-weight: 600;
+    text-transform: uppercase;
+    opacity: .8; }
+
+h2, .h2 {
+  margin-bottom: 30px;
+  line-height: 1.2; }
+
+h3, .h3 {
+  margin-bottom: 30px;
+  line-height: 1.4em; }
+
+h4, .h4 {
+  line-height: 1.45em;
+  margin-bottom: 15px; }
+  h4 + .category,
+  h4.title + .category, .h4 + .category,
+  .h4.title + .category {
+    margin-top: -10px; }
+
+h5, .h5 {
+  line-height: 1.4em;
+  margin-bottom: 15px; }
+
+h6, .h6 {
+  text-transform: uppercase;
+  font-weight: 600; }
+
+p {
+  color: rgba(255, 255, 255, 0.8);
+  margin-bottom: 5px; }
+  p.description {
+    font-size: 1.14em; }
+
+.title {
+  font-weight: 600; }
+  .title.title-up {
+    text-transform: uppercase; }
+    .title.title-up a {
+      color: #222a42;
+      text-decoration: none; }
+  .title + .category {
+    margin-top: -10px; }
+
+.description,
+.card-description,
+.footer-big p,
+.card .footer .stats {
+  color: #9A9A9A;
+  font-weight: 300; }
+
+.category,
+.card-category {
+  text-transform: capitalize;
+  font-weight: 400;
+  color: rgba(255, 255, 255, 0.6);
+  font-size: 0.75rem; }
+
+.card-category {
+  font-size: 0.75rem; }
+
+.blockquote {
+  border-left: none;
+  border: 1px solid #344675;
+  padding: 20px;
+  font-size: 0.9625rem;
+  line-height: 1.8; }
+  .blockquote small {
+    color: #344675;
+    font-size: 0.75rem;
+    text-transform: uppercase; }
+  .blockquote.blockquote-primary {
+    border-color: #e14eca;
+    color: #e14eca; }
+    .blockquote.blockquote-primary small {
+      color: #e14eca; }
+  .blockquote.blockquote-danger {
+    border-color: #fd5d93;
+    color: #fd5d93; }
+    .blockquote.blockquote-danger small {
+      color: #fd5d93; }
+  .blockquote.blockquote-white {
+    border-color: rgba(255, 255, 255, 0.8);
+    color: #ffffff; }
+    .blockquote.blockquote-white small {
+      color: rgba(255, 255, 255, 0.8); }
+
+ul li, ol li {
+  color: #ffffff; }
+
+pre {
+  color: rgba(255, 255, 255, 0.8); }
+
+hr {
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  margin-top: 1rem;
+  margin-bottom: 1rem; }
+
+.table > tbody > tr > td {
+  color: rgba(255, 255, 255, 0.7) !important; }
+  .table > tbody > tr > td .photo {
+    height: 30px;
+    width: 30px;
+    border-radius: 50%;
+    overflow: hidden;
+    margin: 0 auto; }
+    .table > tbody > tr > td .photo img {
+      width: 100%; }
+
+.table > tbody > tr.table-success > td {
+  background-color: #00bf9a; }
+
+.table > tbody > tr.table-info > td {
+  background-color: #1d8cf8; }
+
+.table > tbody > tr.table-primary > td {
+  background-color: #e14eca; }
+
+.table > tbody > tr.table-warning > td {
+  background-color: #ff8d72; }
+
+.table > tbody > tr.table-danger > td {
+  background-color: #fd5d93; }
+
+.table .img-wrapper {
+  width: 40px;
+  height: 40px;
+  border-radius: 50%;
+  overflow: hidden;
+  margin: 0 auto; }
+
+.table .img-row {
+  max-width: 60px;
+  width: 60px; }
+
+.table .form-check {
+  margin: 0;
+  margin-top: 5px; }
+  .table .form-check label .form-check-sign::before,
+  .table .form-check label .form-check-sign::after {
+    top: -17px;
+    left: 4px; }
+
+.table .btn {
+  margin: 0; }
+
+.table small, .table .small {
+  font-weight: 300; }
+
+.card-tasks .card-body .table {
+  margin-bottom: 0; }
+  .card-tasks .card-body .table > thead > tr > th,
+  .card-tasks .card-body .table > tbody > tr > th,
+  .card-tasks .card-body .table > tfoot > tr > th,
+  .card-tasks .card-body .table > thead > tr > td,
+  .card-tasks .card-body .table > tbody > tr > td,
+  .card-tasks .card-body .table > tfoot > tr > td {
+    padding-top: 5px;
+    padding-bottom: 5px; }
+
+.table > thead > tr > th {
+  border-bottom-width: 1px;
+  font-size: 12px;
+  text-transform: uppercase;
+  font-weight: 700;
+  border: 0;
+  color: rgba(255, 255, 255, 0.7); }
+
+.table .radio,
+.table .checkbox {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding: 0;
+  width: 15px; }
+  .table .radio .icons,
+  .table .checkbox .icons {
+    position: relative; }
+  .table .radio label:after, .table .radio label:before,
+  .table .checkbox label:after,
+  .table .checkbox label:before {
+    top: -17px;
+    left: -3px; }
+
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  border-color: rgba(255, 255, 255, 0.1);
+  padding: 12px 7px;
+  vertical-align: middle; }
+
+.table.table-shopping tbody tr:last-child td {
+  border: none; }
+
+.table .th-description {
+  max-width: 150px; }
+
+.table .td-price {
+  font-size: 26px;
+  font-weight: 300;
+  margin-top: 5px;
+  position: relative;
+  top: 4px;
+  text-align: right; }
+
+.table .td-total {
+  font-weight: 600;
+  font-size: 0.8125rem;
+  padding-top: 20px;
+  text-align: right; }
+
+.table .td-actions .btn {
+  margin: 0px; }
+
+.table > tbody > tr {
+  position: relative; }
+
+.table > tfoot > tr {
+  color: rgba(255, 255, 255, 0.7);
+  text-transform: uppercase; }
+
+.table-responsive {
+  overflow: scroll;
+  padding-bottom: 10px; }
+
+#tables .table-responsive {
+  margin-bottom: 30px; }
+
+table.tablesorter thead tr .header {
+  background-image: url("../img/bg.gif");
+  background-repeat: no-repeat;
+  background-position: center right;
+  cursor: pointer; }
+
+table.tablesorter thead tr .headerSortUp {
+  background-image: url("../img/asc.gif"); }
+
+table.tablesorter thead tr .headerSortDown {
+  background-image: url("../img/desc.gif"); }
+
+.dataTables_wrapper .table-striped tbody tr:nth-of-type(odd) {
+  background-color: rgba(0, 0, 0, 0.05); }
+
+.dataTables_wrapper .form-control-sm {
+  font-size: 10px; }
+
+.form-check {
+  margin-top: .5rem;
+  padding-left: 0; }
+
+.form-check .form-check-label {
+  display: inline-block;
+  position: relative;
+  cursor: pointer;
+  padding-left: 25px;
+  line-height: 18px;
+  margin-bottom: 0;
+  transition: color 0.3s linear; }
+
+.radio .form-check-sign {
+  padding-left: 28px; }
+
+.form-check-radio.form-check-inline .form-check-label {
+  padding-left: 5px;
+  margin-right: 10px; }
+
+.form-check .form-check-sign::before,
+.form-check .form-check-sign::after {
+  content: " ";
+  display: inline-block;
+  position: absolute;
+  width: 17px;
+  height: 17px;
+  left: 0;
+  cursor: pointer;
+  border-radius: 3px;
+  top: 0;
+  border: 1px solid #818181;
+  transition: opacity 0.3s linear; }
+
+.form-check input[type="checkbox"]:checked + .form-check-sign::before,
+.form-check input[type="checkbox"]:checked + .form-check-sign::before {
+  border: none;
+  background-color: #e14eca; }
+
+.form-check .form-check-sign::after {
+  font-family: 'nucleo';
+  content: "\ea1b";
+  top: 0px;
+  text-align: center;
+  font-size: 14px;
+  opacity: 0;
+  color: #ffffff;
+  font-weight: 600;
+  border: 0;
+  background-color: inherit; }
+
+.form-check.disabled .form-check-label,
+.form-check.disabled .form-check-label {
+  color: #9A9A9A;
+  opacity: .5;
+  cursor: not-allowed; }
+
+.form-check input[type="checkbox"],
+.radio input[type="radio"] {
+  opacity: 0;
+  position: absolute;
+  visibility: hidden; }
+
+.form-check input[type="checkbox"]:checked + .form-check-sign::after {
+  opacity: 1;
+  font-size: 10px;
+  margin-top: 0; }
+
+.form-check input[type="checkbox"] + .form-check-sign::after {
+  opacity: 0;
+  font-size: 10px;
+  margin-top: 0; }
+
+.form-control input[type="checkbox"]:disabled + .form-check-sign::before,
+.checkbox input[type="checkbox"]:disabled + .form-check-sign::after {
+  cursor: not-allowed; }
+
+.form-check input[type="checkbox"]:disabled + .form-check-sign,
+.form-check input[type="radio"]:disabled + .form-check-sign {
+  pointer-events: none; }
+
+.form-check-radio .form-check-label {
+  padding-top: 3px; }
+
+.form-check-radio .form-check-sign::before,
+.form-check-radio .form-check-sign::after {
+  content: " ";
+  width: 18px;
+  height: 18px;
+  border-radius: 50%;
+  border: 1px solid #818181;
+  display: inline-block;
+  position: absolute;
+  left: 0px;
+  top: 3px;
+  padding: 1px;
+  transition: opacity 0.3s linear; }
+
+.form-check-radio input[type="radio"] + .form-check-sign:after,
+.form-check-radio input[type="radio"] {
+  opacity: 0; }
+
+.form-check-radio input[type="radio"]:checked + .form-check-sign::after {
+  width: 6px;
+  height: 6px;
+  background-color: #e14eca;
+  border-color: #e14eca;
+  top: 9px;
+  left: 6px;
+  opacity: 1; }
+
+.form-check-radio input[type="radio"]:checked + .form-check-sign::before {
+  border-color: #e14eca; }
+
+.form-check-radio input[type="radio"]:checked + .form-check-sign::after {
+  opacity: 1; }
+
+.form-check-radio input[type="radio"]:disabled + .form-check-sign {
+  color: #9A9A9A; }
+
+.form-check-radio input[type="radio"]:disabled + .form-check-sign::before,
+.form-check-radio input[type="radio"]:disabled + .form-check-sign::after {
+  color: #9A9A9A; }
+
+.fixed-plugin {
+  position: fixed;
+  right: 0;
+  width: 64px;
+  background: rgba(0, 0, 0, 0.3);
+  z-index: 1031;
+  border-radius: 8px 0 0 8px;
+  text-align: center;
+  top: 130px; }
+  .fixed-plugin li > a,
+  .fixed-plugin .badge {
+    transition: all .34s;
+    -webkit-transition: all .34s;
+    -moz-transition: all .34s; }
+  .fixed-plugin .fa-cog {
+    color: #ffffff;
+    padding: 10px;
+    border-radius: 0 0 6px 6px;
+    width: auto; }
+  .fixed-plugin .dropdown-menu {
+    right: 80px;
+    left: auto !important;
+    top: -52px !important;
+    width: 290px;
+    border-radius: 0.1875rem;
+    padding: 0 10px;
+    background: linear-gradient(#222a42, #1d253b); }
+  .fixed-plugin .dropdown .dropdown-menu .tim-icons {
+    top: 5px; }
+  .fixed-plugin .dropdown-menu:after,
+  .fixed-plugin .dropdown-menu:before {
+    right: 10px;
+    margin-left: auto;
+    left: auto; }
+  .fixed-plugin .fa-circle-thin {
+    color: #ffffff; }
+  .fixed-plugin .active .fa-circle-thin {
+    color: #00bbff; }
+  .fixed-plugin .dropdown-menu > .active > a,
+  .fixed-plugin .dropdown-menu > .active > a:hover,
+  .fixed-plugin .dropdown-menu > .active > a:focus {
+    color: #777777;
+    text-align: center; }
+  .fixed-plugin img {
+    border-radius: 0;
+    width: 100%;
+    height: 100px;
+    margin: 0 auto; }
+  .fixed-plugin .dropdown-menu li > a:hover,
+  .fixed-plugin .dropdown-menu li > a:focus {
+    box-shadow: none; }
+  .fixed-plugin .badge {
+    border: 2px solid #ffffff;
+    border-radius: 50%;
+    cursor: pointer;
+    display: inline-block;
+    height: 23px;
+    margin-right: 5px;
+    position: relative;
+    width: 23px; }
+  .fixed-plugin .badge.active,
+  .fixed-plugin .badge:hover {
+    border-color: #1d253b; }
+  .fixed-plugin .light-badge, .fixed-plugin .dark-badge {
+    margin: 0;
+    border: 1px solid #1d8cf8; }
+    .fixed-plugin .light-badge:hover, .fixed-plugin .dark-badge:hover {
+      border: 1px solid #1d8cf8; }
+  .fixed-plugin .light-badge {
+    background: #ffffff; }
+    .fixed-plugin .light-badge:hover {
+      background: #ffffff; }
+  .fixed-plugin .dark-badge {
+    background: #222a42; }
+    .fixed-plugin .dark-badge:hover {
+      background: #222a42; }
+  .fixed-plugin h5 {
+    margin: 10px; }
+  .fixed-plugin .dropdown-menu li {
+    display: block;
+    padding: 18px 2px;
+    width: 25%;
+    float: left; }
+  .fixed-plugin li.adjustments-line,
+  .fixed-plugin li.header-title,
+  .fixed-plugin li.button-container {
+    width: 100%;
+    height: 50px;
+    min-height: inherit; }
+  .fixed-plugin li.button-container {
+    height: auto; }
+    .fixed-plugin li.button-container div {
+      margin-bottom: 5px; }
+  .fixed-plugin #sharrreTitle {
+    text-align: center;
+    padding: 10px 0;
+    height: 50px; }
+  .fixed-plugin li.header-title {
+    color: #ffffff;
+    height: 30px;
+    line-height: 25px;
+    font-size: 12px;
+    font-weight: 600;
+    text-align: center;
+    text-transform: uppercase; }
+  .fixed-plugin .adjustments-line a {
+    color: transparent; }
+    .fixed-plugin .adjustments-line a .badge-colors {
+      position: relative;
+      top: -2px; }
+    .fixed-plugin .adjustments-line a a:hover,
+    .fixed-plugin .adjustments-line a a:focus {
+      color: transparent; }
+  .fixed-plugin .adjustments-line .togglebutton {
+    text-align: center; }
+    .fixed-plugin .adjustments-line .togglebutton .label-switch {
+      position: relative;
+      left: -10px;
+      font-size: 0.62475rem;
+      color: #ffffff; }
+      .fixed-plugin .adjustments-line .togglebutton .label-switch.label-right {
+        left: 10px; }
+    .fixed-plugin .adjustments-line .togglebutton .toggle {
+      margin-right: 0; }
+  .fixed-plugin .adjustments-line .color-label {
+    position: relative;
+    top: -7px;
+    font-size: 0.62475rem;
+    color: #ffffff; }
+  .fixed-plugin .adjustments-line .dropdown-menu > li.adjustments-line > a {
+    padding-right: 0;
+    padding-left: 0;
+    border-bottom: 1px solid #ddd;
+    border-radius: 0;
+    margin: 0; }
+  .fixed-plugin .dropdown-menu > li > a.img-holder {
+    font-size: 1rem;
+    text-align: center;
+    border-radius: 10px;
+    background-color: #ffffff;
+    border: 3px solid #ffffff;
+    padding-left: 0;
+    padding-right: 0;
+    opacity: 1;
+    cursor: pointer;
+    display: block;
+    max-height: 100px;
+    overflow: hidden;
+    padding: 0; }
+    .fixed-plugin .dropdown-menu > li > a.img-holder img {
+      margin-top: auto; }
+  .fixed-plugin .dropdown-menu > li a.switch-trigger:hover,
+  .fixed-plugin .dropdown-menu > li > a.switch-trigger:focus {
+    background-color: transparent; }
+  .fixed-plugin .dropdown-menu > li:hover > a.img-holder, .fixed-plugin .dropdown-menu > li:focus > a.img-holder {
+    border-color: rgba(0, 187, 255, 0.53); }
+  .fixed-plugin .dropdown-menu > .active > a.img-holder,
+  .fixed-plugin .dropdown-menu > .active > a.img-holder {
+    border-color: #00bbff;
+    background-color: #ffffff; }
+  .fixed-plugin .btn-social {
+    width: 50%;
+    display: block;
+    width: 48%;
+    float: left;
+    font-weight: 600; }
+  .fixed-plugin .btn-social i {
+    margin-right: 5px; }
+  .fixed-plugin .btn-social:first-child {
+    margin-right: 2%; }
+  .fixed-plugin .dropdown .dropdown-menu {
+    transform: translateY(-15%);
+    top: 27px;
+    opacity: 0;
+    transform-origin: 0 0; }
+    .fixed-plugin .dropdown .dropdown-menu:before {
+      border-bottom: 0.4em solid rgba(0, 0, 0, 0);
+      border-left: 0.4em solid rgba(0, 0, 0, 0.2);
+      border-top: 0.4em solid rgba(0, 0, 0, 0);
+      right: -16px;
+      top: 46px; }
+    .fixed-plugin .dropdown .dropdown-menu:after {
+      border-bottom: 0.4em solid rgba(0, 0, 0, 0);
+      border-left: 0.4em solid #222a42;
+      border-top: 0.4em solid rgba(0, 0, 0, 0);
+      right: -16px; }
+    .fixed-plugin .dropdown .dropdown-menu:before, .fixed-plugin .dropdown .dropdown-menu:after {
+      content: "";
+      display: inline-block;
+      position: absolute;
+      top: 74px;
+      width: 16px;
+      transform: translateY(-50%);
+      -webkit-transform: translateY(-50%);
+      -moz-transform: translateY(-50%); }
+  .fixed-plugin .dropdown.show .dropdown-menu {
+    opacity: 1;
+    transform: translateY(-13%);
+    transform-origin: 0 0; }
+  .fixed-plugin .bootstrap-switch {
+    margin: 0; }
+
+.wrapper {
+  position: relative;
+  top: 0;
+  height: 100vh; }
+  .wrapper.wrapper-full-page {
+    min-height: 100vh;
+    height: auto; }
+
+.sidebar-wrapper ul li div.collapse ul li div.collapse ul li a,
+.sidebar-wrapper ul li div.collapse ul li div.collapsing ul li a,
+.sidebar-wrapper ul li div.collapsing ul li div.collapse ul li a {
+  margin-left: 25px; }
+
+.sidebar,
+.off-canvas-sidebar {
+  background: #ba54f5;
+  background: linear-gradient(0deg, #ba54f5 0%, #e14eca 100%);
+  height: calc(100vh - 90px);
+  width: 230px;
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1;
+  background-size: cover;
+  background-position: center center;
+  display: block;
+  box-shadow: 0px 0px 45px 0px rgba(0, 0, 0, 0.6);
+  margin-top: 80px;
+  margin-left: 20px;
+  border-radius: 5px;
+  transition: 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); }
+  .sidebar .sidebar-wrapper,
+  .off-canvas-sidebar .sidebar-wrapper {
+    width: 100%;
+    min-height: 100%;
+    max-height: calc(100vh - 705px);
+    z-index: 4;
+    position: relative;
+    overflow: auto; }
+    .sidebar .sidebar-wrapper .dropdown .dropdown-backdrop,
+    .off-canvas-sidebar .sidebar-wrapper .dropdown .dropdown-backdrop {
+      display: none !important; }
+    .sidebar .sidebar-wrapper .navbar-form,
+    .off-canvas-sidebar .sidebar-wrapper .navbar-form {
+      border: none; }
+    .sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a span,
+    .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a span,
+    .off-canvas-sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a span,
+    .off-canvas-sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a span {
+      display: inline-block; }
+    .sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+    .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+    .off-canvas-sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+    .off-canvas-sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal {
+      margin: 0;
+      position: relative;
+      transform: translateX(0px);
+      opacity: 1;
+      white-space: nowrap;
+      display: block;
+      line-height: 23px;
+      z-index: 1;
+      color: rgba(255, 255, 255, 0.8); }
+    .sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+    .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+    .off-canvas-sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+    .off-canvas-sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon {
+      text-transform: uppercase;
+      width: 34px;
+      margin-right: 10px;
+      margin-left: 0px;
+      font-size: 12px;
+      text-align: center;
+      line-height: 25px;
+      position: relative;
+      float: left;
+      z-index: 1;
+      display: inherit;
+      line-height: 24px;
+      color: rgba(255, 255, 255, 0.8); }
+    .sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a i,
+    .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a i,
+    .off-canvas-sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a i,
+    .off-canvas-sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a i {
+      font-size: 17px;
+      line-height: 20px;
+      width: 26px; }
+    .sidebar .sidebar-wrapper [data-toggle="collapse"] ~ div > ul > li:hover > a .sidebar-mini-icon, .sidebar .sidebar-wrapper [data-toggle="collapse"] ~ div > ul > li:hover > a .sidebar-normal,
+    .off-canvas-sidebar .sidebar-wrapper [data-toggle="collapse"] ~ div > ul > li:hover > a .sidebar-mini-icon,
+    .off-canvas-sidebar .sidebar-wrapper [data-toggle="collapse"] ~ div > ul > li:hover > a .sidebar-normal {
+      color: #ffffff; }
+    .sidebar .sidebar-wrapper .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+    .off-canvas-sidebar .sidebar-wrapper .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon {
+      opacity: 0; }
+  .sidebar .navbar-minimize,
+  .off-canvas-sidebar .navbar-minimize {
+    position: absolute;
+    right: 20px;
+    top: 2px;
+    opacity: 1; }
+  .sidebar .logo-tim,
+  .off-canvas-sidebar .logo-tim {
+    border-radius: 50%;
+    border: 1px solid #333;
+    display: block;
+    height: 61px;
+    width: 61px;
+    float: left;
+    overflow: hidden; }
+    .sidebar .logo-tim img,
+    .off-canvas-sidebar .logo-tim img {
+      width: 60px;
+      height: 60px; }
+  .sidebar .nav,
+  .off-canvas-sidebar .nav {
+    margin-top: 20px;
+    display: block; }
+    .sidebar .nav .caret,
+    .off-canvas-sidebar .nav .caret {
+      top: 14px;
+      position: absolute;
+      right: 10px; }
+    .sidebar .nav li > a + div .nav,
+    .off-canvas-sidebar .nav li > a + div .nav {
+      margin-top: 5px; }
+      .sidebar .nav li > a + div .nav li > a,
+      .off-canvas-sidebar .nav li > a + div .nav li > a {
+        margin-top: 0px;
+        padding: 8px 8px; }
+    .sidebar .nav li > a,
+    .off-canvas-sidebar .nav li > a {
+      margin: 10px 15px 0;
+      border-radius: 30px;
+      color: #ffffff;
+      display: block;
+      text-decoration: none;
+      position: relative;
+      text-transform: uppercase;
+      cursor: pointer;
+      font-size: 0.62475rem;
+      padding: 10px 8px;
+      line-height: 1.625rem; }
+    .sidebar .nav li:first-child > a,
+    .off-canvas-sidebar .nav li:first-child > a {
+      margin: 0 15px; }
+    .sidebar .nav li:hover:not(.active) > a p, .sidebar .nav li:hover:not(.active) > a i,
+    .sidebar .nav li:focus:not(.active) > a p,
+    .sidebar .nav li:focus:not(.active) > a i,
+    .off-canvas-sidebar .nav li:hover:not(.active) > a p,
+    .off-canvas-sidebar .nav li:hover:not(.active) > a i,
+    .off-canvas-sidebar .nav li:focus:not(.active) > a p,
+    .off-canvas-sidebar .nav li:focus:not(.active) > a i {
+      color: #ffffff; }
+    .sidebar .nav li:hover:not(.active) > a i,
+    .sidebar .nav li:focus:not(.active) > a i,
+    .off-canvas-sidebar .nav li:hover:not(.active) > a i,
+    .off-canvas-sidebar .nav li:focus:not(.active) > a i {
+      color: #ffffff; }
+    .sidebar .nav li.active > a:not([data-toggle="collapse"]),
+    .off-canvas-sidebar .nav li.active > a:not([data-toggle="collapse"]) {
+      background: transparent; }
+      .sidebar .nav li.active > a:not([data-toggle="collapse"]) i, .sidebar .nav li.active > a:not([data-toggle="collapse"]) p,
+      .off-canvas-sidebar .nav li.active > a:not([data-toggle="collapse"]) i,
+      .off-canvas-sidebar .nav li.active > a:not([data-toggle="collapse"]) p {
+        color: white; }
+      .sidebar .nav li.active > a:not([data-toggle="collapse"]):before,
+      .off-canvas-sidebar .nav li.active > a:not([data-toggle="collapse"]):before {
+        content: " ";
+        position: absolute;
+        height: 6px;
+        width: 6px;
+        top: 22px;
+        left: -4px;
+        background: #ffffff;
+        border-radius: 50%; }
+    .sidebar .nav li.active > a[data-toggle="collapse"],
+    .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"] {
+      background: transparent;
+      box-shadow: none;
+      color: #ffffff; }
+      .sidebar .nav li.active > a[data-toggle="collapse"] i,
+      .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"] i {
+        color: #ffffff; }
+      .sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a,
+      .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a {
+        box-shadow: none; }
+        .sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a .sidebar-mini-icon, .sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a .sidebar-normal,
+        .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a .sidebar-mini-icon,
+        .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a .sidebar-normal {
+          color: #ffffff;
+          font-weight: 400; }
+        .sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a:before,
+        .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"] + div .nav .active a:before {
+          content: " ";
+          position: absolute;
+          height: 6px;
+          width: 6px;
+          top: 17px;
+          left: -4px;
+          background: #ffffff;
+          border-radius: 50%; }
+      .sidebar .nav li.active > a[data-toggle="collapse"]:before,
+      .off-canvas-sidebar .nav li.active > a[data-toggle="collapse"]:before {
+        content: " ";
+        position: absolute;
+        height: 6px;
+        width: 6px;
+        top: 22px;
+        left: -4px;
+        background: rgba(255, 255, 255, 0.6);
+        border-radius: 50%; }
+    .sidebar .nav p,
+    .off-canvas-sidebar .nav p {
+      margin: 0;
+      line-height: 30px;
+      position: relative;
+      display: block;
+      height: auto;
+      white-space: nowrap; }
+    .sidebar .nav i,
+    .off-canvas-sidebar .nav i {
+      font-size: 20px;
+      float: left;
+      margin-right: 12px;
+      line-height: 30px;
+      width: 34px;
+      text-align: center;
+      color: rgba(255, 255, 255, 0.8);
+      position: relative; }
+  .sidebar .logo,
+  .off-canvas-sidebar .logo {
+    position: relative;
+    padding: 0.5rem 0.7rem;
+    z-index: 4; }
+    .sidebar .logo a.logo-mini,
+    .off-canvas-sidebar .logo a.logo-mini {
+      opacity: 1;
+      float: left;
+      width: 34px;
+      text-align: center;
+      margin-left: 10px;
+      margin-right: 12px; }
+    .sidebar .logo a.logo-normal,
+    .off-canvas-sidebar .logo a.logo-normal {
+      display: block;
+      opacity: 1;
+      transform: translate3d(0px, 0, 0); }
+    .sidebar .logo:after,
+    .off-canvas-sidebar .logo:after {
+      content: '';
+      position: absolute;
+      bottom: 0;
+      right: 15px;
+      height: 1px;
+      width: calc(100% - 30px);
+      background: rgba(255, 255, 255, 0.5); }
+    .sidebar .logo p,
+    .off-canvas-sidebar .logo p {
+      float: left;
+      font-size: 20px;
+      margin: 10px 10px;
+      color: #ffffff;
+      line-height: 20px;
+      font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
+    .sidebar .logo .simple-text,
+    .off-canvas-sidebar .logo .simple-text {
+      text-transform: uppercase;
+      padding: 0.5rem 0;
+      display: block;
+      white-space: nowrap;
+      color: #ffffff;
+      text-decoration: none;
+      font-weight: 400;
+      line-height: 30px;
+      overflow: hidden; }
+  .sidebar .logo-tim,
+  .off-canvas-sidebar .logo-tim {
+    border-radius: 50%;
+    border: 1px solid #333;
+    display: block;
+    height: 61px;
+    width: 61px;
+    float: left;
+    overflow: hidden; }
+    .sidebar .logo-tim img,
+    .off-canvas-sidebar .logo-tim img {
+      width: 60px;
+      height: 60px; }
+  .sidebar[data="blue"],
+  .off-canvas-sidebar[data="blue"] {
+    background: #3358f4;
+    background: linear-gradient(0deg, #3358f4 0%, #1d8cf8 100%); }
+  .sidebar[data="green"],
+  .off-canvas-sidebar[data="green"] {
+    background: #0098f0;
+    background: linear-gradient(0deg, #0098f0 0%, #00f2c3 100%); }
+  .sidebar .user,
+  .off-canvas-sidebar .user {
+    padding-bottom: 20px;
+    margin: 20px auto 0;
+    position: relative; }
+    .sidebar .user:after,
+    .off-canvas-sidebar .user:after {
+      content: '';
+      position: absolute;
+      bottom: 0;
+      right: 15px;
+      height: 1px;
+      width: calc(100% - 30px);
+      background: rgba(255, 255, 255, 0.5); }
+    .sidebar .user .photo,
+    .off-canvas-sidebar .user .photo {
+      width: 34px;
+      height: 34px;
+      overflow: hidden;
+      float: left;
+      z-index: 5;
+      margin-right: 10px;
+      border-radius: 50%;
+      margin-left: 23px;
+      box-shadow: 0px 10px 25px 0px rgba(0, 0, 0, 0.3); }
+      .sidebar .user .photo img,
+      .off-canvas-sidebar .user .photo img {
+        width: 100%; }
+    .sidebar .user a,
+    .off-canvas-sidebar .user a {
+      color: #ffffff;
+      text-decoration: none;
+      padding: 0.5rem 15px;
+      white-space: nowrap; }
+    .sidebar .user .info > a,
+    .off-canvas-sidebar .user .info > a {
+      display: block;
+      line-height: 18px; }
+      .sidebar .user .info > a > span,
+      .off-canvas-sidebar .user .info > a > span {
+        display: block;
+        position: relative;
+        opacity: 1; }
+    .sidebar .user .info .caret,
+    .off-canvas-sidebar .user .info .caret {
+      position: absolute;
+      top: 8px;
+      right: 18px; }
+
+.visible-on-sidebar-regular {
+  display: inline-block !important; }
+
+.visible-on-sidebar-mini {
+  display: none !important; }
+
+.off-canvas-sidebar .nav > li > a,
+.off-canvas-sidebar .nav > li > a:hover {
+  color: #ffffff; }
+
+.off-canvas-sidebar .nav > li > a:focus {
+  background: rgba(200, 200, 200, 0.2); }
+
+.main-panel {
+  position: relative;
+  float: right;
+  width: 100%;
+  min-height: 100vh;
+  border-top: 2px solid #e14eca;
+  background: linear-gradient(#1e1e2f, #1e1e24);
+  transition: all 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1); }
+  .main-panel[data="blue"] {
+    border-top: 2px solid #1d8cf8; }
+  .main-panel[data="green"] {
+    border-top: 2px solid #00f2c3; }
+  .main-panel[data="primary"] {
+    border-top: 2px solid #e14eca; }
+  .main-panel > .content {
+    padding: 78px 30px 30px 280px;
+    min-height: calc(100vh - 70px); }
+  .main-panel > .navbar {
+    margin-bottom: 0; }
+  .main-panel .header {
+    margin-bottom: 50px; }
+
+.perfect-scrollbar-on .sidebar,
+.perfect-scrollbar-on .main-panel {
+  height: 100%;
+  max-height: 100%; }
+
+@media (min-width: 991px) {
+  .sidebar,
+  .main-panel,
+  .sidebar-wrapper {
+    transition-property: top,bottom, width;
+    transition-duration: .2s,.2s, .35s;
+    transition-timing-function: linear,linear,ease;
+    -webkit-overflow-scrolling: touch; }
+  .sidebar-mini .visible-on-sidebar-regular {
+    display: none !important; }
+  .sidebar-mini .visible-on-sidebar-mini {
+    display: inline-block !important; }
+  .sidebar-mini .sidebar {
+    width: 80px; }
+    .sidebar-mini .sidebar .sidebar-wrapper {
+      width: 100% !important; }
+  .sidebar-mini .sidebar {
+    display: block;
+    z-index: 1030;
+    box-shadow: 0px 2px 22px 0 rgba(0, 0, 0, 0.2), 0px 2px 30px 0 rgba(0, 0, 0, 0.35); }
+    .sidebar-mini .sidebar .logo a.logo-normal {
+      opacity: 0;
+      transform: translate3d(-25px, 0, 0); }
+    .sidebar-mini .sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+    .sidebar-mini .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+    .sidebar-mini .sidebar .sidebar-wrapper .user .info > a > span,
+    .sidebar-mini .sidebar .sidebar-wrapper > .nav li > a p {
+      transform: translate3d(-25px, 0, 0);
+      opacity: 0; }
+    .sidebar-mini .sidebar .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon {
+      opacity: 1; }
+  .sidebar-mini .sidebar:hover {
+    width: 260px; }
+    .sidebar-mini .sidebar:hover .logo a.logo-normal {
+      opacity: 1;
+      transform: translate3d(0, 0, 0); }
+    .sidebar-mini .sidebar:hover .navbar-minimize {
+      opacity: 1; }
+    .sidebar-mini .sidebar:hover .sidebar-wrapper {
+      width: 260px; }
+      .sidebar-mini .sidebar:hover .sidebar-wrapper > .nav li > a p,
+      .sidebar-mini .sidebar:hover .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+      .sidebar-mini .sidebar:hover .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+      .sidebar-mini .sidebar:hover .sidebar-wrapper .user .info > a > span {
+        transform: translate3d(0px, 0, 0);
+        opacity: 1; }
+    .sidebar-mini .sidebar:hover .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon {
+      opacity: 0; }
+  .sidebar-mini .main-panel > .content {
+    padding-left: 130px; }
+  .sidebar-mini footer {
+    padding-left: 130px; }
+  .navbar-minimize button {
+    margin-left: 10px; }
+    .navbar-minimize button i {
+      color: #ffffff;
+      font-size: 20px; } }
+
+.panel-header {
+  height: 260px;
+  padding-top: 80px;
+  padding-bottom: 45px;
+  background: #141E30;
+  /* fallback for old browsers */
+  background: linear-gradient(to right, #0c2646 0%, #204065 60%, #2a5788 100%);
+  position: relative;
+  overflow: hidden; }
+  .panel-header .header .title {
+    color: #ffffff; }
+  .panel-header .header .category {
+    max-width: 600px;
+    color: rgba(255, 255, 255, 0.5);
+    margin: 0 auto;
+    font-size: 13px; }
+    .panel-header .header .category a {
+      color: #ffffff; }
+
+.panel-header-sm {
+  height: 135px; }
+
+.panel-header-lg {
+  height: 380px; }
+
+@media screen and (max-width: 991px) {
+  .sidebar {
+    position: fixed;
+    display: block;
+    top: 0;
+    height: 100%;
+    width: 260px;
+    right: auto;
+    left: 0;
+    margin: 0;
+    border-radius: 0;
+    z-index: 1032;
+    visibility: visible;
+    overflow-y: visible;
+    padding: 0;
+    transition: 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1);
+    transform: translate3d(-260px, 0, 0); } }
+  @media screen and (max-width: 991px) and (prefers-reduced-motion: reduce) {
+    .sidebar {
+      transition: none; } }
+
+@media screen and (max-width: 991px) {
+  .wrapper {
+    transition: 0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1); } }
+  @media screen and (max-width: 991px) and (prefers-reduced-motion: reduce) {
+    .wrapper {
+      transition: none; } }
+
+@media screen and (max-width: 991px) {
+  .main-panel {
+    width: 100%; }
+    .main-panel .content {
+      padding-left: 30px; }
+  .nav-open .main-panel {
+    right: 0;
+    transform: translate3d(260px, 0, 0); }
+  .nav-open .sidebar {
+    transition: 0.5s cubic-bezier(0.685, 0.0473, 0.346, 1);
+    transform: translate3d(0px, 0, 0); } }
+  @media screen and (max-width: 991px) and (prefers-reduced-motion: reduce) {
+    .nav-open .sidebar {
+      transition: none; } }
+
+@media screen and (max-width: 991px) {
+    .nav-open .sidebar:before {
+      content: unset; }
+  .nav-open body {
+    position: relative;
+    overflow-x: hidden; }
+  .nav-open .menu-on-right .main-panel {
+    transform: translate3d(-260px, 0, 0); }
+  .nav-open .menu-on-right .navbar-collapse,
+  .nav-open .menu-on-right .sidebar {
+    transform: translate3d(0px, 0, 0); }
+  .nav-open .menu-on-right #bodyClick {
+    right: 260px;
+    left: auto; }
+  .menu-on-right .sidebar {
+    left: auto;
+    right: 0;
+    transform: translate3d(260px, 0, 0); }
+  #bodyClick {
+    height: 100%;
+    width: 100%;
+    position: fixed;
+    opacity: 1;
+    top: 0;
+    right: 0;
+    left: 260px;
+    content: "";
+    z-index: 9999;
+    overflow-x: hidden;
+    background-color: transparent;
+    transition: 0.5s, cubic-bezier(0.685, 0.0473, 0.346, 1); } }
+  @media screen and (max-width: 991px) and (prefers-reduced-motion: reduce) {
+    #bodyClick {
+      transition: none; } }
+
+@media screen and (max-width: 768px) {
+  .main-panel .content {
+    padding-left: 15px;
+    padding-right: 15px; } }
+
+.color-swatch {
+  margin: 1rem 0;
+  border-radius: .25rem;
+  background-color: #F4F5F7;
+  width: 100% !important;
+  height: auto !important;
+  margin-bottom: 20px; }
+
+.color-swatch:after {
+  content: " ";
+  display: table;
+  clear: both; }
+
+.color-swatch-header {
+  position: relative;
+  height: 0;
+  padding-bottom: 50%;
+  border-radius: .25rem .25rem 0 0;
+  border: 1px solid transparent; }
+
+.color-swatch-header.is-light {
+  border-color: #C1C7D0; }
+
+.color-swatch-header .pass-fail {
+  position: absolute;
+  width: 100%;
+  bottom: 0; }
+
+.color-swatch-header .pass-fail-item-wrap {
+  position: relative;
+  float: left;
+  left: 50%;
+  transform: translateX(-50%); }
+
+.color-swatch-header .pass-fail-item-group {
+  display: inline-block;
+  padding: 0 5px; }
+
+.color-swatch-header .pass-fail-item {
+  float: left;
+  display: inline-block;
+  text-align: center;
+  padding: 2px; }
+
+.color-swatch-header .pass-fail-item.white .example {
+  color: #fff; }
+
+.color-swatch-header .pass-fail-item.small .example {
+  font-size: 10px; }
+
+.color-swatch-header .pass-fail-item .lozenge {
+  font-size: 11px;
+  text-transform: uppercase;
+  font-weight: 600;
+  background: #000;
+  color: #fff;
+  padding: 2px 4px;
+  line-height: 10px;
+  border-radius: 4px;
+  letter-spacing: 0.05em; }
+
+.color-swatch-body {
+  position: relative;
+  left: 50%;
+  float: left;
+  padding: 10px 0;
+  transform: translateX(-50%); }
+
+.color-swatch-body .prop-item-wrap {
+  float: left;
+  padding: 0 15px;
+  min-width: 65px; }
+
+.color-swatch-body .prop-item {
+  padding: 15px 0; }
+
+.color-swatch-body .prop-item .label {
+  font-size: 11px;
+  color: #62748C;
+  text-transform: uppercase;
+  line-height: 16px; }
+
+.color-swatch-body .prop-item .value {
+  font-size: 14px; }
+
+.table-colors .swatch {
+  display: inline-block;
+  float: left;
+  width: 40px;
+  height: 40px;
+  margin-right: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px; }
+
+.table-colors td:nth-child(1),
+.table-colors:first-child td:nth-child(1) {
+  line-height: 40px; }
+
+.table-colors .lozenge {
+  font-size: 10px;
+  font-weight: 600;
+  line-height: 10px;
+  display: inline-block;
+  float: left;
+  margin: 5px 10px 0 0;
+  padding: 2px 4px;
+  letter-spacing: .05em;
+  text-transform: uppercase;
+  color: #042a53;
+  border-radius: 4px;
+  background: #97a0af; }
+
+.bd-example .row > .col span,
+.bd-example .row > [class^=col-] span {
+  font-size: 0.75rem;
+  display: block;
+  margin: 1rem 0;
+  padding: .75rem;
+  color: #393f49;
+  background-color: #ffffff;
+  border-radius: 0.2857rem; }
+
+.bd-docs .navbar .navbar-brand {
+  position: relative; }
+
+/* Animations */
+.nav-pills .nav-link,
+.navbar,
+.nav-tabs .nav-link,
+.sidebar .nav a,
+.sidebar .nav a i,
+.sidebar .nav p,
+.navbar-collapse .navbar-nav .nav-link,
+.animation-transition-general,
+.sidebar .nav p,
+.off-canvas-sidebar .nav p,
+.sidebar .logo a.logo-mini,
+.sidebar .logo a.logo-normal,
+.off-canvas-sidebar .logo a.logo-mini,
+.off-canvas-sidebar .logo a.logo-normal,
+.sidebar .user .photo,
+.off-canvas-sidebar .user .photo,
+.sidebar .user a,
+.off-canvas-sidebar .user a,
+.sidebar .user .info > a > span,
+.off-canvas-sidebar .user .info > a > span,
+.tag,
+.tag [data-role="remove"],
+.animation-transition-general,
+.sidebar .nav p,
+.off-canvas-sidebar .nav p,
+.sidebar .logo a.logo-mini,
+.sidebar .logo a.logo-normal,
+.off-canvas-sidebar .logo a.logo-mini,
+.off-canvas-sidebar .logo a.logo-normal,
+.sidebar .user .photo,
+.off-canvas-sidebar .user .photo,
+.sidebar .user a,
+.off-canvas-sidebar .user a,
+.sidebar .user .info > a > span,
+.off-canvas-sidebar .user .info > a > span {
+  transition: all 300ms ease 0s; }
+
+.bootstrap-switch-label:before,
+.caret {
+  transition: all 150ms ease 0s; }
+
+.dropdown-toggle[aria-expanded="true"]:after,
+a[data-toggle="collapse"][aria-expanded="true"] .caret,
+.card-collapse .card a[data-toggle="collapse"][aria-expanded="true"] i,
+.card-collapse .card a[data-toggle="collapse"].expanded i {
+  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+  transform: rotate(180deg); }
+
+.caret {
+  width: 0;
+  height: 0;
+  vertical-align: middle;
+  border-top: 4px dashed;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+  margin-top: -5px;
+  position: absolute;
+  top: 30px;
+  margin-left: 5px; }
+
+.pull-left {
+  float: left; }
+
+.pull-right {
+  float: right; }
+
+.card form label + .form-control {
+  margin-bottom: 20px; }
+
+.card .map-title {
+  color: #ffffff; }
+
+.card.card-chart .gmnoprint,
+.card.card-chart .gm-style-cc {
+  display: none !important; }
+
+.bd-docs h1, .bd-docs h2, .bd-docs h3, .bd-docs h4, .bd-docs h5, .bd-docs h6, .bd-docs p, .bd-docs ul li, .bd-docs ol li {
+  color: #2c2c2c; }
+
+.bd-docs .bd-content > table > thead > tr > th {
+  color: #222a42; }
+
+.bd-docs .blockquote, .bd-docs .blockquote p, .bd-docs .card p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.bd-docs .bd-example {
+  background: linear-gradient(#1e1e2f, #1e1e24); }
+
+.bd-docs .navbar {
+  border-top: none; }
+  .bd-docs .navbar .navbar-nav .nav-link {
+    color: rgba(255, 255, 255, 0.8) !important; }
+
+.bd-docs .bd-example .btn {
+  margin: 4px 0; }
+
+.bd-docs .bd-example .btn .badge {
+  display: inline-block; }
+
+.bd-docs .bd-example .tim-icons {
+  color: #ffffff; }
+
+.bd-docs .bd-example .popover .popover-header {
+  color: rgba(181, 181, 181, 0.6); }
+
+.bd-docs .bd-example .popover-body p {
+  color: #212529; }
+
+.bd-docs .bd-example.tooltip-demo p {
+  color: rgba(255, 255, 255, 0.8); }
+
+.bd-docs .card.card-body,
+.bd-docs .card .card-body {
+  color: rgba(255, 255, 255, 0.8); }
+
+.bd-docs label,
+.bd-docs .form-check {
+  color: rgba(255, 255, 255, 0.8); }
+
+.bd-docs .form-check + .btn {
+  margin-top: 20px; }
+
+.bd-docs .bd-example thead th,
+.bd-docs table thead th {
+  color: rgba(255, 255, 255, 0.8); }
+
+.bd-docs .bd-example h1, .bd-docs .bd-example h2, .bd-docs .bd-example h3, .bd-docs .bd-example h4, .bd-docs .bd-example h5, .bd-docs .bd-example h6,
+.bd-docs .bd-example .h1, .bd-docs .bd-example .h2, .bd-docs .bd-example .h3, .bd-docs .bd-example .h4, .bd-docs .bd-example .h5, .bd-docs .bd-example .h6,
+.bd-docs table h1,
+.bd-docs table h2,
+.bd-docs table h3,
+.bd-docs table h4,
+.bd-docs table h5,
+.bd-docs table h6,
+.bd-docs table .h1,
+.bd-docs table .h2,
+.bd-docs table .h3,
+.bd-docs table .h4,
+.bd-docs table .h5,
+.bd-docs table .h6 {
+  color: rgba(255, 255, 255, 0.8); }
+
+.bd-docs .bd-example .datepicker thead th, .bd-docs .bd-example .datepicker table thead th, .bd-docs .bd-example .datepicker .tim-icons,
+.bd-docs table .datepicker thead th,
+.bd-docs table .datepicker table thead th,
+.bd-docs table .datepicker .tim-icons {
+  color: #e14eca; }
+
+.bd-docs .bd-example .picker-switch .tim-icons,
+.bd-docs table .picker-switch .tim-icons {
+  color: #e14eca; }
+
+.bd-docs .footer .container-fluid > nav {
+  display: inline-block; }
+
+.modal.show .modal-dialog {
+  transform: translate(0, 30%); }
+
+code {
+  color: #f3a4b5; }
+
+@media screen and (max-width: 991px) {
+  .profile-photo .profile-photo-small {
+    margin-left: -2px; }
+  .button-dropdown {
+    display: none; }
+  #searchModal .modal-dialog {
+    margin: 20px; }
+  #minimizeSidebar {
+    display: none; } }
+
+@media screen and (max-width: 768px) {
+  .landing-page .section-story-overview .image-container:nth-child(2) {
+    margin-left: 0;
+    margin-bottom: 30px; } }
+
+@media screen and (max-width: 576px) {
+  .page-header .container h6.category-absolute {
+    width: 90%; }
+  .form-horizontal .col-form-label, .form-horizontal .label-on-right {
+    text-align: inherit;
+    padding-top: 0; }
+    .form-horizontal .col-form-label code, .form-horizontal .label-on-right code {
+      padding: 0 10px; } }
+
+.rtl .sidebar,
+.rtl .bootstrap-navbar {
+  right: 0;
+  left: auto;
+  margin-right: 20px;
+  margin-left: 0; }
+  .rtl .sidebar .nav i,
+  .rtl .bootstrap-navbar .nav i {
+    float: right;
+    margin-left: 15px;
+    margin-right: 0; }
+  .rtl .sidebar .nav p,
+  .rtl .bootstrap-navbar .nav p {
+    margin-right: 45px;
+    text-align: right; }
+  .rtl .sidebar .nav .caret,
+  .rtl .bootstrap-navbar .nav .caret {
+    left: 11px;
+    right: auto; }
+  .rtl .sidebar .logo a.logo-mini,
+  .rtl .bootstrap-navbar .logo a.logo-mini {
+    float: right;
+    margin-right: 20px;
+    margin-left: 10px; }
+  .rtl .sidebar .logo .simple-text,
+  .rtl .bootstrap-navbar .logo .simple-text {
+    text-align: right; }
+  .rtl .sidebar .sidebar-wrapper .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+  .rtl .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+  .rtl .bootstrap-navbar .sidebar-wrapper .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon,
+  .rtl .bootstrap-navbar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-mini-icon {
+    float: right;
+    margin-left: 15px;
+    margin-right: 0; }
+  .rtl .sidebar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+  .rtl .sidebar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+  .rtl .bootstrap-navbar .sidebar-wrapper > .nav [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal,
+  .rtl .bootstrap-navbar .sidebar-wrapper .user .info [data-toggle="collapse"] ~ div > ul > li > a .sidebar-normal {
+    text-align: right; }
+  .rtl .sidebar:before,
+  .rtl .bootstrap-navbar:before {
+    right: 30px;
+    left: auto; }
+
+.rtl .main-panel .content {
+  padding: 80px 280px 30px 30px; }
+
+.rtl .footer {
+  padding: 24px 300px 24px 0; }
+
+.rtl .dropdown-toggle:after {
+  margin-right: .255em;
+  margin-left: 0; }
+
+.rtl .dropdown-menu.dropdown-menu-right.dropdown-navbar {
+  right: -220px !important;
+  left: auto; }
+  .rtl .dropdown-menu.dropdown-menu-right.dropdown-navbar:before {
+    right: auto;
+    left: 35px; }
+
+.rtl .notification {
+  left: 40px;
+  right: auto; }
+
+.rtl .dropdown-menu {
+  right: auto;
+  left: 0; }
+
+.rtl .minimize-sidebar {
+  float: right; }
+
+.rtl .alert {
+  left: 0;
+  margin-left: 0;
+  margin-right: 0; }
+  .rtl .alert button.close {
+    left: 10px !important;
+    right: auto !important; }
+  .rtl .alert span[data-notify="icon"] {
+    right: 15px;
+    left: auto; }
+  .rtl .alert.alert-with-icon {
+    padding-right: 65px;
+    padding-left: 15px; }
+  .rtl .alert.alert-with-icon i[data-notify="icon"] {
+    right: 15px;
+    left: auto; }
+
+.rtl .search-bar {
+  margin-left: 0; }
+
+.rtl .modal-search .modal-header .close {
+  margin-right: auto;
+  left: 10px; }
+
+@media (min-width: 991px) {
+  .rtl.sidebar-mini .main-panel .content {
+    padding-right: 130px;
+    padding-left: 50px; }
+  .rtl.sidebar-mini footer {
+    padding-right: 130px;
+    padding-left: 50px; }
+  .rtl .navbar-minimize button {
+    margin-right: -5px; } }
+
+@media screen and (max-width: 991px) {
+  .rtl .sidebar {
+    margin-right: 0; }
+  .rtl .main-panel .content {
+    padding-right: 50px; }
+  .rtl #bodyClick {
+    right: 260px;
+    left: auto; }
+  .rtl .footer {
+    padding-right: 15px; } }
+
+.rtl .navbar .navbar-nav {
+  padding-right: 0; }
+  .rtl .navbar .navbar-nav a.nav-link {
+    text-align: right; }
+    .rtl .navbar .navbar-nav a.nav-link p {
+      margin-right: 7px; }
+  .rtl .navbar .navbar-nav .btn {
+    margin-right: 0;
+    padding: 0; }
+    .rtl .navbar .navbar-nav .btn i {
+      margin-left: 4px;
+      margin-right: 5px; }
+  .rtl .navbar .navbar-nav .search-bar span {
+    margin-right: 10px; }
+
+.rtl .ps__rail-y {
+  right: auto !important;
+  left: 0; }
+
+.rtl .main-panel {
+  position: fixed;
+  height: 100%;
+  overflow-y: scroll;
+  overflow-x: hidden; }
+
+@media screen and (max-width: 768px) {
+  .rtl .main-panel .content {
+    padding-left: 15px;
+    padding-right: 15px; } }
+
+.form-group.has-danger .error,
+.input-group.has-danger .error {
+  color: #ec250d; }
+
+.form-group.has-success .error,
+.input-group.has-success .error {
+  color: #00f2c3; }
+
+.form-group.no-border.form-control-lg .input-group-append .input-group-text,
+.input-group.no-border.form-control-lg .input-group-append .input-group-text {
+  padding: 15px 0 15px 19px; }
+
+.form-group.no-border.form-control-lg .form-control,
+.input-group.no-border.form-control-lg .form-control {
+  padding: 15px 19px; }
+  .form-group.no-border.form-control-lg .form-control + .input-group-prepend .input-group-text,
+  .form-group.no-border.form-control-lg .form-control + .input-group-append .input-group-text,
+  .input-group.no-border.form-control-lg .form-control + .input-group-prepend .input-group-text,
+  .input-group.no-border.form-control-lg .form-control + .input-group-append .input-group-text {
+    padding: 15px 19px 15px 0; }
+
+.form-group.form-control-lg .form-control,
+.input-group.form-control-lg .form-control {
+  padding: 14px 18px;
+  height: 100%; }
+  .form-group.form-control-lg .form-control + .input-group-prepend .input-group-text,
+  .form-group.form-control-lg .form-control + .input-group-append .input-group-text,
+  .input-group.form-control-lg .form-control + .input-group-prepend .input-group-text,
+  .input-group.form-control-lg .form-control + .input-group-append .input-group-text {
+    padding: 14px 18px 14px 0; }
+
+.form-group.form-control-lg .input-group-prepend .input-group-text,
+.form-group.form-control-lg .input-group-append .input-group-text,
+.input-group.form-control-lg .input-group-prepend .input-group-text,
+.input-group.form-control-lg .input-group-append .input-group-text {
+  padding: 14px 0 15px 18px; }
+  .form-group.form-control-lg .input-group-prepend .input-group-text + .form-control,
+  .form-group.form-control-lg .input-group-append .input-group-text + .form-control,
+  .input-group.form-control-lg .input-group-prepend .input-group-text + .form-control,
+  .input-group.form-control-lg .input-group-append .input-group-text + .form-control {
+    padding: 15px 18px 15px 16px; }
+
+.form-group.no-border .form-control,
+.input-group.no-border .form-control {
+  padding: 11px 19px; }
+  .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+  .form-group.no-border .form-control + .input-group-append .input-group-text,
+  .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+  .input-group.no-border .form-control + .input-group-append .input-group-text {
+    padding: 11px 19px 11px 0; }
+
+.form-group.no-border .input-group-prepend .input-group-text,
+.form-group.no-border .input-group-append .input-group-text,
+.input-group.no-border .input-group-prepend .input-group-text,
+.input-group.no-border .input-group-append .input-group-text {
+  padding: 11px 0 11px 19px; }
+
+.form-group .form-control,
+.input-group .form-control {
+  padding: 10px 18px 10px 18px; }
+  .form-group .form-control + .input-group-prepend .input-group-text,
+  .form-group .form-control + .input-group-append .input-group-text,
+  .input-group .form-control + .input-group-prepend .input-group-text,
+  .input-group .form-control + .input-group-append .input-group-text {
+    padding: 10px 18px 10px 0; }
+
+.form-group .input-group-prepend .input-group-text,
+.form-group .input-group-append .input-group-text,
+.input-group .input-group-prepend .input-group-text,
+.input-group .input-group-append .input-group-text {
+  padding: 10px 0 10px 18px; }
+  .form-group .input-group-prepend .input-group-text + .form-control,
+  .form-group .input-group-prepend .input-group-text ~ .form-control,
+  .form-group .input-group-append .input-group-text + .form-control,
+  .form-group .input-group-append .input-group-text ~ .form-control,
+  .input-group .input-group-prepend .input-group-text + .form-control,
+  .input-group .input-group-prepend .input-group-text ~ .form-control,
+  .input-group .input-group-append .input-group-text + .form-control,
+  .input-group .input-group-append .input-group-text ~ .form-control {
+    padding: 10px 19px 11px 16px; }
+
+.form-group.no-border .form-control,
+.form-group.no-border .form-control + .input-group-prepend .input-group-text,
+.form-group.no-border .form-control + .input-group-append .input-group-text,
+.input-group.no-border .form-control,
+.input-group.no-border .form-control + .input-group-prepend .input-group-text,
+.input-group.no-border .form-control + .input-group-append .input-group-text {
+  background-color: #242c45;
+  border: medium none; }
+  .form-group.no-border .form-control:focus, .form-group.no-border .form-control:active, .form-group.no-border .form-control:active,
+  .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .input-group.no-border .form-control:focus,
+  .input-group.no-border .form-control:active,
+  .input-group.no-border .form-control:active,
+  .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+  .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+  .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+  .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+  .input-group.no-border .form-control + .input-group-append .input-group-text:active {
+    border: medium none;
+    background-color: #252e49; }
+
+.form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+.input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+.input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+  background-color: #252e49; }
+
+.form-group.no-border .input-group-prepend .input-group-text,
+.form-group.no-border .input-group-append .input-group-text,
+.input-group.no-border .input-group-prepend .input-group-text,
+.input-group.no-border .input-group-append .input-group-text {
+  background-color: #242c45;
+  border: none; }
+
+.has-error .form-control-feedback, .has-error .control-label {
+  color: #ec250d; }
+
+.has-success .form-control-feedback, .has-success .control-label {
+  color: #00f2c3; }
+
+.input-group-append .input-group-text,
+.input-group-prepend .input-group-text {
+  background-color: transparent;
+  border: 1px solid #2b3553;
+  border-radius: 0.4285rem;
+  color: #ffffff;
+  transition: color 0.3s ease-in-out, border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; }
+  .input-group-append .input-group-text i,
+  .input-group-prepend .input-group-text i {
+    opacity: .5; }
+  .has-danger.input-group-focus .input-group-append .input-group-text, .has-danger.input-group-focus
+  .input-group-prepend .input-group-text {
+    background-color: transparent; }
+  .has-success .input-group-append .input-group-text, .has-success
+  .input-group-prepend .input-group-text {
+    background-color: transparent; }
+  .has-danger .form-control:focus + .input-group-append .input-group-text, .has-danger .form-control:focus +
+  .input-group-prepend .input-group-text {
+    color: #ec250d; }
+  .has-success .form-control:focus + .input-group-append .input-group-text, .has-success .form-control:focus +
+  .input-group-prepend .input-group-text {
+    color: #00f2c3; }
+  .input-group-append .input-group-text + .form-control,
+  .input-group-append .input-group-text ~ .form-control,
+  .input-group-prepend .input-group-text + .form-control,
+  .input-group-prepend .input-group-text ~ .form-control {
+    padding: -0.5rem 0.7rem;
+    padding-left: 18px; }
+  .input-group-append .input-group-text i,
+  .input-group-prepend .input-group-text i {
+    width: 17px; }
+
+.input-group-append,
+.input-group-prepend .input-group-text,
+.input-group-prepend .input-group-text {
+  background-color: transparent;
+  border: 1px solid #2b3553;
+  border-radius: 0.4285rem;
+  color: #ffffff;
+  margin: 0; }
+
+.input-group-append .input-group-text {
+  border-left: none; }
+
+.input-group-prepend .input-group-text {
+  border-right: none; }
+
+.input-group-focus .input-group-prepend .input-group-text,
+.input-group-focus .input-group-append .input-group-text {
+  background-color: #ffffff;
+  border-color: #e14eca;
+  background-color: transparent;
+  border-color: #e14eca; }
+
+.input-group-focus.no-border .input-group-prepend .input-group-text,
+.input-group-focus.no-border .input-group-append .input-group-text {
+  background-color: #252e49; }
+
+.input-group,
+.form-group {
+  margin-bottom: 10px;
+  position: relative; }
+  .input-group .form-control-static,
+  .form-group .form-control-static {
+    margin-top: 9px; }
+
+.input-group[disabled] .input-group-prepend .input-group-text,
+.input-group[disabled] .input-group-append .input-group-text {
+  background-color: #E3E3E3; }
+
+.input-group .form-control:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child) {
+  border-radius: 0.4285rem;
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+  border-left: 0 none; }
+
+.input-group .form-control:first-child,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+  border-right: 0 none; }
+
+.input-group .form-control:last-child,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+  border-left: 0 none; }
+
+.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
+  background-color: #1d253b;
+  color: #344675;
+  cursor: not-allowed; }
+
+.input-group-btn .btn {
+  border-width: 1px;
+  padding: 11px 0.7rem; }
+
+.input-group-btn .btn-default:not(.btn-fill) {
+  border-color: #DDDDDD; }
+
+.input-group-btn:last-child > .btn {
+  margin-left: 0; }
+
+textarea.form-control {
+  max-width: 100%;
+  max-height: 80px;
+  padding: 10px 10px 0 0;
+  resize: none;
+  border: none;
+  border-bottom: 1px solid #2b3553;
+  border-radius: 0;
+  line-height: 2; }
+  textarea.form-control:focus, textarea.form-control:active {
+    border-left: none;
+    border-top: none;
+    border-right: none; }
+
+.has-success.form-group .form-control,
+.has-success.form-group.no-border .form-control,
+.has-danger.form-group .form-control,
+.has-danger.form-group.no-border .form-control {
+  padding-right: 40px; }
+
+.form.form-newsletter .form-group {
+  float: left;
+  width: 78%;
+  margin-right: 2%;
+  margin-top: 9px; }
+
+.input-group .input-group-btn {
+  padding: 0 12px; }
+
+.form-group input[type=file] {
+  opacity: 0;
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 100; }
+
+.form-text {
+  font-size: 0.75rem;
+  color: rgba(255, 255, 255, 0.8); }
+
+.form-control-lg {
+  padding: 0;
+  font-size: inherit;
+  line-height: 0;
+  border-radius: 0; }
+  .form-control-lg .form-control {
+    height: calc(2.875rem + 2px); }
+
+.form-horizontal .col-form-label, .form-horizontal .label-on-right {
+  padding: 10px 5px 0 15px;
+  text-align: right;
+  max-width: 180px; }
+
+.form-horizontal .checkbox-radios {
+  margin-bottom: 15px; }
+  .form-horizontal .checkbox-radios .form-check:first-child {
+    margin-top: 8px; }
+
+.form-horizontal .label-on-right {
+  text-align: left;
+  padding: 10px 15px 0 5px; }
+
+.form-horizontal .form-check-inline {
+  margin-top: 6px; }
+  .form-horizontal .form-check-inline .form-check-label {
+    margin-right: 1.5rem; }
+
+.search-bar {
+  margin-left: 30px; }
+  .search-bar .btn {
+    margin: 0; }
+  .search-bar.input-group {
+    border-radius: 25px;
+    z-index: 4;
+    margin-bottom: 0;
+    height: 43px;
+    padding-right: 5px; }
+    .search-bar.input-group .input-group-addon {
+      padding: 10px;
+      background: transparent;
+      border: none;
+      color: rgba(255, 255, 255, 0.7); }
+    .search-bar.input-group i {
+      font-size: 20px;
+      color: #ffffff;
+      margin-top: 0 !important; }
+    .search-bar.input-group input {
+      background: transparent;
+      border: none !important;
+      border-radius: 0;
+      padding: 12px !important;
+      font-size: 12px;
+      opacity: 0.5; }
+      .search-bar.input-group input:focus {
+        background: transparent; }
+    .search-bar.input-group .form-control {
+      opacity: 1;
+      color: #ffffff; }
+      .search-bar.input-group .form-control::placeholder {
+        color: white; }
+
+.modal-search .modal-dialog {
+  max-width: 1000px;
+  margin: 20px auto; }
+  .modal-search .modal-dialog .form-control {
+    border: none;
+    color: #222a42; }
+    .modal-search .modal-dialog .form-control::placeholder {
+      color: #222a42; }
+
+.input-group-prepend {
+  margin-right: 0; }
+
+.input-group-prepend .tim-icons,
+.input-group-append .tim-icons {
+  font-size: 1rem; }
+
+/*
+ * Container style
+ */
+.ps {
+  overflow: hidden !important;
+  overflow-anchor: none;
+  -ms-overflow-style: none;
+  touch-action: auto;
+  -ms-touch-action: auto; }
+
+/*
+ * Scrollbar rail styles
+ */
+.ps__rail-x {
+  display: none;
+  opacity: 0;
+  transition: background-color .2s linear, opacity .2s linear;
+  -webkit-transition: background-color .2s linear, opacity .2s linear;
+  height: 15px;
+  /* there must be 'bottom' or 'top' for ps__rail-x */
+  bottom: 0px;
+  /* please don't change 'position' */
+  position: absolute; }
+
+.ps__rail-y {
+  display: none;
+  opacity: 0;
+  transition: background-color .2s linear, opacity .2s linear;
+  -webkit-transition: background-color .2s linear, opacity .2s linear;
+  width: 15px;
+  /* there must be 'right' or 'left' for ps__rail-y */
+  right: 0;
+  /* please don't change 'position' */
+  position: absolute; }
+
+.ps--active-x > .ps__rail-x,
+.ps--active-y > .ps__rail-y {
+  display: block;
+  background-color: transparent; }
+
+.ps:hover > .ps__rail-x,
+.ps:hover > .ps__rail-y,
+.ps--focus > .ps__rail-x,
+.ps--focus > .ps__rail-y,
+.ps--scrolling-x > .ps__rail-x,
+.ps--scrolling-y > .ps__rail-y {
+  opacity: 0.6; }
+
+.ps .ps__rail-x:hover,
+.ps .ps__rail-y:hover,
+.ps .ps__rail-x:focus,
+.ps .ps__rail-y:focus,
+.ps .ps__rail-x.ps--clicking,
+.ps .ps__rail-y.ps--clicking {
+  background-color: #eee;
+  opacity: 0.9; }
+
+/*
+ * Scrollbar thumb styles
+ */
+.ps__thumb-x {
+  background-color: #aaa;
+  border-radius: 6px;
+  transition: background-color .2s linear, height .2s ease-in-out;
+  -webkit-transition: background-color .2s linear, height .2s ease-in-out;
+  height: 6px;
+  /* there must be 'bottom' for ps__thumb-x */
+  bottom: 2px;
+  /* please don't change 'position' */
+  position: absolute; }
+
+.ps__thumb-y {
+  background-color: #aaa;
+  border-radius: 6px;
+  transition: background-color .2s linear, width .2s ease-in-out;
+  -webkit-transition: background-color .2s linear, width .2s ease-in-out;
+  width: 6px;
+  /* there must be 'right' for ps__thumb-y */
+  right: 2px;
+  /* please don't change 'position' */
+  position: absolute; }
+
+.ps__rail-x:hover > .ps__thumb-x,
+.ps__rail-x:focus > .ps__thumb-x,
+.ps__rail-x.ps--clicking .ps__thumb-x {
+  background-color: #999;
+  height: 11px; }
+
+.ps__rail-y:hover > .ps__thumb-y,
+.ps__rail-y:focus > .ps__thumb-y,
+.ps__rail-y.ps--clicking .ps__thumb-y {
+  background-color: #999;
+  width: 11px; }
+
+/* MS supports */
+@supports (-ms-overflow-style: none) {
+  .ps {
+    overflow: auto !important; } }
+
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+  .ps {
+    overflow: auto !important; } }
+
+/*!
+Animate.css - http://daneden.me/animate
+Licensed under the MIT license - http://opensource.org/licenses/MIT
+
+Copyright (c) 2015 Daniel Eden
+*/
+.animated {
+  animation-duration: 1s;
+  animation-fill-mode: both; }
+
+.animated.infinite {
+  animation-iteration-count: infinite; }
+
+.animated.hinge {
+  animation-duration: 2s; }
+
+.animated.bounceIn,
+.animated.bounceOut {
+  animation-duration: .75s; }
+
+.animated.flipOutX,
+.animated.flipOutY {
+  animation-duration: .75s; }
+
+@keyframes shake {
+  from, to {
+    transform: translate3d(0, 0, 0); }
+  10%, 30%, 50%, 70%, 90% {
+    transform: translate3d(-10px, 0, 0); }
+  20%, 40%, 60%, 80% {
+    transform: translate3d(10px, 0, 0); } }
+
+.shake {
+  animation-name: shake; }
+
+@keyframes fadeInDown {
+  from {
+    opacity: 0;
+    transform: translate3d(0, -100%, 0); }
+  to {
+    opacity: 1;
+    transform: none; } }
+
+.fadeInDown {
+  animation-name: fadeInDown; }
+
+@keyframes fadeOut {
+  from {
+    opacity: 1; }
+  to {
+    opacity: 0; } }
+
+.fadeOut {
+  animation-name: fadeOut; }
+
+@keyframes fadeOutDown {
+  from {
+    opacity: 1; }
+  to {
+    opacity: 0;
+    transform: translate3d(0, 100%, 0); } }
+
+.fadeOutDown {
+  animation-name: fadeOutDown; }
+
+@keyframes fadeOutUp {
+  from {
+    opacity: 1; }
+  to {
+    opacity: 0;
+    transform: translate3d(0, -100%, 0); } }
+
+.fadeOutUp {
+  animation-name: fadeOutUp; }
+
+.white-content {
+  background: #f5f6fa; }
+  .white-content .navbar.navbar-transparent .navbar-brand {
+    color: #1d253b; }
+  .white-content .navbar.navbar-transparent .navbar-toggler-bar {
+    background: #1d253b; }
+  .white-content .navbar.navbar-transparent .navbar-nav li a:not(.dropdown-item) {
+    color: #1d253b; }
+    .white-content .navbar.navbar-transparent .navbar-nav li a:not(.dropdown-item) i {
+      color: #1d253b; }
+  .white-content .navbar.navbar-transparent .navbar-minimize button i {
+    color: #1d253b; }
+  .white-content .navbar.navbar-transparent .search-bar.input-group i {
+    color: #1d253b; }
+  .white-content .navbar.navbar-transparent .search-bar.input-group .form-control {
+    color: #344675; }
+    .white-content .navbar.navbar-transparent .search-bar.input-group .form-control::placeholder {
+      color: #9A9A9A; }
+  .white-content .sidebar {
+    box-shadow: 0 2px 22px 0 rgba(0, 0, 0, 0.1), 0 4px 20px 0 rgba(0, 0, 0, 0.15); }
+    .white-content .sidebar p {
+      color: rgba(255, 255, 255, 0.8); }
+  .white-content .main-panel {
+    background: #f5f6fa; }
+  .white-content h1,
+  .white-content h2,
+  .white-content h3,
+  .white-content h4,
+  .white-content h5,
+  .white-content h6,
+  .white-content p,
+  .white-content ol li,
+  .white-content ul li,
+  .white-content pre {
+    color: #1d253b; }
+  .white-content .font-icon-detail i {
+    color: #222a42; }
+  .white-content .btn:not([data-action]):hover {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .white-content .btn-neutral.btn-link {
+    color: rgba(34, 42, 66, 0.7); }
+  .white-content .form-control::-moz-placeholder {
+    color: rgba(34, 42, 66, 0.4);
+    opacity: 1;
+    filter: alpha(opacity=100); }
+  .white-content .form-control:-moz-placeholder {
+    color: rgba(34, 42, 66, 0.4);
+    opacity: 1;
+    filter: alpha(opacity=100); }
+  .white-content .form-control::-webkit-input-placeholder {
+    color: rgba(34, 42, 66, 0.4);
+    opacity: 1;
+    filter: alpha(opacity=100); }
+  .white-content .form-control:-ms-input-placeholder {
+    color: rgba(34, 42, 66, 0.4);
+    opacity: 1;
+    filter: alpha(opacity=100); }
+  .white-content .has-danger .form-control,
+  .white-content .has-danger .input-group-prepend .input-group-text {
+    border-color: #ec250d; }
+  .white-content .input-group-prepend .input-group-text {
+    border-color: rgba(29, 37, 59, 0.5);
+    color: #1d253b; }
+  .white-content .form-control {
+    color: #222a42;
+    border-color: rgba(29, 37, 59, 0.5); }
+    .white-content .form-control:focus {
+      border-color: #e14eca; }
+  .white-content .form-group.no-border .form-control,
+  .white-content .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+  .white-content .form-group.no-border .form-control + .input-group-append .input-group-text,
+  .white-content .form-group.no-border .input-group-prepend .input-group-text,
+  .white-content .form-group.no-border .input-group-append .input-group-text,
+  .white-content .input-group.no-border .form-control,
+  .white-content .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+  .white-content .input-group.no-border .form-control + .input-group-append .input-group-text,
+  .white-content .input-group.no-border .input-group-prepend .input-group-text,
+  .white-content .input-group.no-border .input-group-append .input-group-text {
+    background-color: rgba(222, 222, 222, 0.3); }
+    .white-content .form-group.no-border .form-control:focus, .white-content .form-group.no-border .form-control:active, .white-content .form-group.no-border .form-control:active,
+    .white-content .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+    .white-content .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+    .white-content .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+    .white-content .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+    .white-content .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+    .white-content .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+    .white-content .form-group.no-border .input-group-prepend .input-group-text:focus,
+    .white-content .form-group.no-border .input-group-prepend .input-group-text:active,
+    .white-content .form-group.no-border .input-group-prepend .input-group-text:active,
+    .white-content .form-group.no-border .input-group-append .input-group-text:focus,
+    .white-content .form-group.no-border .input-group-append .input-group-text:active,
+    .white-content .form-group.no-border .input-group-append .input-group-text:active,
+    .white-content .input-group.no-border .form-control:focus,
+    .white-content .input-group.no-border .form-control:active,
+    .white-content .input-group.no-border .form-control:active,
+    .white-content .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+    .white-content .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+    .white-content .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+    .white-content .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+    .white-content .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+    .white-content .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+    .white-content .input-group.no-border .input-group-prepend .input-group-text:focus,
+    .white-content .input-group.no-border .input-group-prepend .input-group-text:active,
+    .white-content .input-group.no-border .input-group-prepend .input-group-text:active,
+    .white-content .input-group.no-border .input-group-append .input-group-text:focus,
+    .white-content .input-group.no-border .input-group-append .input-group-text:active,
+    .white-content .input-group.no-border .input-group-append .input-group-text:active {
+      background-color: rgba(222, 222, 222, 0.5); }
+  .white-content .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+  .white-content .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+  .white-content .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+  .white-content .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+    background-color: transparent; }
+  .white-content .input-group[disabled] .input-group-prepend .input-group-text,
+  .white-content .input-group[disabled] .input-group-append .input-group-text {
+    background-color: #222a42; }
+  .white-content .form-control[disabled],
+  .white-content .form-control[readonly],
+  .white-content fieldset[disabled] .form-control {
+    background: #E3E3E3;
+    border-color: rgba(29, 37, 59, 0.3); }
+  .white-content .input-group-focus .input-group-prepend .input-group-text,
+  .white-content .input-group-focus .input-group-append .input-group-text,
+  .white-content .input-group-focus .form-control {
+    border-color: #e14eca; }
+  .white-content .input-group-focus.no-border .input-group-prepend .input-group-text,
+  .white-content .input-group-focus.no-border .input-group-append .input-group-text {
+    background-color: rgba(222, 222, 222, 0.5); }
+  .white-content .input-group-prepend .input-group-text {
+    border-right: none; }
+  .white-content .input-group-append .input-group-text {
+    border-left: none; }
+  .white-content .has-danger .form-control:focus,
+  .white-content .has-success.input-group-focus .input-group-append .input-group-text,
+  .white-content .has-success.input-group-focus .input-group-prepend .input-group-text {
+    border-color: #ec250d; }
+  .white-content .has-success .form-control:focus,
+  .white-content .has-success.input-group-focus .input-group-append .input-group-text,
+  .white-content .has-success.input-group-focus .input-group-prepend .input-group-text {
+    border-color: #00bf9a; }
+  .white-content .btn.btn-link:hover, .white-content .btn.btn-link:active, .white-content .btn.btn-link:focus {
+    color: #9A9A9A !important; }
+  .white-content .btn-group .btn.active {
+    box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); }
+  .white-content .card:not(.card-white) {
+    background: #ffffff;
+    box-shadow: 0 1px 15px 0 rgba(0, 0, 0, 0.05); }
+    .white-content .card:not(.card-white) .card-header {
+      color: #222a42; }
+      .white-content .card:not(.card-white) .card-header a[data-toggle="collapse"] {
+        color: #222a42; }
+    .white-content .card:not(.card-white) .card-header .card-title,
+    .white-content .card:not(.card-white) .card-body .card-title {
+      color: #1d253b; }
+    .white-content .card:not(.card-white) .card-body .card-category,
+    .white-content .card:not(.card-white) .card-body .card-description {
+      color: #1d253b; }
+    .white-content .card:not(.card-white) label:not(.btn) {
+      color: #344675; }
+    .white-content .card:not(.card-white).nav-pills .nav-item .nav-link {
+      color: #444444;
+      background-color: rgba(222, 222, 222, 0.3); }
+      .white-content .card:not(.card-white).nav-pills .nav-item .nav-link:not(.active):hover {
+        background: rgba(222, 222, 222, 0.5); }
+      .white-content .card:not(.card-white).nav-pills .nav-item .nav-link.active {
+        color: #ffffff; }
+    .white-content .card:not(.card-white) .tab-content .tab-pane {
+      color: #444444; }
+    .white-content .card:not(.card-white) .card {
+      box-shadow: none; }
+    .white-content .card:not(.card-white).card-plain {
+      background: transparent;
+      box-shadow: none; }
+    .white-content .card:not(.card-white).card-tasks .card-body i {
+      color: rgba(34, 42, 66, 0.7); }
+      .white-content .card:not(.card-white).card-tasks .card-body i:hover {
+        color: #222a42; }
+  .white-content .table > tbody > tr > td {
+    color: rgba(34, 42, 66, 0.7) !important; }
+  .white-content .table > thead > tr > th,
+  .white-content .table > tbody > tr > th,
+  .white-content .table > tfoot > tr > th,
+  .white-content .table > thead > tr > td,
+  .white-content .table > tbody > tr > td,
+  .white-content .table > tfoot > tr > td {
+    border-color: rgba(34, 42, 66, 0.2);
+    padding: 12px 7px;
+    vertical-align: middle; }
+  .white-content .table > thead > tr > th,
+  .white-content .table button.btn-neutral.btn-link {
+    color: rgba(34, 42, 66, 0.7); }
+  .white-content .footer ul li a {
+    color: #1d253b; }
+  .white-content .footer .copyright {
+    color: #1d253b; }
+  .white-content .progress-container .progress,
+  .white-content .progress-container.progress.sm .progress {
+    background: rgba(34, 42, 66, 0.1);
+    box-shadow: 0 0 0 3px rgba(34, 42, 66, 0.1); }
+    .white-content .progress-container .progress .progress-value,
+    .white-content .progress-container.progress.sm .progress .progress-value {
+      color: #344675; }
+  .white-content .progress-container .progress-badge,
+  .white-content .progress-container.progress.sm .progress-badge {
+    color: #1d253b; }
+  .white-content .full-page {
+    background: #f5f6fa; }
+    .white-content .full-page h1,
+    .white-content .full-page h2,
+    .white-content .full-page h3,
+    .white-content .full-page h4,
+    .white-content .full-page h5,
+    .white-content .full-page h6,
+    .white-content .full-page p,
+    .white-content .full-page ol li,
+    .white-content .full-page ul li,
+    .white-content .full-page pre {
+      color: #1d253b; }
+    .white-content .full-page .description {
+      color: #9A9A9A; }
+    .white-content .full-page .footer ul li a {
+      color: #1d253b; }
+    .white-content .full-page .footer .copyright {
+      color: #1d253b; }
+  .white-content .nav-pills .nav-item .nav-link:not(.active) {
+    background: #d3d7e9;
+    color: #1d253b; }
+    .white-content .nav-pills .nav-item .nav-link:not(.active):hover {
+      background: #cccccc; }
+
+.card {
+  background: #27293d;
+  border: 0;
+  position: relative;
+  width: 100%;
+  margin-bottom: 30px;
+  box-shadow: 0 1px 20px 0px rgba(0, 0, 0, 0.1); }
+  .card label {
+    color: rgba(255, 255, 255, 0.6); }
+  .card .card-title {
+    margin-bottom: .75rem; }
+  .card .card-body {
+    padding: 15px; }
+    .card .card-body.table-full-width {
+      padding-left: 0;
+      padding-right: 0; }
+    .card .card-body .card-title {
+      color: #ffffff;
+      text-transform: inherit;
+      font-weight: 300;
+      margin-bottom: .75rem; }
+    .card .card-body .card-description, .card .card-body .card-category {
+      color: rgba(255, 255, 255, 0.6); }
+  .card .card-header {
+    padding: 15px 15px 0;
+    border: 0;
+    color: rgba(255, 255, 255, 0.8); }
+    .card .card-header:not([data-background-color]) {
+      background-color: transparent; }
+    .card .card-header .card-title {
+      color: #ffffff;
+      font-weight: 100; }
+    .card .card-header .card-category {
+      color: #9A9A9A;
+      margin-bottom: 5px;
+      font-weight: 300; }
+  .card .map {
+    border-radius: 0.2857rem; }
+    .card .map.map-big {
+      height: 420px; }
+  .card.card-white {
+    background: #ffffff; }
+    .card.card-white .card-title {
+      color: #222a42; }
+    .card.card-white .card-category, .card.card-white .stats {
+      color: #808080; }
+    .card.card-white .form-control::-moz-placeholder {
+      color: rgba(34, 42, 66, 0.4);
+      opacity: 1;
+      filter: alpha(opacity=100); }
+    .card.card-white .form-control:-moz-placeholder {
+      color: rgba(34, 42, 66, 0.4);
+      opacity: 1;
+      filter: alpha(opacity=100); }
+    .card.card-white .form-control::-webkit-input-placeholder {
+      color: rgba(34, 42, 66, 0.4);
+      opacity: 1;
+      filter: alpha(opacity=100); }
+    .card.card-white .form-control:-ms-input-placeholder {
+      color: rgba(34, 42, 66, 0.4);
+      opacity: 1;
+      filter: alpha(opacity=100); }
+    .card.card-white .has-danger .form-control, .card.card-white .has-danger .input-group-prepend .input-group-text {
+      border-color: #ec250d; }
+    .card.card-white .input-group-prepend .input-group-text {
+      border-color: rgba(29, 37, 59, 0.2);
+      color: #1d253b; }
+    .card.card-white .form-control {
+      color: #222a42;
+      border-color: rgba(29, 37, 59, 0.2); }
+      .card.card-white .form-control:focus {
+        border-color: #e14eca; }
+    .card.card-white label:not(.btn) {
+      color: #344675; }
+    .card.card-white .form-group.no-border .form-control,
+    .card.card-white .form-group.no-border .form-control + .input-group-prepend .input-group-text,
+    .card.card-white .form-group.no-border .form-control + .input-group-append .input-group-text,
+    .card.card-white .form-group.no-border .input-group-prepend .input-group-text,
+    .card.card-white .form-group.no-border .input-group-append .input-group-text,
+    .card.card-white .input-group.no-border .form-control,
+    .card.card-white .input-group.no-border .form-control + .input-group-prepend .input-group-text,
+    .card.card-white .input-group.no-border .form-control + .input-group-append .input-group-text,
+    .card.card-white .input-group.no-border .input-group-prepend .input-group-text,
+    .card.card-white .input-group.no-border .input-group-append .input-group-text {
+      background-color: rgba(222, 222, 222, 0.3); }
+      .card.card-white .form-group.no-border .form-control:focus, .card.card-white .form-group.no-border .form-control:active, .card.card-white .form-group.no-border .form-control:active,
+      .card.card-white .form-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+      .card.card-white .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+      .card.card-white .form-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+      .card.card-white .form-group.no-border .form-control + .input-group-append .input-group-text:focus,
+      .card.card-white .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+      .card.card-white .form-group.no-border .form-control + .input-group-append .input-group-text:active,
+      .card.card-white .form-group.no-border .input-group-prepend .input-group-text:focus,
+      .card.card-white .form-group.no-border .input-group-prepend .input-group-text:active,
+      .card.card-white .form-group.no-border .input-group-prepend .input-group-text:active,
+      .card.card-white .form-group.no-border .input-group-append .input-group-text:focus,
+      .card.card-white .form-group.no-border .input-group-append .input-group-text:active,
+      .card.card-white .form-group.no-border .input-group-append .input-group-text:active,
+      .card.card-white .input-group.no-border .form-control:focus,
+      .card.card-white .input-group.no-border .form-control:active,
+      .card.card-white .input-group.no-border .form-control:active,
+      .card.card-white .input-group.no-border .form-control + .input-group-prepend .input-group-text:focus,
+      .card.card-white .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+      .card.card-white .input-group.no-border .form-control + .input-group-prepend .input-group-text:active,
+      .card.card-white .input-group.no-border .form-control + .input-group-append .input-group-text:focus,
+      .card.card-white .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+      .card.card-white .input-group.no-border .form-control + .input-group-append .input-group-text:active,
+      .card.card-white .input-group.no-border .input-group-prepend .input-group-text:focus,
+      .card.card-white .input-group.no-border .input-group-prepend .input-group-text:active,
+      .card.card-white .input-group.no-border .input-group-prepend .input-group-text:active,
+      .card.card-white .input-group.no-border .input-group-append .input-group-text:focus,
+      .card.card-white .input-group.no-border .input-group-append .input-group-text:active,
+      .card.card-white .input-group.no-border .input-group-append .input-group-text:active {
+        background-color: rgba(222, 222, 222, 0.5); }
+    .card.card-white .form-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+    .card.card-white .form-group.no-border .form-control:focus + .input-group-append .input-group-text,
+    .card.card-white .input-group.no-border .form-control:focus + .input-group-prepend .input-group-text,
+    .card.card-white .input-group.no-border .form-control:focus + .input-group-append .input-group-text {
+      background-color: transparent; }
+    .card.card-white .input-group[disabled] .input-group-prepend .input-group-text,
+    .card.card-white .input-group[disabled] .input-group-append .input-group-text {
+      background-color: #222a42; }
+    .card.card-white .form-control[disabled], .card.card-white .form-control[readonly], .card.card-white fieldset[disabled] .form-control {
+      background: #E3E3E3;
+      border-color: rgba(29, 37, 59, 0.3); }
+    .card.card-white .input-group-focus .input-group-prepend .input-group-text,
+    .card.card-white .input-group-focus .input-group-append .input-group-text,
+    .card.card-white .input-group-focus .form-control {
+      background-color: #ffffff;
+      border-color: #e14eca; }
+    .card.card-white .input-group-focus.no-border .input-group-prepend .input-group-text,
+    .card.card-white .input-group-focus.no-border .input-group-append .input-group-text {
+      background-color: rgba(222, 222, 222, 0.5); }
+    .card.card-white .input-group-prepend .input-group-text {
+      border-right: none; }
+    .card.card-white .input-group-append .input-group-text {
+      border-left: none; }
+    .card.card-white .has-danger .form-control:focus, .card.card-white .has-success.input-group-focus .input-group-append .input-group-text, .card.card-white .has-success.input-group-focus .input-group-prepend .input-group-text {
+      border-color: #ec250d; }
+    .card.card-white .has-success .form-control:focus, .card.card-white .has-success.input-group-focus .input-group-append .input-group-text, .card.card-white .has-success.input-group-focus .input-group-prepend .input-group-text {
+      border-color: #00bf9a; }
+  .card.card-plain {
+    background: transparent;
+    box-shadow: none; }
+  .card .image {
+    overflow: hidden;
+    height: 200px;
+    position: relative; }
+  .card .avatar {
+    width: 30px;
+    height: 30px;
+    overflow: hidden;
+    border-radius: 50%;
+    margin-bottom: 15px; }
+  .card label {
+    font-size: 0.75rem;
+    margin-bottom: 5px; }
+  .card .card-footer {
+    background-color: transparent;
+    border: 0;
+    padding: 15px; }
+    .card .card-footer .stats i {
+      margin-right: 5px;
+      position: relative; }
+    .card .card-footer h6 {
+      margin-bottom: 0;
+      padding: 7px 0; }
+
+.card-body {
+  padding: 1.25rem; }
+
+@media (max-width: 767.98px) {
+  .card.card-chart .card-header .btn-group-toggle .tim-icons {
+    font-size: .875rem;
+    top: -1px; } }
+
+.card-chart {
+  overflow: hidden; }
+  .card-chart .card-header .card-title i {
+    font-size: 16px;
+    margin-right: 5px;
+    margin-bottom: 3px; }
+  .card-chart .card-header .card-category {
+    margin-bottom: 5px; }
+  .card-chart .card-body {
+    padding-left: 5px;
+    padding-right: 5px; }
+    .card-chart .card-body .tab-space {
+      padding: 0; }
+  .card-chart .table {
+    margin-bottom: 0; }
+    .card-chart .table td {
+      border-top: none;
+      border-bottom: 1px solid rgba(255, 255, 255, 0.1); }
+  .card-chart .card-progress {
+    margin-top: 30px;
+    padding: 0 10px; }
+  .card-chart .chart-area {
+    height: 220px;
+    width: 100%; }
+  .card-chart .card-footer {
+    margin-top: 15px; }
+    .card-chart .card-footer .stats {
+      color: #9A9A9A; }
+  .card-chart .dropdown {
+    position: absolute;
+    right: 20px;
+    top: 20px; }
+    .card-chart .dropdown .btn {
+      margin: 0; }
+  .card-chart.card-chart-pie .chart-area {
+    padding: 10px 0 25px;
+    height: auto; }
+  .card-chart.card-chart-pie .card-title {
+    margin-bottom: 10px; }
+    .card-chart.card-chart-pie .card-title i {
+      font-size: 1rem; }
+
+.map {
+  height: 500px; }
+
+.card-user {
+  overflow: hidden; }
+  .card-user .image {
+    height: 120px; }
+  .card-user .author {
+    text-align: center;
+    text-transform: none;
+    margin-top: 25px; }
+    .card-user .author a + p.description {
+      margin-top: -7px; }
+    .card-user .author .block {
+      position: absolute;
+      height: 100px;
+      width: 250px; }
+      .card-user .author .block.block-one {
+        background: rgba(225, 78, 202, 0.6);
+        background: linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
+        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=10);
+        transform: rotate(150deg);
+        margin-top: -90px;
+        margin-left: -50px; }
+      .card-user .author .block.block-two {
+        background: rgba(225, 78, 202, 0.6);
+        background: linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
+        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=10);
+        transform: rotate(30deg);
+        margin-top: -40px;
+        margin-left: -100px; }
+      .card-user .author .block.block-three {
+        background: rgba(225, 78, 202, 0.6);
+        background: linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
+        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=10);
+        transform: rotate(170deg);
+        margin-top: -70px;
+        right: -45px; }
+      .card-user .author .block.block-four {
+        background: rgba(225, 78, 202, 0.6);
+        background: linear-gradient(to right, rgba(225, 78, 202, 0.6) 0%, rgba(225, 78, 202, 0) 100%);
+        filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=10);
+        transform: rotate(150deg);
+        margin-top: -25px;
+        right: -45px; }
+  .card-user .avatar {
+    width: 124px;
+    height: 124px;
+    border: 5px solid #2b3553;
+    border-bottom-color: transparent;
+    background-color: transparent;
+    position: relative; }
+  .card-user .card-body {
+    min-height: 240px; }
+  .card-user hr {
+    margin: 5px 15px; }
+  .card-user .button-container {
+    margin-bottom: 6px;
+    text-align: center; }
+  .card-user .card-description {
+    margin-top: 30px; }
+
+.card-tasks {
+  height: 473px; }
+  .card-tasks .table-full-width {
+    max-height: 410px;
+    position: relative; }
+  .card-tasks .card-header .title {
+    margin-right: 20px;
+    font-weight: 400; }
+  .card-tasks .card-header .dropdown {
+    float: right;
+    color: #cccccc; }
+  .card-tasks .card-body i {
+    color: #9A9A9A;
+    font-size: 1.4em; }
+    .card-tasks .card-body i:hover {
+      color: #ffffff; }
+
+.card-plain {
+  background: transparent;
+  box-shadow: none; }
+  .card-plain .card-header,
+  .card-plain .card-footer {
+    margin-left: 0;
+    margin-right: 0;
+    background-color: transparent; }
+  .card-plain:not(.card-subcategories).card-body {
+    padding-left: 0;
+    padding-right: 0; }
+
+/*# sourceMappingURL=black-dashboard.css.map */

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
apps/static/assets/css/black-dashboard.css.map


Різницю між файлами не показано, бо вона завелика
+ 16 - 0
apps/static/assets/css/black-dashboard.min.css


+ 550 - 0
apps/static/assets/css/nucleo-icons.css

@@ -0,0 +1,550 @@
+/* --------------------------------
+
+Nucleo Outline Web Font - nucleoapp.com/
+License - nucleoapp.com/license/
+Created using IcoMoon - icomoon.io
+
+-------------------------------- */
+
+@font-face {
+  font-family: 'Nucleo';
+  src: url('../fonts/nucleo.eot');
+  src: url('../fonts/nucleo.eot') format('embedded-opentype'),
+    url('../fonts/nucleo.woff2') format('woff2'),
+    url('../fonts/nucleo.woff') format('woff'),
+    url('../fonts/nucleo.ttf') format('truetype'),
+    url('../fonts/nucleo.svg') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+
+/*------------------------
+	base class definition
+-------------------------*/
+
+.tim-icons {
+  display: inline-block;
+  font: normal normal normal 1em/1 'Nucleo';
+  vertical-align: middle;
+  speak: none;
+  text-transform: none;
+  /* Better Font Rendering */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.font-icon-detail {
+  text-align: center;
+  padding: 45px 0 30px;
+  border: 1px solid #e44cc4;
+  border-radius: .1875rem;
+  margin: 15px 0;
+  min-height: 168px;
+}
+
+.font-icon-detail i {
+  color: #FFFFFF;
+  font-size: 1.5em;
+}
+
+.font-icon-detail p {
+  color: #e44cc4 !important;
+  margin-top: 30px;
+  padding: 0 10px;
+  font-size: .7142em;
+}
+
+/*------------------------
+  change icon size
+-------------------------*/
+
+.tim-icons-sm {
+  font-size: 0.8em;
+}
+
+.tim-icons-lg {
+  font-size: 1.2em;
+}
+
+/* absolute units */
+.tim-icons-16 {
+  font-size: 16px;
+}
+
+.tim-icons-32 {
+  font-size: 32px;
+}
+
+/*----------------------------------
+  add a square/circle background
+-----------------------------------*/
+
+.tim-icons-bg-square,
+.tim-icons-bg-circle {
+  padding: 0.35em;
+}
+
+.tim-icons-bg-circle {
+  border-radius: 50%;
+}
+
+/*------------------------
+  list icons
+-------------------------*/
+
+
+
+/*------------------------
+  spinning icons
+-------------------------*/
+
+.tim-icons-is-spinning {
+  -webkit-animation: tim-icons-spin 2s infinite linear;
+  -moz-animation: tim-icons-spin 2s infinite linear;
+  animation: tim-icons-spin 2s infinite linear;
+}
+
+@-webkit-keyframes tim-icons-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+  }
+}
+
+@-moz-keyframes tim-icons-spin {
+  0% {
+    -moz-transform: rotate(0deg);
+  }
+
+  100% {
+    -moz-transform: rotate(360deg);
+  }
+}
+
+@keyframes tim-icons-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+    -moz-transform: rotate(0deg);
+    -ms-transform: rotate(0deg);
+    -o-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  100% {
+    -webkit-transform: rotate(360deg);
+    -moz-transform: rotate(360deg);
+    -ms-transform: rotate(360deg);
+    -o-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+
+/*------------------------
+  rotated/flipped icons
+-------------------------*/
+/*------------------------
+	icons
+-------------------------*/
+
+.icon-alert-circle-exc::before {
+  content: "\ea02";
+}
+
+.icon-align-center::before {
+  content: "\ea03";
+}
+
+.icon-align-left-2::before {
+  content: "\ea04";
+}
+
+.icon-app::before {
+  content: "\ea05";
+}
+
+.icon-atom::before {
+  content: "\ea06";
+}
+
+.icon-attach-87::before {
+  content: "\ea07";
+}
+
+.icon-badge::before {
+  content: "\ea08";
+}
+
+.icon-bag-16::before {
+  content: "\ea09";
+}
+
+.icon-bank::before {
+  content: "\ea0a";
+}
+
+.icon-basket-simple::before {
+  content: "\ea0b";
+}
+
+.icon-bell-55::before {
+  content: "\ea0c";
+}
+
+.icon-bold::before {
+  content: "\ea0d";
+}
+
+.icon-book-bookmark::before {
+  content: "\ea0e";
+}
+
+.icon-bulb-63::before {
+  content: "\ea0f";
+}
+
+.icon-bullet-list-67::before {
+  content: "\ea10";
+}
+
+.icon-bus-front-12::before {
+  content: "\ea11";
+}
+
+.icon-button-pause::before {
+  content: "\ea12";
+}
+
+.icon-button-power::before {
+  content: "\ea13";
+}
+
+.icon-calendar-60::before {
+  content: "\ea14";
+}
+
+.icon-camera-18::before {
+  content: "\ea15";
+}
+
+.icon-caps-small::before {
+  content: "\ea16";
+}
+
+.icon-cart::before {
+  content: "\ea17";
+}
+
+.icon-chart-bar-32::before {
+  content: "\ea18";
+}
+
+.icon-chart-pie-36::before {
+  content: "\ea19";
+}
+
+.icon-chat-33::before {
+  content: "\ea1a";
+}
+
+.icon-check-2::before {
+  content: "\ea1b";
+}
+
+.icon-cloud-download-93::before {
+  content: "\ea1c";
+}
+
+.icon-cloud-upload-94::before {
+  content: "\ea1d";
+}
+
+.icon-coins::before {
+  content: "\ea1e";
+}
+
+.icon-compass-05::before {
+  content: "\ea1f";
+}
+
+.icon-controller::before {
+  content: "\ea20";
+}
+
+.icon-credit-card::before {
+  content: "\ea21";
+}
+
+.icon-delivery-fast::before {
+  content: "\ea22";
+}
+
+.icon-double-left::before {
+  content: "\ea23";
+}
+
+.icon-double-right::before {
+  content: "\ea24";
+}
+
+.icon-email-85::before {
+  content: "\ea25";
+}
+
+.icon-gift-2::before {
+  content: "\ea26";
+}
+
+.icon-globe-2::before {
+  content: "\ea27";
+}
+
+.icon-headphones::before {
+  content: "\ea28";
+}
+
+.icon-heart-2::before {
+  content: "\ea29";
+}
+
+.icon-html5::before {
+  content: "\ea2a";
+}
+
+.icon-image-02::before {
+  content: "\ea2b";
+}
+
+.icon-istanbul::before {
+  content: "\ea2c";
+}
+
+.icon-key-25::before {
+  content: "\ea2d";
+}
+
+.icon-laptop::before {
+  content: "\ea2e";
+}
+
+.icon-light-3::before {
+  content: "\ea2f";
+}
+
+.icon-link-72::before {
+  content: "\ea30";
+}
+
+.icon-lock-circle::before {
+  content: "\ea31";
+}
+
+.icon-map-big::before {
+  content: "\ea32";
+}
+
+.icon-minimal-down::before {
+  content: "\ea33";
+}
+
+.icon-minimal-left::before {
+  content: "\ea34";
+}
+
+.icon-minimal-right::before {
+  content: "\ea35";
+}
+
+.icon-minimal-up::before {
+  content: "\ea36";
+}
+
+.icon-mobile::before {
+  content: "\ea37";
+}
+
+.icon-molecule-40::before {
+  content: "\ea38";
+}
+
+.icon-money-coins::before {
+  content: "\ea39";
+}
+
+.icon-notes::before {
+  content: "\ea3a";
+}
+
+.icon-palette::before {
+  content: "\ea3b";
+}
+
+.icon-paper::before {
+  content: "\ea3c";
+}
+
+.icon-pencil::before {
+  content: "\ea3d";
+}
+
+.icon-pin::before {
+  content: "\ea3e";
+}
+
+.icon-planet::before {
+  content: "\ea3f";
+}
+
+.icon-puzzle-10::before {
+  content: "\ea40";
+}
+
+.icon-satisfied::before {
+  content: "\ea41";
+}
+
+.icon-scissors::before {
+  content: "\ea42";
+}
+
+.icon-send::before {
+  content: "\ea43";
+}
+
+.icon-settings-gear-63::before {
+  content: "\ea44";
+}
+
+.icon-settings::before {
+  content: "\ea45";
+}
+
+.icon-simple-add::before {
+  content: "\ea46";
+}
+
+.icon-simple-delete::before {
+  content: "\ea47";
+}
+
+.icon-simple-remove::before {
+  content: "\ea48";
+}
+
+.icon-single-02::before {
+  content: "\ea49";
+}
+
+.icon-single-copy-04::before {
+  content: "\ea4a";
+}
+
+.icon-sound-wave::before {
+  content: "\ea4b";
+}
+
+.icon-spaceship::before {
+  content: "\ea4c";
+}
+
+.icon-square-pin::before {
+  content: "\ea4d";
+}
+
+.icon-support-17::before {
+  content: "\ea4e";
+}
+
+.icon-tablet-2::before {
+  content: "\ea4f";
+}
+
+.icon-tag::before {
+  content: "\ea50";
+}
+
+.icon-tap-02::before {
+  content: "\ea51";
+}
+
+.icon-tie-bow::before {
+  content: "\ea52";
+}
+
+.icon-time-alarm::before {
+  content: "\ea53";
+}
+
+.icon-trash-simple::before {
+  content: "\ea54";
+}
+
+.icon-triangle-right-17::before {
+  content: "\ea55";
+}
+
+.icon-trophy::before {
+  content: "\ea56";
+}
+
+.icon-tv-2::before {
+  content: "\ea57";
+}
+
+.icon-upload::before {
+  content: "\ea58";
+}
+
+.icon-user-run::before {
+  content: "\ea59";
+}
+
+.icon-vector::before {
+  content: "\ea5a";
+}
+
+.icon-video-66::before {
+  content: "\ea5b";
+}
+
+.icon-volume-98::before {
+  content: "\ea5c";
+}
+
+.icon-wallet-43::before {
+  content: "\ea5d";
+}
+
+.icon-watch-time::before {
+  content: "\ea5e";
+}
+
+.icon-wifi::before {
+  content: "\ea5f";
+}
+
+.icon-world::before {
+  content: "\ea60";
+}
+
+.icon-zoom-split::before {
+  content: "\ea61";
+}
+
+.icon-refresh-01::before {
+  content: "\ea62";
+}
+
+.icon-refresh-02::before {
+  content: "\ea63";
+}
+
+.icon-shape-star::before {
+  content: "\ea64";
+}
+
+.icon-components::before {
+  content: "\ea65";
+}

+ 63 - 0
apps/static/assets/demo/demo.css

@@ -0,0 +1,63 @@
+.tim-row {
+  margin-bottom: 20px;
+}
+
+.tim-white-buttons {
+  background-color: #777777;
+}
+
+.typography-line {
+  padding-left: 25%;
+  margin-bottom: 35px;
+  position: relative;
+  display: block;
+  width: 100%;
+}
+
+.typography-line span {
+  bottom: 10px;
+  color: #c0c1c2;
+  display: block;
+  font-weight: 400;
+  font-size: 13px;
+  line-height: 13px;
+  left: 0;
+  position: absolute;
+  width: 260px;
+  text-transform: none;
+}
+
+.tim-row {
+  padding-top: 60px;
+}
+
+.tim-row h3 {
+  margin-top: 0;
+}
+
+.offline-doc .page-header {
+  display: flex;
+  align-items: center;
+}
+
+.offline-doc .footer {
+  position: absolute;
+  width: 100%;
+  background: transparent;
+  bottom: 0;
+  color: #fff;
+  z-index: 1;
+}
+
+@media all and (min-width: 992px) {
+  .sidebar .nav>li.active-pro {
+    position: absolute;
+    width: 100%;
+    bottom: 10px;
+  }
+}
+
+.card.card-upgrade .card-category {
+  max-width: 530px;
+  margin: 0 auto;
+}

+ 742 - 0
apps/static/assets/demo/demo.js

@@ -0,0 +1,742 @@
+type = ['primary', 'info', 'success', 'warning', 'danger'];
+
+demo = {
+  initPickColor: function() {
+    $('.pick-class-label').click(function() {
+      var new_class = $(this).attr('new-class');
+      var old_class = $('#display-buttons').attr('data-class');
+      var display_div = $('#display-buttons');
+      if (display_div.length) {
+        var display_buttons = display_div.find('.btn');
+        display_buttons.removeClass(old_class);
+        display_buttons.addClass(new_class);
+        display_div.attr('data-class', new_class);
+      }
+    });
+  },
+
+  initDocChart: function() {
+    chartColor = "#FFFFFF";
+
+    // General configuration for the charts with Line gradientStroke
+    gradientChartOptionsConfiguration = {
+      maintainAspectRatio: false,
+      legend: {
+        display: false
+      },
+      tooltips: {
+        bodySpacing: 4,
+        mode: "nearest",
+        intersect: 0,
+        position: "nearest",
+        xPadding: 10,
+        yPadding: 10,
+        caretPadding: 10
+      },
+      responsive: true,
+      scales: {
+        yAxes: [{
+          display: 0,
+          gridLines: 0,
+          ticks: {
+            display: false
+          },
+          gridLines: {
+            zeroLineColor: "transparent",
+            drawTicks: false,
+            display: false,
+            drawBorder: false
+          }
+        }],
+        xAxes: [{
+          display: 0,
+          gridLines: 0,
+          ticks: {
+            display: false
+          },
+          gridLines: {
+            zeroLineColor: "transparent",
+            drawTicks: false,
+            display: false,
+            drawBorder: false
+          }
+        }]
+      },
+      layout: {
+        padding: {
+          left: 0,
+          right: 0,
+          top: 15,
+          bottom: 15
+        }
+      }
+    };
+
+    ctx = document.getElementById('lineChartExample').getContext("2d");
+
+    gradientStroke = ctx.createLinearGradient(500, 0, 100, 0);
+    gradientStroke.addColorStop(0, '#80b6f4');
+    gradientStroke.addColorStop(1, chartColor);
+
+    gradientFill = ctx.createLinearGradient(0, 170, 0, 50);
+    gradientFill.addColorStop(0, "rgba(128, 182, 244, 0)");
+    gradientFill.addColorStop(1, "rgba(249, 99, 59, 0.40)");
+
+    myChart = new Chart(ctx, {
+      type: 'line',
+      responsive: true,
+      data: {
+        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+        datasets: [{
+          label: "Active Users",
+          borderColor: "#f96332",
+          pointBorderColor: "#FFF",
+          pointBackgroundColor: "#f96332",
+          pointBorderWidth: 2,
+          pointHoverRadius: 4,
+          pointHoverBorderWidth: 1,
+          pointRadius: 4,
+          fill: true,
+          backgroundColor: gradientFill,
+          borderWidth: 2,
+          data: [542, 480, 430, 550, 530, 453, 380, 434, 568, 610, 700, 630]
+        }]
+      },
+      options: gradientChartOptionsConfiguration
+    });
+  },
+
+  initDashboardPageCharts: function() {
+
+    gradientChartOptionsConfigurationWithTooltipBlue = {
+      maintainAspectRatio: false,
+      legend: {
+        display: false
+      },
+
+      tooltips: {
+        backgroundColor: '#f5f5f5',
+        titleFontColor: '#333',
+        bodyFontColor: '#666',
+        bodySpacing: 4,
+        xPadding: 12,
+        mode: "nearest",
+        intersect: 0,
+        position: "nearest"
+      },
+      responsive: true,
+      scales: {
+        yAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.0)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            suggestedMin: 60,
+            suggestedMax: 125,
+            padding: 20,
+            fontColor: "#2380f7"
+          }
+        }],
+
+        xAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.1)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            padding: 20,
+            fontColor: "#2380f7"
+          }
+        }]
+      }
+    };
+
+    gradientChartOptionsConfigurationWithTooltipPurple = {
+      maintainAspectRatio: false,
+      legend: {
+        display: false
+      },
+
+      tooltips: {
+        backgroundColor: '#f5f5f5',
+        titleFontColor: '#333',
+        bodyFontColor: '#666',
+        bodySpacing: 4,
+        xPadding: 12,
+        mode: "nearest",
+        intersect: 0,
+        position: "nearest"
+      },
+      responsive: true,
+      scales: {
+        yAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.0)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            suggestedMin: 60,
+            suggestedMax: 125,
+            padding: 20,
+            fontColor: "#9a9a9a"
+          }
+        }],
+
+        xAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(225,78,202,0.1)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            padding: 20,
+            fontColor: "#9a9a9a"
+          }
+        }]
+      }
+    };
+
+    gradientChartOptionsConfigurationWithTooltipOrange = {
+      maintainAspectRatio: false,
+      legend: {
+        display: false
+      },
+
+      tooltips: {
+        backgroundColor: '#f5f5f5',
+        titleFontColor: '#333',
+        bodyFontColor: '#666',
+        bodySpacing: 4,
+        xPadding: 12,
+        mode: "nearest",
+        intersect: 0,
+        position: "nearest"
+      },
+      responsive: true,
+      scales: {
+        yAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.0)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            suggestedMin: 50,
+            suggestedMax: 110,
+            padding: 20,
+            fontColor: "#ff8a76"
+          }
+        }],
+
+        xAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(220,53,69,0.1)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            padding: 20,
+            fontColor: "#ff8a76"
+          }
+        }]
+      }
+    };
+
+    gradientChartOptionsConfigurationWithTooltipGreen = {
+      maintainAspectRatio: false,
+      legend: {
+        display: false
+      },
+
+      tooltips: {
+        backgroundColor: '#f5f5f5',
+        titleFontColor: '#333',
+        bodyFontColor: '#666',
+        bodySpacing: 4,
+        xPadding: 12,
+        mode: "nearest",
+        intersect: 0,
+        position: "nearest"
+      },
+      responsive: true,
+      scales: {
+        yAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.0)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            suggestedMin: 50,
+            suggestedMax: 125,
+            padding: 20,
+            fontColor: "#9e9e9e"
+          }
+        }],
+
+        xAxes: [{
+          barPercentage: 1.6,
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(0,242,195,0.1)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            padding: 20,
+            fontColor: "#9e9e9e"
+          }
+        }]
+      }
+    };
+
+
+    gradientBarChartConfiguration = {
+      maintainAspectRatio: false,
+      legend: {
+        display: false
+      },
+
+      tooltips: {
+        backgroundColor: '#f5f5f5',
+        titleFontColor: '#333',
+        bodyFontColor: '#666',
+        bodySpacing: 4,
+        xPadding: 12,
+        mode: "nearest",
+        intersect: 0,
+        position: "nearest"
+      },
+      responsive: true,
+      scales: {
+        yAxes: [{
+
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.1)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            suggestedMin: 60,
+            suggestedMax: 120,
+            padding: 20,
+            fontColor: "#9e9e9e"
+          }
+        }],
+
+        xAxes: [{
+
+          gridLines: {
+            drawBorder: false,
+            color: 'rgba(29,140,248,0.1)',
+            zeroLineColor: "transparent",
+          },
+          ticks: {
+            padding: 20,
+            fontColor: "#9e9e9e"
+          }
+        }]
+      }
+    };
+
+    var ctx = document.getElementById("chartLinePurple").getContext("2d");
+
+    var gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);
+
+    gradientStroke.addColorStop(1, 'rgba(72,72,176,0.2)');
+    gradientStroke.addColorStop(0.2, 'rgba(72,72,176,0.0)');
+    gradientStroke.addColorStop(0, 'rgba(119,52,169,0)'); //purple colors
+
+    var data = {
+      labels: ['JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'],
+      datasets: [{
+        label: "Data",
+        fill: true,
+        backgroundColor: gradientStroke,
+        borderColor: '#d048b6',
+        borderWidth: 2,
+        borderDash: [],
+        borderDashOffset: 0.0,
+        pointBackgroundColor: '#d048b6',
+        pointBorderColor: 'rgba(255,255,255,0)',
+        pointHoverBackgroundColor: '#d048b6',
+        pointBorderWidth: 20,
+        pointHoverRadius: 4,
+        pointHoverBorderWidth: 15,
+        pointRadius: 4,
+        data: [80, 100, 70, 80, 120, 80],
+      }]
+    };
+
+    var myChart = new Chart(ctx, {
+      type: 'line',
+      data: data,
+      options: gradientChartOptionsConfigurationWithTooltipPurple
+    });
+
+
+    var ctxGreen = document.getElementById("chartLineGreen").getContext("2d");
+
+    var gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);
+
+    gradientStroke.addColorStop(1, 'rgba(66,134,121,0.15)');
+    gradientStroke.addColorStop(0.4, 'rgba(66,134,121,0.0)'); //green colors
+    gradientStroke.addColorStop(0, 'rgba(66,134,121,0)'); //green colors
+
+    var data = {
+      labels: ['JUL', 'AUG', 'SEP', 'OCT', 'NOV'],
+      datasets: [{
+        label: "My First dataset",
+        fill: true,
+        backgroundColor: gradientStroke,
+        borderColor: '#00d6b4',
+        borderWidth: 2,
+        borderDash: [],
+        borderDashOffset: 0.0,
+        pointBackgroundColor: '#00d6b4',
+        pointBorderColor: 'rgba(255,255,255,0)',
+        pointHoverBackgroundColor: '#00d6b4',
+        pointBorderWidth: 20,
+        pointHoverRadius: 4,
+        pointHoverBorderWidth: 15,
+        pointRadius: 4,
+        data: [90, 27, 60, 12, 80],
+      }]
+    };
+
+    var myChart = new Chart(ctxGreen, {
+      type: 'line',
+      data: data,
+      options: gradientChartOptionsConfigurationWithTooltipGreen
+
+    });
+
+
+
+    var chart_labels = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];
+    var chart_data = [100, 70, 90, 70, 85, 60, 75, 60, 90, 80, 110, 100];
+
+
+    var ctx = document.getElementById("chartBig1").getContext('2d');
+
+    var gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);
+
+    gradientStroke.addColorStop(1, 'rgba(72,72,176,0.1)');
+    gradientStroke.addColorStop(0.4, 'rgba(72,72,176,0.0)');
+    gradientStroke.addColorStop(0, 'rgba(119,52,169,0)'); //purple colors
+    var config = {
+      type: 'line',
+      data: {
+        labels: chart_labels,
+        datasets: [{
+          label: "My First dataset",
+          fill: true,
+          backgroundColor: gradientStroke,
+          borderColor: '#d346b1',
+          borderWidth: 2,
+          borderDash: [],
+          borderDashOffset: 0.0,
+          pointBackgroundColor: '#d346b1',
+          pointBorderColor: 'rgba(255,255,255,0)',
+          pointHoverBackgroundColor: '#d346b1',
+          pointBorderWidth: 20,
+          pointHoverRadius: 4,
+          pointHoverBorderWidth: 15,
+          pointRadius: 4,
+          data: chart_data,
+        }]
+      },
+      options: gradientChartOptionsConfigurationWithTooltipPurple
+    };
+    var myChartData = new Chart(ctx, config);
+    $("#0").click(function() {
+      var data = myChartData.config.data;
+      data.datasets[0].data = chart_data;
+      data.labels = chart_labels;
+      myChartData.update();
+    });
+    $("#1").click(function() {
+      var chart_data = [80, 120, 105, 110, 95, 105, 90, 100, 80, 95, 70, 120];
+      var data = myChartData.config.data;
+      data.datasets[0].data = chart_data;
+      data.labels = chart_labels;
+      myChartData.update();
+    });
+
+    $("#2").click(function() {
+      var chart_data = [60, 80, 65, 130, 80, 105, 90, 130, 70, 115, 60, 130];
+      var data = myChartData.config.data;
+      data.datasets[0].data = chart_data;
+      data.labels = chart_labels;
+      myChartData.update();
+    });
+
+
+    var ctx = document.getElementById("CountryChart").getContext("2d");
+
+    var gradientStroke = ctx.createLinearGradient(0, 230, 0, 50);
+
+    gradientStroke.addColorStop(1, 'rgba(29,140,248,0.2)');
+    gradientStroke.addColorStop(0.4, 'rgba(29,140,248,0.0)');
+    gradientStroke.addColorStop(0, 'rgba(29,140,248,0)'); //blue colors
+
+
+    var myChart = new Chart(ctx, {
+      type: 'bar',
+      responsive: true,
+      legend: {
+        display: false
+      },
+      data: {
+        labels: ['USA', 'GER', 'AUS', 'UK', 'RO', 'BR'],
+        datasets: [{
+          label: "Countries",
+          fill: true,
+          backgroundColor: gradientStroke,
+          hoverBackgroundColor: gradientStroke,
+          borderColor: '#1f8ef1',
+          borderWidth: 2,
+          borderDash: [],
+          borderDashOffset: 0.0,
+          data: [53, 20, 10, 80, 100, 45],
+        }]
+      },
+      options: gradientBarChartConfiguration
+    });
+
+  },
+
+  initGoogleMaps: function() {
+    var myLatlng = new google.maps.LatLng(40.748817, -73.985428);
+    var mapOptions = {
+      zoom: 13,
+      center: myLatlng,
+      scrollwheel: false, //we disable de scroll over the map, it is a really annoing when you scroll through page
+      styles: [{
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#1d2c4d"
+          }]
+        },
+        {
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#8ec3b9"
+          }]
+        },
+        {
+          "elementType": "labels.text.stroke",
+          "stylers": [{
+            "color": "#1a3646"
+          }]
+        },
+        {
+          "featureType": "administrative.country",
+          "elementType": "geometry.stroke",
+          "stylers": [{
+            "color": "#4b6878"
+          }]
+        },
+        {
+          "featureType": "administrative.land_parcel",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#64779e"
+          }]
+        },
+        {
+          "featureType": "administrative.province",
+          "elementType": "geometry.stroke",
+          "stylers": [{
+            "color": "#4b6878"
+          }]
+        },
+        {
+          "featureType": "landscape.man_made",
+          "elementType": "geometry.stroke",
+          "stylers": [{
+            "color": "#334e87"
+          }]
+        },
+        {
+          "featureType": "landscape.natural",
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#023e58"
+          }]
+        },
+        {
+          "featureType": "poi",
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#283d6a"
+          }]
+        },
+        {
+          "featureType": "poi",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#6f9ba5"
+          }]
+        },
+        {
+          "featureType": "poi",
+          "elementType": "labels.text.stroke",
+          "stylers": [{
+            "color": "#1d2c4d"
+          }]
+        },
+        {
+          "featureType": "poi.park",
+          "elementType": "geometry.fill",
+          "stylers": [{
+            "color": "#023e58"
+          }]
+        },
+        {
+          "featureType": "poi.park",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#3C7680"
+          }]
+        },
+        {
+          "featureType": "road",
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#304a7d"
+          }]
+        },
+        {
+          "featureType": "road",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#98a5be"
+          }]
+        },
+        {
+          "featureType": "road",
+          "elementType": "labels.text.stroke",
+          "stylers": [{
+            "color": "#1d2c4d"
+          }]
+        },
+        {
+          "featureType": "road.highway",
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#2c6675"
+          }]
+        },
+        {
+          "featureType": "road.highway",
+          "elementType": "geometry.fill",
+          "stylers": [{
+            "color": "#9d2a80"
+          }]
+        },
+        {
+          "featureType": "road.highway",
+          "elementType": "geometry.stroke",
+          "stylers": [{
+            "color": "#9d2a80"
+          }]
+        },
+        {
+          "featureType": "road.highway",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#b0d5ce"
+          }]
+        },
+        {
+          "featureType": "road.highway",
+          "elementType": "labels.text.stroke",
+          "stylers": [{
+            "color": "#023e58"
+          }]
+        },
+        {
+          "featureType": "transit",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#98a5be"
+          }]
+        },
+        {
+          "featureType": "transit",
+          "elementType": "labels.text.stroke",
+          "stylers": [{
+            "color": "#1d2c4d"
+          }]
+        },
+        {
+          "featureType": "transit.line",
+          "elementType": "geometry.fill",
+          "stylers": [{
+            "color": "#283d6a"
+          }]
+        },
+        {
+          "featureType": "transit.station",
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#3a4762"
+          }]
+        },
+        {
+          "featureType": "water",
+          "elementType": "geometry",
+          "stylers": [{
+            "color": "#0e1626"
+          }]
+        },
+        {
+          "featureType": "water",
+          "elementType": "labels.text.fill",
+          "stylers": [{
+            "color": "#4e6d70"
+          }]
+        }
+      ]
+    };
+
+    var map = new google.maps.Map(document.getElementById("map"), mapOptions);
+
+    var marker = new google.maps.Marker({
+      position: myLatlng,
+      title: "Hello World!"
+    });
+
+    // To add the marker to the map, call setMap();
+    marker.setMap(map);
+  },
+
+  showNotification: function(from, align) {
+    color = Math.floor((Math.random() * 4) + 1);
+
+    $.notify({
+      icon: "tim-icons icon-bell-55",
+      message: "Welcome to <b>Black Dashboard</b> - a beautiful freebie for every web developer."
+
+    }, {
+      type: type[color],
+      timer: 8000,
+      placement: {
+        from: from,
+        align: align
+      }
+    });
+  }
+
+};

BIN
apps/static/assets/fonts/nucleo.eot


BIN
apps/static/assets/fonts/nucleo.ttf


BIN
apps/static/assets/fonts/nucleo.woff


BIN
apps/static/assets/fonts/nucleo.woff2


+ 59 - 0
apps/static/assets/gulpfile.js

@@ -0,0 +1,59 @@
+/*
+
+=========================================================
+* AppSeed - Simple SCSS compiler via Gulp
+=========================================================
+
+*/
+
+var autoprefixer = require('gulp-autoprefixer');
+var browserSync = require('browser-sync').create();
+var cleanCss = require('gulp-clean-css');
+var gulp = require('gulp');
+const npmDist = require('gulp-npm-dist');
+var sass = require('gulp-sass')(require('node-sass'));
+var wait = require('gulp-wait');
+var sourcemaps = require('gulp-sourcemaps');
+var rename = require("gulp-rename");
+
+// Define COMMON paths
+
+const paths = {
+    src: {
+        base: './',
+        css: './css',
+        scss: './scss',
+        node_modules: './node_modules/',
+        vendor: './vendor'
+    }
+};
+
+// Compile SCSS
+gulp.task('scss', function() {
+    return gulp.src([paths.src.scss + '/black-dashboard.scss'])
+        .pipe(wait(500))
+        .pipe(sourcemaps.init())
+        .pipe(sass().on('error', sass.logError))
+        .pipe(autoprefixer({
+            overrideBrowserslist: ['> 1%']
+        }))
+        .pipe(sourcemaps.write('.'))
+        .pipe(gulp.dest(paths.src.css))
+        .pipe(browserSync.stream());
+});
+
+// Minify CSS
+gulp.task('minify:css', function() {
+    return gulp.src([
+            paths.src.css + '/black-dashboard.css'
+        ])
+        .pipe(cleanCss())
+        .pipe(rename(function(path) {
+            // Updates the object in-place
+            path.extname = ".min.css";
+        }))
+        .pipe(gulp.dest(paths.src.css))
+});
+
+// Default Task: Compile SCSS and minify the result
+gulp.task('default', gulp.series('scss', 'minify:css'));

BIN
apps/static/assets/img/12345.png


BIN
apps/static/assets/img/anime3.png


BIN
apps/static/assets/img/anime6.png


BIN
apps/static/assets/img/apple-icon.png


BIN
apps/static/assets/img/bg5.jpg


BIN
apps/static/assets/img/default-avatar.png


BIN
apps/static/assets/img/emilyz.jpg


BIN
apps/static/assets/img/favicon.png


BIN
apps/static/assets/img/header.jpg


BIN
apps/static/assets/img/img_3115.jpg


BIN
apps/static/assets/img/james.jpg


BIN
apps/static/assets/img/mike.jpg


BIN
apps/static/assets/img/now-logo.png


+ 255 - 0
apps/static/assets/js/black-dashboard.js

@@ -0,0 +1,255 @@
+/*!
+
+=========================================================
+* Black Dashboard - v1.0.1
+=========================================================
+
+* Product Page: https://www.creative-tim.com/product/black-dashboard
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+
+
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+*/
+
+var transparent = true;
+var transparentDemo = true;
+var fixedTop = false;
+
+var navbar_initialized = false;
+var backgroundOrange = false;
+var sidebar_mini_active = false;
+var toggle_initialized = false;
+
+var $html = $('html');
+var $body = $('body');
+var $navbar_minimize_fixed = $('.navbar-minimize-fixed');
+var $collapse = $('.collapse');
+var $navbar = $('.navbar');
+var $tagsinput = $('.tagsinput');
+var $selectpicker = $('.selectpicker');
+var $navbar_color = $('.navbar[color-on-scroll]');
+var $full_screen_map = $('.full-screen-map');
+var $datetimepicker = $('.datetimepicker');
+var $datepicker = $('.datepicker');
+var $timepicker = $('.timepicker');
+
+var seq = 0,
+  delays = 80,
+  durations = 500;
+var seq2 = 0,
+  delays2 = 80,
+  durations2 = 500;
+
+(function() {
+  var isWindows = navigator.platform.indexOf('Win') > -1 ? true : false;
+
+  if (isWindows) {
+    // if we are on windows OS we activate the perfectScrollbar function
+    if ($('.main-panel').length != 0) {
+      var ps = new PerfectScrollbar('.main-panel', {
+        wheelSpeed: 2,
+        wheelPropagation: true,
+        minScrollbarLength: 20,
+        suppressScrollX: true
+      });
+    }
+
+    if ($('.sidebar .sidebar-wrapper').length != 0) {
+
+      var ps1 = new PerfectScrollbar('.sidebar .sidebar-wrapper');
+      $('.table-responsive').each(function() {
+        var ps2 = new PerfectScrollbar($(this)[0]);
+      });
+    }
+
+
+
+    $html.addClass('perfect-scrollbar-on');
+  } else {
+    $html.addClass('perfect-scrollbar-off');
+  }
+})();
+
+$(document).ready(function() {
+
+  var scroll_start = 0;
+  var startchange = $('.row');
+  var offset = startchange.offset();
+  var scrollElement = navigator.platform.indexOf('Win') > -1 ? $(".ps") : $(window);
+  scrollElement.scroll(function() {
+
+    scroll_start = $(this).scrollTop();
+
+    if (scroll_start > 50) {
+      $(".navbar-minimize-fixed").css('opacity', '1');
+    } else {
+      $(".navbar-minimize-fixed").css('opacity', '0');
+    }
+  });
+
+
+  $(document).scroll(function() {
+    scroll_start = $(this).scrollTop();
+    if (scroll_start > offset.top) {
+      $(".navbar-minimize-fixed").css('opacity', '1');
+    } else {
+      $(".navbar-minimize-fixed").css('opacity', '0');
+    }
+  });
+
+  if ($('.full-screen-map').length == 0 && $('.bd-docs').length == 0) {
+    // On click navbar-collapse the menu will be white not transparent
+    $('.collapse').on('show.bs.collapse', function() {
+      $(this).closest('.navbar').removeClass('navbar-transparent').addClass('bg-white');
+    }).on('hide.bs.collapse', function() {
+      $(this).closest('.navbar').addClass('navbar-transparent').removeClass('bg-white');
+    });
+  }
+
+  blackDashboard.initMinimizeSidebar();
+
+  $navbar = $('.navbar[color-on-scroll]');
+  scroll_distance = $navbar.attr('color-on-scroll') || 500;
+
+  // Check if we have the class "navbar-color-on-scroll" then add the function to remove the class "navbar-transparent" so it will transform to a plain color.
+  if ($('.navbar[color-on-scroll]').length != 0) {
+    blackDashboard.checkScrollForTransparentNavbar();
+    $(window).on('scroll', blackDashboard.checkScrollForTransparentNavbar)
+  }
+
+  $('.form-control').on("focus", function() {
+    $(this).parent('.input-group').addClass("input-group-focus");
+  }).on("blur", function() {
+    $(this).parent(".input-group").removeClass("input-group-focus");
+  });
+
+  // Activate bootstrapSwitch
+  $('.bootstrap-switch').each(function() {
+    $this = $(this);
+    data_on_label = $this.data('on-label') || '';
+    data_off_label = $this.data('off-label') || '';
+
+    $this.bootstrapSwitch({
+      onText: data_on_label,
+      offText: data_off_label
+    });
+  });
+});
+
+$(document).on('click', '.navbar-toggle', function() {
+  var $toggle = $(this);
+
+  if (blackDashboard.misc.navbar_menu_visible == 1) {
+    $html.removeClass('nav-open');
+    blackDashboard.misc.navbar_menu_visible = 0;
+    setTimeout(function() {
+      $toggle.removeClass('toggled');
+      $('.bodyClick').remove();
+    }, 550);
+
+  } else {
+    setTimeout(function() {
+      $toggle.addClass('toggled');
+    }, 580);
+
+    var div = '<div class="bodyClick"></div>';
+    $(div).appendTo('body').click(function() {
+      $html.removeClass('nav-open');
+      blackDashboard.misc.navbar_menu_visible = 0;
+      setTimeout(function() {
+        $toggle.removeClass('toggled');
+        $('.bodyClick').remove();
+      }, 550);
+    });
+
+    $html.addClass('nav-open');
+    blackDashboard.misc.navbar_menu_visible = 1;
+  }
+});
+
+$(window).resize(function() {
+  // reset the seq for charts drawing animations
+  seq = seq2 = 0;
+
+  if ($full_screen_map.length == 0 && $('.bd-docs').length == 0) {
+    var isExpanded = $navbar.find('[data-toggle="collapse"]').attr("aria-expanded");
+    if ($navbar.hasClass('bg-white') && $(window).width() > 991) {
+      $navbar.removeClass('bg-white').addClass('navbar-transparent');
+    } else if ($navbar.hasClass('navbar-transparent') && $(window).width() < 991 && isExpanded != "false") {
+      $navbar.addClass('bg-white').removeClass('navbar-transparent');
+    }
+  }
+});
+
+blackDashboard = {
+  misc: {
+    navbar_menu_visible: 0
+  },
+
+  initMinimizeSidebar: function() {
+    if ($('.sidebar-mini').length != 0) {
+      sidebar_mini_active = true;
+    }
+
+    $('#minimizeSidebar').click(function() {
+      var $btn = $(this);
+
+      if (sidebar_mini_active == true) {
+        $('body').removeClass('sidebar-mini');
+        sidebar_mini_active = false;
+        blackDashboard.showSidebarMessage('Sidebar mini deactivated...');
+      } else {
+        $('body').addClass('sidebar-mini');
+        sidebar_mini_active = true;
+        blackDashboard.showSidebarMessage('Sidebar mini activated...');
+      }
+
+      // we simulate the window Resize so the charts will get updated in realtime.
+      var simulateWindowResize = setInterval(function() {
+        window.dispatchEvent(new Event('resize'));
+      }, 180);
+
+      // we stop the simulation of Window Resize after the animations are completed
+      setTimeout(function() {
+        clearInterval(simulateWindowResize);
+      }, 1000);
+    });
+  },
+
+  showSidebarMessage: function(message) {
+    try {
+      $.notify({
+        icon: "tim-icons ui-1_bell-53",
+        message: message
+      }, {
+        type: 'info',
+        timer: 4000,
+        placement: {
+          from: 'top',
+          align: 'right'
+        }
+      });
+    } catch (e) {
+      console.log('Notify library is missing, please make sure you have the notifications library added.');
+    }
+
+  }
+
+};
+
+function hexToRGB(hex, alpha) {
+  var r = parseInt(hex.slice(1, 3), 16),
+    g = parseInt(hex.slice(3, 5), 16),
+    b = parseInt(hex.slice(5, 7), 16);
+
+  if (alpha) {
+    return "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
+  } else {
+    return "rgb(" + r + ", " + g + ", " + b + ")";
+  }
+}

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
apps/static/assets/js/black-dashboard.min.js


Різницю між файлами не показано, бо вона завелика
+ 5 - 0
apps/static/assets/js/core/bootstrap.min.js


Різницю між файлами не показано, бо вона завелика
+ 1 - 0
apps/static/assets/js/core/jquery.min.js


Різницю між файлами не показано, бо вона завелика
+ 3 - 0
apps/static/assets/js/core/popper.min.js


+ 432 - 0
apps/static/assets/js/plugins/bootstrap-notify.js

@@ -0,0 +1,432 @@
+/*
+
+
+
+     Creative Tim Modifications
+
+     Lines: 238, 239 was changed from top: 5px to top: 50% and we added margin-top: -13px. In this way the close button will be aligned vertically
+     Line:222 - modified when the icon is set, we add the class "alert-with-icon", so there will be enough space for the icon.
+
+
+
+
+*/
+
+
+/*
+ * Project: Bootstrap Notify = v3.1.5
+ * Description: Turns standard Bootstrap alerts into "Growl-like" notifications.
+ * Author: Mouse0270 aka Robert McIntosh
+ * License: MIT License
+ * Website: https://github.com/mouse0270/bootstrap-growl
+ */
+
+/* global define:false, require: false, jQuery:false */
+
+(function(factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module.
+    define(['jquery'], factory);
+  } else if (typeof exports === 'object') {
+    // Node/CommonJS
+    factory(require('jquery'));
+  } else {
+    // Browser globals
+    factory(jQuery);
+  }
+}(function($) {
+  // Create the defaults once
+  var defaults = {
+    element: 'body',
+    position: null,
+    type: "info",
+    allow_dismiss: true,
+    allow_duplicates: true,
+    newest_on_top: false,
+    showProgressbar: false,
+    placement: {
+      from: "top",
+      align: "right"
+    },
+    offset: 20,
+    spacing: 10,
+    z_index: 1060,
+    delay: 5000,
+    timer: 1000,
+    url_target: '_blank',
+    mouse_over: null,
+    animate: {
+      enter: 'animated fadeInDown',
+      exit: 'animated fadeOutUp'
+    },
+    onShow: null,
+    onShown: null,
+    onClose: null,
+    onClosed: null,
+    onClick: null,
+    icon_type: 'class',
+    template: '<div data-notify="container" class="col-xs-11 col-sm-4 alert alert-{0}" role="alert"><button type="button" aria-hidden="true" class="close" data-notify="dismiss"><i class="tim-icons icon-simple-remove"></i></button><span data-notify="icon"></span> <span data-notify="title">{1}</span> <span data-notify="message">{2}</span><div class="progress" data-notify="progressbar"><div class="progress-bar progress-bar-{0}" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div></div><a href="{3}" target="{4}" data-notify="url"></a></div>'
+  };
+
+  String.format = function() {
+    var args = arguments;
+    var str = arguments[0];
+    return str.replace(/(\{\{\d\}\}|\{\d\})/g, function(str) {
+      if (str.substring(0, 2) === "{{") return str;
+      var num = parseInt(str.match(/\d/)[0]);
+      return args[num + 1];
+    });
+  };
+
+  function isDuplicateNotification(notification) {
+    var isDupe = false;
+
+    $('[data-notify="container"]').each(function(i, el) {
+      var $el = $(el);
+      var title = $el.find('[data-notify="title"]').html().trim();
+      var message = $el.find('[data-notify="message"]').html().trim();
+
+      // The input string might be different than the actual parsed HTML string!
+      // (<br> vs <br /> for example)
+      // So we have to force-parse this as HTML here!
+      var isSameTitle = title === $("<div>" + notification.settings.content.title + "</div>").html().trim();
+      var isSameMsg = message === $("<div>" + notification.settings.content.message + "</div>").html().trim();
+      var isSameType = $el.hasClass('alert-' + notification.settings.type);
+
+      if (isSameTitle && isSameMsg && isSameType) {
+        //we found the dupe. Set the var and stop checking.
+        isDupe = true;
+      }
+      return !isDupe;
+    });
+
+    return isDupe;
+  }
+
+  function Notify(element, content, options) {
+    // Setup Content of Notify
+    var contentObj = {
+      content: {
+        message: typeof content === 'object' ? content.message : content,
+        title: content.title ? content.title : '',
+        icon: content.icon ? content.icon : '',
+        url: content.url ? content.url : '#',
+        target: content.target ? content.target : '-'
+      }
+    };
+
+    options = $.extend(true, {}, contentObj, options);
+    this.settings = $.extend(true, {}, defaults, options);
+    this._defaults = defaults;
+    if (this.settings.content.target === "-") {
+      this.settings.content.target = this.settings.url_target;
+    }
+    this.animations = {
+      start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',
+      end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'
+    };
+
+    if (typeof this.settings.offset === 'number') {
+      this.settings.offset = {
+        x: this.settings.offset,
+        y: this.settings.offset
+      };
+    }
+
+    //if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing
+    if (this.settings.allow_duplicates || (!this.settings.allow_duplicates && !isDuplicateNotification(this))) {
+      this.init();
+    }
+  }
+
+  $.extend(Notify.prototype, {
+    init: function() {
+      var self = this;
+
+      this.buildNotify();
+      if (this.settings.content.icon) {
+        this.setIcon();
+      }
+      if (this.settings.content.url != "#") {
+        this.styleURL();
+      }
+      this.styleDismiss();
+      this.placement();
+      this.bind();
+
+      this.notify = {
+        $ele: this.$ele,
+        update: function(command, update) {
+          var commands = {};
+          if (typeof command === "string") {
+            commands[command] = update;
+          } else {
+            commands = command;
+          }
+          for (var cmd in commands) {
+            switch (cmd) {
+              case "type":
+                this.$ele.removeClass('alert-' + self.settings.type);
+                this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);
+                self.settings.type = commands[cmd];
+                this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify="progressbar"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);
+                break;
+              case "icon":
+                var $icon = this.$ele.find('[data-notify="icon"]');
+                if (self.settings.icon_type.toLowerCase() === 'class') {
+                  $icon.removeClass(self.settings.content.icon).addClass(commands[cmd]);
+                } else {
+                  if (!$icon.is('img')) {
+                    $icon.find('img');
+                  }
+                  $icon.attr('src', commands[cmd]);
+                }
+                self.settings.content.icon = commands[command];
+                break;
+              case "progress":
+                var newDelay = self.settings.delay - (self.settings.delay * (commands[cmd] / 100));
+                this.$ele.data('notify-delay', newDelay);
+                this.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');
+                break;
+              case "url":
+                this.$ele.find('[data-notify="url"]').attr('href', commands[cmd]);
+                break;
+              case "target":
+                this.$ele.find('[data-notify="url"]').attr('target', commands[cmd]);
+                break;
+              default:
+                this.$ele.find('[data-notify="' + cmd + '"]').html(commands[cmd]);
+            }
+          }
+          var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);
+          self.reposition(posX);
+        },
+        close: function() {
+          self.close();
+        }
+      };
+
+    },
+    buildNotify: function() {
+      var content = this.settings.content;
+      this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));
+      this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);
+      if (!this.settings.allow_dismiss) {
+        this.$ele.find('[data-notify="dismiss"]').css('display', 'none');
+      }
+      if ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) {
+        this.$ele.find('[data-notify="progressbar"]').remove();
+      }
+    },
+    setIcon: function() {
+      this.$ele.addClass('alert-with-icon');
+
+      if (this.settings.icon_type.toLowerCase() === 'class') {
+        this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon);
+      } else {
+        if (this.$ele.find('[data-notify="icon"]').is('img')) {
+          this.$ele.find('[data-notify="icon"]').attr('src', this.settings.content.icon);
+        } else {
+          this.$ele.find('[data-notify="icon"]').append('<img src="' + this.settings.content.icon + '" alt="Notify Icon" />');
+        }
+      }
+    },
+    styleDismiss: function() {
+      this.$ele.find('[data-notify="dismiss"]').css({
+        position: 'absolute',
+        right: '10px',
+        top: '50%',
+        marginTop: '-13px',
+        zIndex: this.settings.z_index + 2
+      });
+    },
+    styleURL: function() {
+      this.$ele.find('[data-notify="url"]').css({
+        backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
+        height: '100%',
+        left: 0,
+        position: 'absolute',
+        top: 0,
+        width: '100%',
+        zIndex: this.settings.z_index + 1
+      });
+    },
+    placement: function() {
+      var self = this,
+        offsetAmt = this.settings.offset.y,
+        css = {
+          display: 'inline-block',
+          margin: '0px auto',
+          position: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'),
+          transition: 'all .5s ease-in-out',
+          zIndex: this.settings.z_index
+        },
+        hasAnimation = false,
+        settings = this.settings;
+
+      $('[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])').each(function() {
+        offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));
+      });
+      if (this.settings.newest_on_top === true) {
+        offsetAmt = this.settings.offset.y;
+      }
+      css[this.settings.placement.from] = offsetAmt + 'px';
+
+      switch (this.settings.placement.align) {
+        case "left":
+        case "right":
+          css[this.settings.placement.align] = this.settings.offset.x + 'px';
+          break;
+        case "center":
+          css.left = 0;
+          css.right = 0;
+          break;
+      }
+      this.$ele.css(css).addClass(this.settings.animate.enter);
+      $.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function(index, prefix) {
+        self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;
+      });
+
+      $(this.settings.element).append(this.$ele);
+
+      if (this.settings.newest_on_top === true) {
+        offsetAmt = (parseInt(offsetAmt) + parseInt(this.settings.spacing)) + this.$ele.outerHeight();
+        this.reposition(offsetAmt);
+      }
+
+      if ($.isFunction(self.settings.onShow)) {
+        self.settings.onShow.call(this.$ele);
+      }
+
+      this.$ele.one(this.animations.start, function() {
+        hasAnimation = true;
+      }).one(this.animations.end, function() {
+        self.$ele.removeClass(self.settings.animate.enter);
+        if ($.isFunction(self.settings.onShown)) {
+          self.settings.onShown.call(this);
+        }
+      });
+
+      setTimeout(function() {
+        if (!hasAnimation) {
+          if ($.isFunction(self.settings.onShown)) {
+            self.settings.onShown.call(this);
+          }
+        }
+      }, 600);
+    },
+    bind: function() {
+      var self = this;
+
+      this.$ele.find('[data-notify="dismiss"]').on('click', function() {
+        self.close();
+      });
+
+      if ($.isFunction(self.settings.onClick)) {
+        this.$ele.on('click', function(event) {
+          if (event.target != self.$ele.find('[data-notify="dismiss"]')[0]) {
+            self.settings.onClick.call(this, event);
+          }
+        });
+      }
+
+      this.$ele.mouseover(function() {
+        $(this).data('data-hover', "true");
+      }).mouseout(function() {
+        $(this).data('data-hover', "false");
+      });
+      this.$ele.data('data-hover', "false");
+
+      if (this.settings.delay > 0) {
+        self.$ele.data('notify-delay', self.settings.delay);
+        var timer = setInterval(function() {
+          var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;
+          if ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === "pause") || self.settings.mouse_over != "pause") {
+            var percent = ((self.settings.delay - delay) / self.settings.delay) * 100;
+            self.$ele.data('notify-delay', delay);
+            self.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', percent).css('width', percent + '%');
+          }
+          if (delay <= -(self.settings.timer)) {
+            clearInterval(timer);
+            self.close();
+          }
+        }, self.settings.timer);
+      }
+    },
+    close: function() {
+      var self = this,
+        posX = parseInt(this.$ele.css(this.settings.placement.from)),
+        hasAnimation = false;
+
+      this.$ele.attr('data-closing', 'true').addClass(this.settings.animate.exit);
+      self.reposition(posX);
+
+      if ($.isFunction(self.settings.onClose)) {
+        self.settings.onClose.call(this.$ele);
+      }
+
+      this.$ele.one(this.animations.start, function() {
+        hasAnimation = true;
+      }).one(this.animations.end, function() {
+        $(this).remove();
+        if ($.isFunction(self.settings.onClosed)) {
+          self.settings.onClosed.call(this);
+        }
+      });
+
+      setTimeout(function() {
+        if (!hasAnimation) {
+          self.$ele.remove();
+          if (self.settings.onClosed) {
+            self.settings.onClosed(self.$ele);
+          }
+        }
+      }, 600);
+    },
+    reposition: function(posX) {
+      var self = this,
+        notifies = '[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])',
+        $elements = this.$ele.nextAll(notifies);
+      if (this.settings.newest_on_top === true) {
+        $elements = this.$ele.prevAll(notifies);
+      }
+      $elements.each(function() {
+        $(this).css(self.settings.placement.from, posX);
+        posX = (parseInt(posX) + parseInt(self.settings.spacing)) + $(this).outerHeight();
+      });
+    }
+  });
+
+  $.notify = function(content, options) {
+    var plugin = new Notify(this, content, options);
+    return plugin.notify;
+  };
+  $.notifyDefaults = function(options) {
+    defaults = $.extend(true, {}, defaults, options);
+    return defaults;
+  };
+
+  $.notifyClose = function(selector) {
+
+    if (typeof selector === "undefined" || selector === "all") {
+      $('[data-notify]').find('[data-notify="dismiss"]').trigger('click');
+    } else if (selector === 'success' || selector === 'info' || selector === 'warning' || selector === 'danger') {
+      $('.alert-' + selector + '[data-notify]').find('[data-notify="dismiss"]').trigger('click');
+    } else if (selector) {
+      $(selector + '[data-notify]').find('[data-notify="dismiss"]').trigger('click');
+    } else {
+      $('[data-notify-position="' + selector + '"]').find('[data-notify="dismiss"]').trigger('click');
+    }
+  };
+
+  $.notifyCloseExcept = function(selector) {
+
+    if (selector === 'success' || selector === 'info' || selector === 'warning' || selector === 'danger') {
+      $('[data-notify]').not('.alert-' + selector).find('[data-notify="dismiss"]').trigger('click');
+    } else {
+      $('[data-notify]').not(selector).find('[data-notify="dismiss"]').trigger('click');
+    }
+  };
+
+
+}));

Різницю між файлами не показано, бо вона завелика
+ 9 - 0
apps/static/assets/js/plugins/chartjs.min.js


Різницю між файлами не показано, бо вона завелика
+ 5 - 0
apps/static/assets/js/plugins/perfect-scrollbar.jquery.min.js


+ 42 - 0
apps/static/assets/package.json

@@ -0,0 +1,42 @@
+{
+    "name": "generic-compilation-script",
+    "version": "1.0.0",
+    "description": "Generic Builder",
+    "main": "gulpfile.js",
+    "author": "AppSeed",
+    "keywords": [
+        "css",
+        "sass",
+        "gulp",
+        "web"
+    ],
+    "homepage": "https://appseed.us",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/app-generator"
+    },
+    "bugs": {
+        "email": "support@appseed.us"
+    },
+    "license": "MIT License",
+    "devDependencies": {
+        "browser-sync": "^2.27.4",
+        "del": "^6.0.0",
+        "gulp": "^4.0.2",
+        "gulp-autoprefixer": "^8.0.0",
+        "gulp-clean-css": "^4.3.0",
+        "gulp-cssbeautify": "^3.0.0",
+        "node-sass": "^6.0.1",
+        "gulp-file-include": "^2.3.0",
+        "gulp-header": "^2.0.9",
+        "gulp-htmlmin": "^5.0.1",
+        "gulp-npm-dist": "^1.0.3",
+        "gulp-plumber": "^1.2.1",
+        "gulp-rename": "^2.0.0",
+        "gulp-sass": "^5.0.0",
+        "gulp-sourcemaps": "^3.0.0",
+        "gulp-uglify": "^3.0.2",
+        "gulp-wait": "^0.0.2",
+        "merge-stream": "^2.0.0"
+    }
+}

+ 102 - 0
apps/static/assets/scss/black-dashboard.scss

@@ -0,0 +1,102 @@
+
+/*!
+
+=========================================================
+* Black Dashboard - v1.0.1
+=========================================================
+
+* Product Page: https://www.creative-tim.com/product/black-dashboard
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+
+
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+*/
+
+ // Core
+
+@import "black-dashboard/custom/functions";
+@import "black-dashboard/bootstrap/functions";
+
+@import "black-dashboard/custom/variables";
+@import "black-dashboard/bootstrap/variables";
+
+@import "black-dashboard/custom/mixins";
+@import "black-dashboard/bootstrap/mixins";
+
+ // Bootstrap components
+
+@import "black-dashboard/bootstrap/root";
+@import "black-dashboard/bootstrap/reboot";
+@import "black-dashboard/bootstrap/type";
+@import "black-dashboard/bootstrap/images";
+@import "black-dashboard/bootstrap/code";
+@import "black-dashboard/bootstrap/grid";
+@import "black-dashboard/bootstrap/tables";
+@import "black-dashboard/bootstrap/forms";
+@import "black-dashboard/bootstrap/buttons";
+@import "black-dashboard/bootstrap/transitions";
+@import "black-dashboard/bootstrap/dropdown";
+@import "black-dashboard/bootstrap/button-group";
+@import "black-dashboard/bootstrap/input-group";
+@import "black-dashboard/bootstrap/custom-forms";
+@import "black-dashboard/bootstrap/nav";
+@import "black-dashboard/bootstrap/navbar";
+@import "black-dashboard/bootstrap/card";
+@import "black-dashboard/bootstrap/breadcrumb";
+@import "black-dashboard/bootstrap/pagination";
+@import "black-dashboard/bootstrap/badge";
+@import "black-dashboard/bootstrap/jumbotron";
+@import "black-dashboard/bootstrap/alert";
+@import "black-dashboard/bootstrap/progress";
+@import "black-dashboard/bootstrap/media";
+@import "black-dashboard/bootstrap/list-group";
+@import "black-dashboard/bootstrap/close";
+@import "black-dashboard/bootstrap/modal";
+@import "black-dashboard/bootstrap/tooltip";
+@import "black-dashboard/bootstrap/popover";
+@import "black-dashboard/bootstrap/carousel";
+@import "black-dashboard/bootstrap/utilities";
+@import "black-dashboard/bootstrap/print";
+
+ // Custom components
+
+ @import "black-dashboard/custom/alerts.scss";
+ @import "black-dashboard/custom/buttons.scss";
+ @import "black-dashboard/custom/dropdown.scss";
+ @import "black-dashboard/custom/footer.scss";
+ @import "black-dashboard/custom/forms.scss";
+ @import "black-dashboard/custom/images.scss";
+ @import "black-dashboard/custom/modal.scss";
+ @import "black-dashboard/custom/navbar.scss";
+ @import "black-dashboard/custom/type.scss";
+ @import "black-dashboard/custom/tables";
+ @import "black-dashboard/custom/checkboxes-radio";
+ @import "black-dashboard/custom/fixed-plugin";
+ @import "black-dashboard/custom/sidebar-and-main-panel.scss";
+ @import "black-dashboard/custom/misc.scss";
+ @import "black-dashboard/custom/rtl.scss";
+ @import "black-dashboard/custom/input-group.scss";
+
+
+ // Vendor / Plugins
+
+@import "black-dashboard/custom/vendor/plugin-perfect-scrollbar.scss";
+@import "black-dashboard/custom/vendor/plugin-animate-bootstrap-notify.scss";
+
+// light mode
+
+@import "black-dashboard/custom/white-content.scss";
+
+// Cards
+
+@import 'black-dashboard/custom/card';
+@import "black-dashboard/custom/cards/card-chart";
+@import "black-dashboard/custom/cards/card-map";
+@import "black-dashboard/custom/cards/card-user";
+@import "black-dashboard/custom/cards/card-task";
+@import "black-dashboard/custom/cards/card-plain";

+ 1 - 0
apps/static/assets/scss/black-dashboard/_buttons.scss

@@ -0,0 +1 @@
+// mixins comune kit dash etc

+ 1 - 0
apps/static/assets/scss/black-dashboard/_typography.scss

@@ -0,0 +1 @@
+// ce e comun intre kit-uri si dash-uri

+ 51 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_alert.scss

@@ -0,0 +1,51 @@
+//
+// Base styles
+//
+
+.alert {
+  position: relative;
+  padding: $alert-padding-y $alert-padding-x;
+  margin-bottom: $alert-margin-bottom;
+  border: $alert-border-width solid transparent;
+  @include border-radius($alert-border-radius);
+}
+
+// Headings for larger alerts
+.alert-heading {
+  // Specified to prevent conflicts of changing $headings-color
+  color: inherit;
+}
+
+// Provide class for links that match alerts
+.alert-link {
+  font-weight: $alert-link-font-weight;
+}
+
+
+// Dismissible alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissible {
+  padding-right: $close-font-size + $alert-padding-x * 2;
+
+  // Adjust close link position
+  .close {
+    position: absolute;
+    top: 0;
+    right: 0;
+    padding: $alert-padding-y $alert-padding-x;
+    color: inherit;
+  }
+}
+
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+@each $color, $value in $theme-colors {
+  .alert-#{$color} {
+    @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));
+  }
+}

+ 54 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_badge.scss

@@ -0,0 +1,54 @@
+// Base class
+//
+// Requires one of the contextual, color modifier classes for `color` and
+// `background-color`.
+
+.badge {
+  display: inline-block;
+  padding: $badge-padding-y $badge-padding-x;
+  @include font-size($badge-font-size);
+  font-weight: $badge-font-weight;
+  line-height: 1;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  @include border-radius($badge-border-radius);
+  @include transition($badge-transition);
+
+  @at-root a#{&} {
+    @include hover-focus {
+      text-decoration: none;
+    }
+  }
+
+  // Empty badges collapse automatically
+  &:empty {
+    display: none;
+  }
+}
+
+// Quick fix for badges in buttons
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+
+// Pill badges
+//
+// Make them extra rounded with a modifier to replace v3's badges.
+
+.badge-pill {
+  padding-right: $badge-pill-padding-x;
+  padding-left: $badge-pill-padding-x;
+  @include border-radius($badge-pill-border-radius);
+}
+
+// Colors
+//
+// Contextual variations (linked badges get darker on :hover).
+
+@each $color, $value in $theme-colors {
+  .badge-#{$color} {
+    @include badge-variant($value);
+  }
+}

+ 41 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_breadcrumb.scss

@@ -0,0 +1,41 @@
+.breadcrumb {
+  display: flex;
+  flex-wrap: wrap;
+  padding: $breadcrumb-padding-y $breadcrumb-padding-x;
+  margin-bottom: $breadcrumb-margin-bottom;
+  list-style: none;
+  background-color: $breadcrumb-bg;
+  @include border-radius($breadcrumb-border-radius);
+}
+
+.breadcrumb-item {
+  // The separator between breadcrumbs (by default, a forward-slash: "/")
+  + .breadcrumb-item {
+    padding-left: $breadcrumb-item-padding;
+
+    &::before {
+      display: inline-block; // Suppress underlining of the separator in modern browsers
+      padding-right: $breadcrumb-item-padding;
+      color: $breadcrumb-divider-color;
+      content: $breadcrumb-divider;
+    }
+  }
+
+  // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built
+  // without `<ul>`s. The `::before` pseudo-element generates an element
+  // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.
+  //
+  // To trick IE into suppressing the underline, we give the pseudo-element an
+  // underline and then immediately remove it.
+  + .breadcrumb-item:hover::before {
+    text-decoration: underline;
+  }
+  // stylelint-disable-next-line no-duplicate-selectors
+  + .breadcrumb-item:hover::before {
+    text-decoration: none;
+  }
+
+  &.active {
+    color: $breadcrumb-active-color;
+  }
+}

+ 163 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_button-group.scss

@@ -0,0 +1,163 @@
+// stylelint-disable selector-no-qualifying-type
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-flex;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+
+  > .btn {
+    position: relative;
+    flex: 1 1 auto;
+
+    // Bring the hover, focused, and "active" buttons to the front to overlay
+    // the borders properly
+    @include hover {
+      z-index: 1;
+    }
+    &:focus,
+    &:active,
+    &.active {
+      z-index: 1;
+    }
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+
+  .input-group {
+    width: auto;
+  }
+}
+
+.btn-group {
+  // Prevent double borders when buttons are next to each other
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-left: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-right-radius(0);
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) > .btn {
+    @include border-left-radius(0);
+  }
+}
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
+
+//
+// Split button dropdowns
+//
+
+.dropdown-toggle-split {
+  padding-right: $btn-padding-x * .75;
+  padding-left: $btn-padding-x * .75;
+
+  &::after,
+  .dropup &::after,
+  .dropright &::after {
+    margin-left: 0;
+  }
+
+  .dropleft &::before {
+    margin-right: 0;
+  }
+}
+
+.btn-sm + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-sm * .75;
+  padding-left: $btn-padding-x-sm * .75;
+}
+
+.btn-lg + .dropdown-toggle-split {
+  padding-right: $btn-padding-x-lg * .75;
+  padding-left: $btn-padding-x-lg * .75;
+}
+
+
+// The clickable button for toggling the menu
+// Set the same inset shadow as the :active state
+.btn-group.show .dropdown-toggle {
+  @include box-shadow($btn-active-box-shadow);
+
+  // Show no shadow for `.btn-link` since it has no other button styles.
+  &.btn-link {
+    @include box-shadow(none);
+  }
+}
+
+
+//
+// Vertical button groups
+//
+
+.btn-group-vertical {
+  flex-direction: column;
+  align-items: flex-start;
+  justify-content: center;
+
+  > .btn,
+  > .btn-group {
+    width: 100%;
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) {
+    margin-top: -$btn-border-width;
+  }
+
+  // Reset rounded corners
+  > .btn:not(:last-child):not(.dropdown-toggle),
+  > .btn-group:not(:last-child) > .btn {
+    @include border-bottom-radius(0);
+  }
+
+  > .btn:not(:first-child),
+  > .btn-group:not(:first-child) > .btn {
+    @include border-top-radius(0);
+  }
+}
+
+
+// Checkbox and radio options
+//
+// In order to support the browser's form validation feedback, powered by the
+// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
+// `display: none;` or `visibility: hidden;` as that also hides the popover.
+// Simply visually hiding the inputs via `opacity` would leave them clickable in
+// certain cases which is prevented by using `clip` and `pointer-events`.
+// This way, we ensure a DOM element is visible to position the popover from.
+//
+// See https://github.com/twbs/bootstrap/pull/12794 and
+// https://github.com/twbs/bootstrap/pull/14559 for more information.
+
+.btn-group-toggle {
+  > .btn,
+  > .btn-group > .btn {
+    margin-bottom: 0; // Override default `<label>` value
+
+    input[type="radio"],
+    input[type="checkbox"] {
+      position: absolute;
+      clip: rect(0, 0, 0, 0);
+      pointer-events: none;
+    }
+  }
+}

+ 137 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_buttons.scss

@@ -0,0 +1,137 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Base styles
+//
+
+.btn {
+  display: inline-block;
+  font-family: $btn-font-family;
+  font-weight: $btn-font-weight;
+  color: $body-color;
+  text-align: center;
+  vertical-align: middle;
+  user-select: none;
+  background-color: transparent;
+  border: $btn-border-width solid transparent;
+  @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);
+  @include transition($btn-transition);
+
+  @include hover {
+    color: $body-color;
+    text-decoration: none;
+  }
+
+  &:focus,
+  &.focus {
+    outline: 0;
+    box-shadow: $btn-focus-box-shadow;
+  }
+
+  // Disabled comes first so active can properly restyle
+  &.disabled,
+  &:disabled {
+    opacity: $btn-disabled-opacity;
+    @include box-shadow(none);
+  }
+
+  &:not(:disabled):not(.disabled):active,
+  &:not(:disabled):not(.disabled).active {
+    @include box-shadow($btn-active-box-shadow);
+
+    &:focus {
+      @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
+    }
+  }
+}
+
+// Future-proof disabling of clicks on `<a>` elements
+a.btn.disabled,
+fieldset:disabled a.btn {
+  pointer-events: none;
+}
+
+
+//
+// Alternate buttons
+//
+
+@each $color, $value in $theme-colors {
+  .btn-#{$color} {
+    @include button-variant($value, $value);
+  }
+}
+
+@each $color, $value in $theme-colors {
+  .btn-outline-#{$color} {
+    @include button-outline-variant($value);
+  }
+}
+
+
+//
+// Link buttons
+//
+
+// Make a button look and behave like a link
+.btn-link {
+  font-weight: $font-weight-normal;
+  color: $link-color;
+  text-decoration: $link-decoration;
+
+  @include hover {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+  }
+
+  &:focus,
+  &.focus {
+    text-decoration: $link-hover-decoration;
+    box-shadow: none;
+  }
+
+  &:disabled,
+  &.disabled {
+    color: $btn-link-disabled-color;
+    pointer-events: none;
+  }
+
+  // No need for an active state here
+}
+
+
+//
+// Button Sizes
+//
+
+.btn-lg {
+  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);
+}
+
+.btn-sm {
+  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);
+}
+
+
+//
+// Block button
+//
+
+.btn-block {
+  display: block;
+  width: 100%;
+
+  // Vertically space out multiple block buttons
+  + .btn-block {
+    margin-top: $btn-block-spacing-y;
+  }
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+  &.btn-block {
+    width: 100%;
+  }
+}

+ 289 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_card.scss

@@ -0,0 +1,289 @@
+//
+// Base styles
+//
+
+.card {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
+  word-wrap: break-word;
+  background-color: $card-bg;
+  background-clip: border-box;
+  border: $card-border-width solid $card-border-color;
+  @include border-radius($card-border-radius);
+
+  > hr {
+    margin-right: 0;
+    margin-left: 0;
+  }
+
+  > .list-group:first-child {
+    .list-group-item:first-child {
+      @include border-top-radius($card-border-radius);
+    }
+  }
+
+  > .list-group:last-child {
+    .list-group-item:last-child {
+      @include border-bottom-radius($card-border-radius);
+    }
+  }
+}
+
+.card-body {
+  // Enable `flex-grow: 1` for decks and groups so that card blocks take up
+  // as much space as possible, ensuring footers are aligned to the bottom.
+  flex: 1 1 auto;
+  padding: $card-spacer-x;
+  color: $card-color;
+}
+
+.card-title {
+  margin-bottom: $card-spacer-y;
+}
+
+.card-subtitle {
+  margin-top: -$card-spacer-y / 2;
+  margin-bottom: 0;
+}
+
+.card-text:last-child {
+  margin-bottom: 0;
+}
+
+.card-link {
+  @include hover {
+    text-decoration: none;
+  }
+
+  + .card-link {
+    margin-left: $card-spacer-x;
+  }
+}
+
+//
+// Optional textual caps
+//
+
+.card-header {
+  padding: $card-spacer-y $card-spacer-x;
+  margin-bottom: 0; // Removes the default margin-bottom of <hN>
+  color: $card-cap-color;
+  background-color: $card-cap-bg;
+  border-bottom: $card-border-width solid $card-border-color;
+
+  &:first-child {
+    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
+  }
+
+  + .list-group {
+    .list-group-item:first-child {
+      border-top: 0;
+    }
+  }
+}
+
+.card-footer {
+  padding: $card-spacer-y $card-spacer-x;
+  background-color: $card-cap-bg;
+  border-top: $card-border-width solid $card-border-color;
+
+  &:last-child {
+    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);
+  }
+}
+
+
+//
+// Header navs
+//
+
+.card-header-tabs {
+  margin-right: -$card-spacer-x / 2;
+  margin-bottom: -$card-spacer-y;
+  margin-left: -$card-spacer-x / 2;
+  border-bottom: 0;
+}
+
+.card-header-pills {
+  margin-right: -$card-spacer-x / 2;
+  margin-left: -$card-spacer-x / 2;
+}
+
+// Card image
+.card-img-overlay {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: $card-img-overlay-padding;
+}
+
+.card-img {
+  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+  @include border-radius($card-inner-border-radius);
+}
+
+// Card image caps
+.card-img-top {
+  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+  @include border-top-radius($card-inner-border-radius);
+}
+
+.card-img-bottom {
+  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
+  @include border-bottom-radius($card-inner-border-radius);
+}
+
+
+// Card deck
+
+.card-deck {
+  display: flex;
+  flex-direction: column;
+
+  .card {
+    margin-bottom: $card-deck-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    flex-flow: row wrap;
+    margin-right: -$card-deck-margin;
+    margin-left: -$card-deck-margin;
+
+    .card {
+      display: flex;
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      flex-direction: column;
+      margin-right: $card-deck-margin;
+      margin-bottom: 0; // Override the default
+      margin-left: $card-deck-margin;
+    }
+  }
+}
+
+
+//
+// Card groups
+//
+
+.card-group {
+  display: flex;
+  flex-direction: column;
+
+  // The child selector allows nested `.card` within `.card-group`
+  // to display properly.
+  > .card {
+    margin-bottom: $card-group-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    flex-flow: row wrap;
+    // The child selector allows nested `.card` within `.card-group`
+    // to display properly.
+    > .card {
+      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+      flex: 1 0 0%;
+      margin-bottom: 0;
+
+      + .card {
+        margin-left: 0;
+        border-left: 0;
+      }
+
+      // Handle rounded corners
+      @if $enable-rounded {
+        &:not(:last-child) {
+          @include border-right-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-blacklist
+            border-top-right-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-blacklist
+            border-bottom-right-radius: 0;
+          }
+        }
+
+        &:not(:first-child) {
+          @include border-left-radius(0);
+
+          .card-img-top,
+          .card-header {
+            // stylelint-disable-next-line property-blacklist
+            border-top-left-radius: 0;
+          }
+          .card-img-bottom,
+          .card-footer {
+            // stylelint-disable-next-line property-blacklist
+            border-bottom-left-radius: 0;
+          }
+        }
+      }
+    }
+  }
+}
+
+
+//
+// Columns
+//
+
+.card-columns {
+  .card {
+    margin-bottom: $card-columns-margin;
+  }
+
+  @include media-breakpoint-up(sm) {
+    column-count: $card-columns-count;
+    column-gap: $card-columns-gap;
+    orphans: 1;
+    widows: 1;
+
+    .card {
+      display: inline-block; // Don't let them vertically span multiple columns
+      width: 100%; // Don't let their width change
+    }
+  }
+}
+
+
+//
+// Accordion
+//
+
+.accordion {
+  > .card {
+    overflow: hidden;
+
+    &:not(:first-of-type) {
+      .card-header:first-child {
+        @include border-radius(0);
+      }
+
+      &:not(:last-of-type) {
+        border-bottom: 0;
+        @include border-radius(0);
+      }
+    }
+
+    &:first-of-type {
+      border-bottom: 0;
+      @include border-bottom-radius(0);
+    }
+
+    &:last-of-type {
+      @include border-top-radius(0);
+    }
+
+    .card-header {
+      margin-bottom: -$card-border-width;
+    }
+  }
+}

+ 197 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_carousel.scss

@@ -0,0 +1,197 @@
+// Notes on the classes:
+//
+// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
+//    even when their scroll action started on a carousel, but for compatibility (with Firefox)
+//    we're preventing all actions instead
+// 2. The .carousel-item-left and .carousel-item-right is used to indicate where
+//    the active slide is heading.
+// 3. .active.carousel-item is the current slide.
+// 4. .active.carousel-item-left and .active.carousel-item-right is the current
+//    slide in its in-transition state. Only one of these occurs at a time.
+// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right
+//    is the upcoming slide in transition.
+
+.carousel {
+  position: relative;
+}
+
+.carousel.pointer-event {
+  touch-action: pan-y;
+}
+
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+  @include clearfix();
+}
+
+.carousel-item {
+  position: relative;
+  display: none;
+  float: left;
+  width: 100%;
+  margin-right: -100%;
+  backface-visibility: hidden;
+  @include transition($carousel-transition);
+}
+
+.carousel-item.active,
+.carousel-item-next,
+.carousel-item-prev {
+  display: block;
+}
+
+.carousel-item-next:not(.carousel-item-left),
+.active.carousel-item-right {
+  transform: translateX(100%);
+}
+
+.carousel-item-prev:not(.carousel-item-right),
+.active.carousel-item-left {
+  transform: translateX(-100%);
+}
+
+
+//
+// Alternate transitions
+//
+
+.carousel-fade {
+  .carousel-item {
+    opacity: 0;
+    transition-property: opacity;
+    transform: none;
+  }
+
+  .carousel-item.active,
+  .carousel-item-next.carousel-item-left,
+  .carousel-item-prev.carousel-item-right {
+    z-index: 1;
+    opacity: 1;
+  }
+
+  .active.carousel-item-left,
+  .active.carousel-item-right {
+    z-index: 0;
+    opacity: 0;
+    @include transition(0s $carousel-transition-duration opacity);
+  }
+}
+
+
+//
+// Left/right controls for nav
+//
+
+.carousel-control-prev,
+.carousel-control-next {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+  // Use flex for alignment (1-3)
+  display: flex; // 1. allow flex styles
+  align-items: center; // 2. vertically center contents
+  justify-content: center; // 3. horizontally center contents
+  width: $carousel-control-width;
+  color: $carousel-control-color;
+  text-align: center;
+  opacity: $carousel-control-opacity;
+  @include transition($carousel-control-transition);
+
+  // Hover/focus state
+  @include hover-focus {
+    color: $carousel-control-color;
+    text-decoration: none;
+    outline: 0;
+    opacity: $carousel-control-hover-opacity;
+  }
+}
+.carousel-control-prev {
+  left: 0;
+  @if $enable-gradients {
+    background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));
+  }
+}
+.carousel-control-next {
+  right: 0;
+  @if $enable-gradients {
+    background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));
+  }
+}
+
+// Icons for within
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  display: inline-block;
+  width: $carousel-control-icon-width;
+  height: $carousel-control-icon-width;
+  background: no-repeat 50% / 100% 100%;
+}
+.carousel-control-prev-icon {
+  background-image: $carousel-control-prev-icon-bg;
+}
+.carousel-control-next-icon {
+  background-image: $carousel-control-next-icon-bg;
+}
+
+
+// Optional indicator pips
+//
+// Add an ordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.carousel-indicators {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 15;
+  display: flex;
+  justify-content: center;
+  padding-left: 0; // override <ol> default
+  // Use the .carousel-control's width as margin so we don't overlay those
+  margin-right: $carousel-control-width;
+  margin-left: $carousel-control-width;
+  list-style: none;
+
+  li {
+    box-sizing: content-box;
+    flex: 0 1 auto;
+    width: $carousel-indicator-width;
+    height: $carousel-indicator-height;
+    margin-right: $carousel-indicator-spacer;
+    margin-left: $carousel-indicator-spacer;
+    text-indent: -999px;
+    cursor: pointer;
+    background-color: $carousel-indicator-active-bg;
+    background-clip: padding-box;
+    // Use transparent borders to increase the hit area by 10px on top and bottom.
+    border-top: $carousel-indicator-hit-area-height solid transparent;
+    border-bottom: $carousel-indicator-hit-area-height solid transparent;
+    opacity: .5;
+    @include transition($carousel-indicator-transition);
+  }
+
+  .active {
+    opacity: 1;
+  }
+}
+
+
+// Optional captions
+//
+//
+
+.carousel-caption {
+  position: absolute;
+  right: (100% - $carousel-caption-width) / 2;
+  bottom: 20px;
+  left: (100% - $carousel-caption-width) / 2;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: $carousel-caption-color;
+  text-align: center;
+}

+ 41 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_close.scss

@@ -0,0 +1,41 @@
+.close {
+  float: right;
+  @include font-size($close-font-size);
+  font-weight: $close-font-weight;
+  line-height: 1;
+  color: $close-color;
+  text-shadow: $close-text-shadow;
+  opacity: .5;
+
+  // Override <a>'s hover style
+  @include hover {
+    color: $close-color;
+    text-decoration: none;
+  }
+
+  &:not(:disabled):not(.disabled) {
+    @include hover-focus {
+      opacity: .75;
+    }
+  }
+}
+
+// Additional properties for button version
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
+
+// stylelint-disable-next-line selector-no-qualifying-type
+button.close {
+  padding: 0;
+  background-color: transparent;
+  border: 0;
+  appearance: none;
+}
+
+// Future-proof disabling of clicks on `<a>` elements
+
+// stylelint-disable-next-line selector-no-qualifying-type
+a.close.disabled {
+  pointer-events: none;
+}

+ 48 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_code.scss

@@ -0,0 +1,48 @@
+// Inline code
+code {
+  @include font-size($code-font-size);
+  color: $code-color;
+  word-break: break-word;
+
+  // Streamline the style when inside anchors to avoid broken underline and more
+  a > & {
+    color: inherit;
+  }
+}
+
+// User input typically entered via keyboard
+kbd {
+  padding: $kbd-padding-y $kbd-padding-x;
+  @include font-size($kbd-font-size);
+  color: $kbd-color;
+  background-color: $kbd-bg;
+  @include border-radius($border-radius-sm);
+  @include box-shadow($kbd-box-shadow);
+
+  kbd {
+    padding: 0;
+    @include font-size(100%);
+    font-weight: $nested-kbd-font-weight;
+    @include box-shadow(none);
+  }
+}
+
+// Blocks of code
+pre {
+  display: block;
+  @include font-size($code-font-size);
+  color: $pre-color;
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    @include font-size(inherit);
+    color: inherit;
+    word-break: normal;
+  }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+  max-height: $pre-scrollable-max-height;
+  overflow-y: scroll;
+}

+ 507 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_custom-forms.scss

@@ -0,0 +1,507 @@
+// Embedded icons from Open Iconic.
+// Released under MIT and copyright 2014 Waybury.
+// https://useiconic.com/open
+
+
+// Checkboxes and radios
+//
+// Base class takes care of all the key behavioral aspects.
+
+.custom-control {
+  position: relative;
+  display: block;
+  min-height: $font-size-base * $line-height-base;
+  padding-left: $custom-control-gutter + $custom-control-indicator-size;
+}
+
+.custom-control-inline {
+  display: inline-flex;
+  margin-right: $custom-control-spacer-x;
+}
+
+.custom-control-input {
+  position: absolute;
+  z-index: -1; // Put the input behind the label so it doesn't overlay text
+  opacity: 0;
+
+  &:checked ~ .custom-control-label::before {
+    color: $custom-control-indicator-checked-color;
+    border-color: $custom-control-indicator-checked-border-color;
+    @include gradient-bg($custom-control-indicator-checked-bg);
+    @include box-shadow($custom-control-indicator-checked-box-shadow);
+  }
+
+  &:focus ~ .custom-control-label::before {
+    // the mixin is not used here to make sure there is feedback
+    @if $enable-shadows {
+      box-shadow: $input-box-shadow, $input-focus-box-shadow;
+    } @else {
+      box-shadow: $custom-control-indicator-focus-box-shadow;
+    }
+  }
+
+  &:focus:not(:checked) ~ .custom-control-label::before {
+    border-color: $custom-control-indicator-focus-border-color;
+  }
+
+  &:not(:disabled):active ~ .custom-control-label::before {
+    color: $custom-control-indicator-active-color;
+    background-color: $custom-control-indicator-active-bg;
+    border-color: $custom-control-indicator-active-border-color;
+    @include box-shadow($custom-control-indicator-active-box-shadow);
+  }
+
+  &:disabled {
+    ~ .custom-control-label {
+      color: $custom-control-label-disabled-color;
+
+      &::before {
+        background-color: $custom-control-indicator-disabled-bg;
+      }
+    }
+  }
+}
+
+// Custom control indicators
+//
+// Build the custom controls out of pseudo-elements.
+
+.custom-control-label {
+  position: relative;
+  margin-bottom: 0;
+  vertical-align: top;
+
+  // Background-color and (when enabled) gradient
+  &::before {
+    position: absolute;
+    top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
+    left: -($custom-control-gutter + $custom-control-indicator-size);
+    display: block;
+    width: $custom-control-indicator-size;
+    height: $custom-control-indicator-size;
+    pointer-events: none;
+    content: "";
+    background-color: $custom-control-indicator-bg;
+    border: $custom-control-indicator-border-color solid $custom-control-indicator-border-width;
+    @include box-shadow($custom-control-indicator-box-shadow);
+  }
+
+  // Foreground (icon)
+  &::after {
+    position: absolute;
+    top: ($font-size-base * $line-height-base - $custom-control-indicator-size) / 2;
+    left: -($custom-control-gutter + $custom-control-indicator-size);
+    display: block;
+    width: $custom-control-indicator-size;
+    height: $custom-control-indicator-size;
+    content: "";
+    background: no-repeat 50% / #{$custom-control-indicator-bg-size};
+  }
+}
+
+
+// Checkboxes
+//
+// Tweak just a few things for checkboxes.
+
+.custom-checkbox {
+  .custom-control-label::before {
+    @include border-radius($custom-checkbox-indicator-border-radius);
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-image: $custom-checkbox-indicator-icon-checked;
+    }
+  }
+
+  .custom-control-input:indeterminate ~ .custom-control-label {
+    &::before {
+      border-color: $custom-checkbox-indicator-indeterminate-border-color;
+      @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);
+      @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
+    }
+    &::after {
+      background-image: $custom-checkbox-indicator-icon-indeterminate;
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      background-color: $custom-control-indicator-checked-disabled-bg;
+    }
+    &:indeterminate ~ .custom-control-label::before {
+      background-color: $custom-control-indicator-checked-disabled-bg;
+    }
+  }
+}
+
+// Radios
+//
+// Tweak just a few things for radios.
+
+.custom-radio {
+  .custom-control-label::before {
+    // stylelint-disable-next-line property-blacklist
+    border-radius: $custom-radio-indicator-border-radius;
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-image: $custom-radio-indicator-icon-checked;
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      background-color: $custom-control-indicator-checked-disabled-bg;
+    }
+  }
+}
+
+
+// switches
+//
+// Tweak a few things for switches
+
+.custom-switch {
+  padding-left: $custom-switch-width + $custom-control-gutter;
+
+  .custom-control-label {
+    &::before {
+      left: -($custom-switch-width + $custom-control-gutter);
+      width: $custom-switch-width;
+      pointer-events: all;
+      // stylelint-disable-next-line property-blacklist
+      border-radius: $custom-switch-indicator-border-radius;
+    }
+
+    &::after {
+      top: calc(#{(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2)} + #{$custom-control-indicator-border-width * 2});
+      left: calc(#{-($custom-switch-width + $custom-control-gutter)} + #{$custom-control-indicator-border-width * 2});
+      width: $custom-switch-indicator-size;
+      height: $custom-switch-indicator-size;
+      background-color: $custom-control-indicator-border-color;
+      // stylelint-disable-next-line property-blacklist
+      border-radius: $custom-switch-indicator-border-radius;
+      @include transition(transform .15s ease-in-out, $custom-forms-transition);
+    }
+  }
+
+  .custom-control-input:checked ~ .custom-control-label {
+    &::after {
+      background-color: $custom-control-indicator-bg;
+      transform: translateX($custom-switch-width - $custom-control-indicator-size);
+    }
+  }
+
+  .custom-control-input:disabled {
+    &:checked ~ .custom-control-label::before {
+      background-color: $custom-control-indicator-checked-disabled-bg;
+    }
+  }
+}
+
+
+// Select
+//
+// Replaces the browser default select with a custom one, mostly pulled from
+// https://primer.github.io/.
+//
+
+.custom-select {
+  display: inline-block;
+  width: 100%;
+  height: $custom-select-height;
+  padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;
+  font-family: $custom-select-font-family;
+  @include font-size($custom-select-font-size);
+  font-weight: $custom-select-font-weight;
+  line-height: $custom-select-line-height;
+  color: $custom-select-color;
+  vertical-align: middle;
+  background: $custom-select-background;
+  background-color: $custom-select-bg;
+  border: $custom-select-border-width solid $custom-select-border-color;
+  @include border-radius($custom-select-border-radius, 0);
+  @include box-shadow($custom-select-box-shadow);
+  appearance: none;
+
+  &:focus {
+    border-color: $custom-select-focus-border-color;
+    outline: 0;
+    @if $enable-shadows {
+      box-shadow: $custom-select-box-shadow, $custom-select-focus-box-shadow;
+    } @else {
+      box-shadow: $custom-select-focus-box-shadow;
+    }
+
+    &::-ms-value {
+      // For visual consistency with other platforms/browsers,
+      // suppress the default white text on blue background highlight given to
+      // the selected option text when the (still closed) <select> receives focus
+      // in IE and (under certain conditions) Edge.
+      // See https://github.com/twbs/bootstrap/issues/19398.
+      color: $input-color;
+      background-color: $input-bg;
+    }
+  }
+
+  &[multiple],
+  &[size]:not([size="1"]) {
+    height: auto;
+    padding-right: $custom-select-padding-x;
+    background-image: none;
+  }
+
+  &:disabled {
+    color: $custom-select-disabled-color;
+    background-color: $custom-select-disabled-bg;
+  }
+
+  // Hides the default caret in IE11
+  &::-ms-expand {
+    display: none;
+  }
+}
+
+.custom-select-sm {
+  height: $custom-select-height-sm;
+  padding-top: $custom-select-padding-y-sm;
+  padding-bottom: $custom-select-padding-y-sm;
+  padding-left: $custom-select-padding-x-sm;
+  @include font-size($custom-select-font-size-sm);
+}
+
+.custom-select-lg {
+  height: $custom-select-height-lg;
+  padding-top: $custom-select-padding-y-lg;
+  padding-bottom: $custom-select-padding-y-lg;
+  padding-left: $custom-select-padding-x-lg;
+  @include font-size($custom-select-font-size-lg);
+}
+
+
+// File
+//
+// Custom file input.
+
+.custom-file {
+  position: relative;
+  display: inline-block;
+  width: 100%;
+  height: $custom-file-height;
+  margin-bottom: 0;
+}
+
+.custom-file-input {
+  position: relative;
+  z-index: 2;
+  width: 100%;
+  height: $custom-file-height;
+  margin: 0;
+  opacity: 0;
+
+  &:focus ~ .custom-file-label {
+    border-color: $custom-file-focus-border-color;
+    box-shadow: $custom-file-focus-box-shadow;
+  }
+
+  &:disabled ~ .custom-file-label {
+    background-color: $custom-file-disabled-bg;
+  }
+
+  @each $lang, $value in $custom-file-text {
+    &:lang(#{$lang}) ~ .custom-file-label::after {
+      content: $value;
+    }
+  }
+
+  ~ .custom-file-label[data-browse]::after {
+    content: attr(data-browse);
+  }
+}
+
+.custom-file-label {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  z-index: 1;
+  height: $custom-file-height;
+  padding: $custom-file-padding-y $custom-file-padding-x;
+  font-family: $custom-file-font-family;
+  font-weight: $custom-file-font-weight;
+  line-height: $custom-file-line-height;
+  color: $custom-file-color;
+  background-color: $custom-file-bg;
+  border: $custom-file-border-width solid $custom-file-border-color;
+  @include border-radius($custom-file-border-radius);
+  @include box-shadow($custom-file-box-shadow);
+
+  &::after {
+    position: absolute;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 3;
+    display: block;
+    height: $custom-file-height-inner;
+    padding: $custom-file-padding-y $custom-file-padding-x;
+    line-height: $custom-file-line-height;
+    color: $custom-file-button-color;
+    content: "Browse";
+    @include gradient-bg($custom-file-button-bg);
+    border-left: inherit;
+    @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);
+  }
+}
+
+// Range
+//
+// Style range inputs the same across browsers. Vendor-specific rules for pseudo
+// elements cannot be mixed. As such, there are no shared styles for focus or
+// active states on prefixed selectors.
+
+.custom-range {
+  width: 100%;
+  height: calc(#{$custom-range-thumb-height} + #{$custom-range-thumb-focus-box-shadow-width * 2});
+  padding: 0; // Need to reset padding
+  background-color: transparent;
+  appearance: none;
+
+  &:focus {
+    outline: none;
+
+    // Pseudo-elements must be split across multiple rulesets to have an effect.
+    // No box-shadow() mixin for focus accessibility.
+    &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
+    &::-moz-range-thumb     { box-shadow: $custom-range-thumb-focus-box-shadow; }
+    &::-ms-thumb            { box-shadow: $custom-range-thumb-focus-box-shadow; }
+  }
+
+  &::-moz-focus-outer {
+    border: 0;
+  }
+
+  &::-webkit-slider-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    margin-top: ($custom-range-track-height - $custom-range-thumb-height) / 2; // Webkit specific
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-webkit-slider-runnable-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent; // Why?
+    cursor: $custom-range-track-cursor;
+    background-color: $custom-range-track-bg;
+    border-color: transparent;
+    @include border-radius($custom-range-track-border-radius);
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-moz-range-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-moz-range-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent;
+    cursor: $custom-range-track-cursor;
+    background-color: $custom-range-track-bg;
+    border-color: transparent; // Firefox specific?
+    @include border-radius($custom-range-track-border-radius);
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-ms-thumb {
+    width: $custom-range-thumb-width;
+    height: $custom-range-thumb-height;
+    margin-top: 0; // Edge specific
+    margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
+    margin-left: $custom-range-thumb-focus-box-shadow-width;  // Workaround that overflowed box-shadow is hidden.
+    @include gradient-bg($custom-range-thumb-bg);
+    border: $custom-range-thumb-border;
+    @include border-radius($custom-range-thumb-border-radius);
+    @include box-shadow($custom-range-thumb-box-shadow);
+    @include transition($custom-forms-transition);
+    appearance: none;
+
+    &:active {
+      @include gradient-bg($custom-range-thumb-active-bg);
+    }
+  }
+
+  &::-ms-track {
+    width: $custom-range-track-width;
+    height: $custom-range-track-height;
+    color: transparent;
+    cursor: $custom-range-track-cursor;
+    background-color: transparent;
+    border-color: transparent;
+    border-width: $custom-range-thumb-height / 2;
+    @include box-shadow($custom-range-track-box-shadow);
+  }
+
+  &::-ms-fill-lower {
+    background-color: $custom-range-track-bg;
+    @include border-radius($custom-range-track-border-radius);
+  }
+
+  &::-ms-fill-upper {
+    margin-right: 15px; // arbitrary?
+    background-color: $custom-range-track-bg;
+    @include border-radius($custom-range-track-border-radius);
+  }
+
+  &:disabled {
+    &::-webkit-slider-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+
+    &::-webkit-slider-runnable-track {
+      cursor: default;
+    }
+
+    &::-moz-range-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+
+    &::-moz-range-track {
+      cursor: default;
+    }
+
+    &::-ms-thumb {
+      background-color: $custom-range-thumb-disabled-bg;
+    }
+  }
+}
+
+.custom-control-label::before,
+.custom-file-label,
+.custom-select {
+  @include transition($custom-forms-transition);
+}

+ 191 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_dropdown.scss

@@ -0,0 +1,191 @@
+// The dropdown wrapper (`<div>`)
+.dropup,
+.dropright,
+.dropdown,
+.dropleft {
+  position: relative;
+}
+
+.dropdown-toggle {
+  white-space: nowrap;
+
+  // Generate the caret automatically
+  @include caret;
+}
+
+// The dropdown menu
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: $zindex-dropdown;
+  display: none; // none by default, but block on "open" of the menu
+  float: left;
+  min-width: $dropdown-min-width;
+  padding: $dropdown-padding-y 0;
+  margin: $dropdown-spacer 0 0; // override default ul
+  @include font-size($dropdown-font-size);
+  color: $dropdown-color;
+  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
+  list-style: none;
+  background-color: $dropdown-bg;
+  background-clip: padding-box;
+  border: $dropdown-border-width solid $dropdown-border-color;
+  @include border-radius($dropdown-border-radius);
+  @include box-shadow($dropdown-box-shadow);
+}
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .dropdown-menu#{$infix}-left {
+      right: auto;
+      left: 0;
+    }
+
+    .dropdown-menu#{$infix}-right {
+      right: 0;
+      left: auto;
+    }
+  }
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+// Just add .dropup after the standard .dropdown class and you're set.
+.dropup {
+  .dropdown-menu {
+    top: auto;
+    bottom: 100%;
+    margin-top: 0;
+    margin-bottom: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(up);
+  }
+}
+
+.dropright {
+  .dropdown-menu {
+    top: 0;
+    right: auto;
+    left: 100%;
+    margin-top: 0;
+    margin-left: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(right);
+    &::after {
+      vertical-align: 0;
+    }
+  }
+}
+
+.dropleft {
+  .dropdown-menu {
+    top: 0;
+    right: 100%;
+    left: auto;
+    margin-top: 0;
+    margin-right: $dropdown-spacer;
+  }
+
+  .dropdown-toggle {
+    @include caret(left);
+    &::before {
+      vertical-align: 0;
+    }
+  }
+}
+
+// When enabled Popper.js, reset basic dropdown position
+// stylelint-disable-next-line no-duplicate-selectors
+.dropdown-menu {
+  &[x-placement^="top"],
+  &[x-placement^="right"],
+  &[x-placement^="bottom"],
+  &[x-placement^="left"] {
+    right: auto;
+    bottom: auto;
+  }
+}
+
+// Dividers (basically an `<hr>`) within the dropdown
+.dropdown-divider {
+  @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y);
+}
+
+// Links, buttons, and more within the dropdown menu
+//
+// `<button>`-specific styles are denoted with `// For <button>s`
+.dropdown-item {
+  display: block;
+  width: 100%; // For `<button>`s
+  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
+  clear: both;
+  font-weight: $font-weight-normal;
+  color: $dropdown-link-color;
+  text-align: inherit; // For `<button>`s
+  white-space: nowrap; // prevent links from randomly breaking onto new lines
+  background-color: transparent; // For `<button>`s
+  border: 0; // For `<button>`s
+
+  // Prevent dropdown overflow if there's no padding
+  // See https://github.com/twbs/bootstrap/pull/27703
+  @if $dropdown-padding-y == 0 {
+    &:first-child {
+      @include border-top-radius($dropdown-inner-border-radius);
+    }
+
+    &:last-child {
+      @include border-bottom-radius($dropdown-inner-border-radius);
+    }
+  }
+
+  @include hover-focus {
+    color: $dropdown-link-hover-color;
+    text-decoration: none;
+    @include gradient-bg($dropdown-link-hover-bg);
+  }
+
+  &.active,
+  &:active {
+    color: $dropdown-link-active-color;
+    text-decoration: none;
+    @include gradient-bg($dropdown-link-active-bg);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $dropdown-link-disabled-color;
+    pointer-events: none;
+    background-color: transparent;
+    // Remove CSS gradients if they're enabled
+    @if $enable-gradients {
+      background-image: none;
+    }
+  }
+}
+
+.dropdown-menu.show {
+  display: block;
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: $dropdown-padding-y $dropdown-item-padding-x;
+  margin-bottom: 0; // for use with heading elements
+  @include font-size($font-size-sm);
+  color: $dropdown-header-color;
+  white-space: nowrap; // as with > li > a
+}
+
+// Dropdown text
+.dropdown-item-text {
+  display: block;
+  padding: $dropdown-item-padding-y $dropdown-item-padding-x;
+  color: $dropdown-link-color;
+}

+ 330 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_forms.scss

@@ -0,0 +1,330 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Textual form controls
+//
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: $input-height;
+  padding: $input-padding-y $input-padding-x;
+  font-family: $input-font-family;
+  @include font-size($input-font-size);
+  font-weight: $input-font-weight;
+  line-height: $input-line-height;
+  color: $input-color;
+  background-color: $input-bg;
+  background-clip: padding-box;
+  border: $input-border-width solid $input-border-color;
+
+  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
+  @include border-radius($input-border-radius, 0);
+
+  @include box-shadow($input-box-shadow);
+  @include transition($input-transition);
+
+  // Unstyle the caret on `<select>`s in IE10+.
+  &::-ms-expand {
+    background-color: transparent;
+    border: 0;
+  }
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  @include form-control-focus();
+
+  // Placeholder
+  &::placeholder {
+    color: $input-placeholder-color;
+    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
+    opacity: 1;
+  }
+
+  // Disabled and read-only inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &:disabled,
+  &[readonly] {
+    background-color: $input-disabled-bg;
+    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
+    opacity: 1;
+  }
+}
+
+select.form-control {
+  &:focus::-ms-value {
+    // Suppress the nested default white text on blue background highlight given to
+    // the selected option text when the (still closed) <select> receives focus
+    // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to
+    // match the appearance of the native widget.
+    // See https://github.com/twbs/bootstrap/issues/19398.
+    color: $input-color;
+    background-color: $input-bg;
+  }
+}
+
+// Make file inputs better match text inputs by forcing them to new lines.
+.form-control-file,
+.form-control-range {
+  display: block;
+  width: 100%;
+}
+
+
+//
+// Labels
+//
+
+// For use with horizontal and inline forms, when you need the label (or legend)
+// text to align with the form controls.
+.col-form-label {
+  padding-top: calc(#{$input-padding-y} + #{$input-border-width});
+  padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});
+  margin-bottom: 0; // Override the `<label>/<legend>` default
+  @include font-size(inherit); // Override the `<legend>` default
+  line-height: $input-line-height;
+}
+
+.col-form-label-lg {
+  padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});
+  padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+}
+
+.col-form-label-sm {
+  padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});
+  padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+}
+
+
+// Readonly controls as plain text
+//
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
+
+.form-control-plaintext {
+  display: block;
+  width: 100%;
+  padding-top: $input-padding-y;
+  padding-bottom: $input-padding-y;
+  margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+  line-height: $input-line-height;
+  color: $input-plaintext-color;
+  background-color: transparent;
+  border: solid transparent;
+  border-width: $input-border-width 0;
+
+  &.form-control-sm,
+  &.form-control-lg {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// Repeated in `_input_group.scss` to avoid Sass extend issues.
+
+.form-control-sm {
+  height: $input-height-sm;
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+  @include border-radius($input-border-radius-sm);
+}
+
+.form-control-lg {
+  height: $input-height-lg;
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+  @include border-radius($input-border-radius-lg);
+}
+
+// stylelint-disable-next-line no-duplicate-selectors
+select.form-control {
+  &[size],
+  &[multiple] {
+    height: auto;
+  }
+}
+
+textarea.form-control {
+  height: auto;
+}
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+  margin-bottom: $form-group-margin-bottom;
+}
+
+.form-text {
+  display: block;
+  margin-top: $form-text-margin-top;
+}
+
+
+// Form grid
+//
+// Special replacement for our grid system's `.row` for tighter form layouts.
+
+.form-row {
+  display: flex;
+  flex-wrap: wrap;
+  margin-right: -$form-grid-gutter-width / 2;
+  margin-left: -$form-grid-gutter-width / 2;
+
+  > .col,
+  > [class*="col-"] {
+    padding-right: $form-grid-gutter-width / 2;
+    padding-left: $form-grid-gutter-width / 2;
+  }
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.form-check {
+  position: relative;
+  display: block;
+  padding-left: $form-check-input-gutter;
+}
+
+.form-check-input {
+  position: absolute;
+  margin-top: $form-check-input-margin-y;
+  margin-left: -$form-check-input-gutter;
+
+  &:disabled ~ .form-check-label {
+    color: $text-muted;
+  }
+}
+
+.form-check-label {
+  margin-bottom: 0; // Override default `<label>` bottom margin
+}
+
+.form-check-inline {
+  display: inline-flex;
+  align-items: center;
+  padding-left: 0; // Override base .form-check
+  margin-right: $form-check-inline-margin-x;
+
+  // Undo .form-check-input defaults and add some `margin-right`.
+  .form-check-input {
+    position: static;
+    margin-top: 0;
+    margin-right: $form-check-inline-input-margin-x;
+    margin-left: 0;
+  }
+}
+
+
+// Form validation
+//
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server side validation.
+
+@each $state, $data in $form-validation-states {
+  @include form-validation-state($state, map-get($data, color), map-get($data, icon));
+}
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+
+.form-inline {
+  display: flex;
+  flex-flow: row wrap;
+  align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)
+
+  // Because we use flex, the initial sizing of checkboxes is collapsed and
+  // doesn't occupy the full-width (which is what we want for xs grid tier),
+  // so we force that here.
+  .form-check {
+    width: 100%;
+  }
+
+  // Kick in the inline
+  @include media-breakpoint-up(sm) {
+    label {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-bottom: 0;
+    }
+
+    // Inline-block all the things for "inline"
+    .form-group {
+      display: flex;
+      flex: 0 0 auto;
+      flex-flow: row wrap;
+      align-items: center;
+      margin-bottom: 0;
+    }
+
+    // Allow folks to *not* use `.form-group`
+    .form-control {
+      display: inline-block;
+      width: auto; // Prevent labels from stacking above inputs in `.form-group`
+      vertical-align: middle;
+    }
+
+    // Make static controls behave like regular ones
+    .form-control-plaintext {
+      display: inline-block;
+    }
+
+    .input-group,
+    .custom-select {
+      width: auto;
+    }
+
+    // Remove default margin on radios/checkboxes that were used for stacking, and
+    // then undo the floating of radios and checkboxes to match.
+    .form-check {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: auto;
+      padding-left: 0;
+    }
+    .form-check-input {
+      position: relative;
+      flex-shrink: 0;
+      margin-top: 0;
+      margin-right: $form-check-input-margin-x;
+      margin-left: 0;
+    }
+
+    .custom-control {
+      align-items: center;
+      justify-content: center;
+    }
+    .custom-control-label {
+      margin-bottom: 0;
+    }
+  }
+}

+ 86 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_functions.scss

@@ -0,0 +1,86 @@
+// Bootstrap functions
+//
+// Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
+
+// Ascending
+// Used to evaluate Sass maps like our grid breakpoints.
+@mixin _assert-ascending($map, $map-name) {
+  $prev-key: null;
+  $prev-num: null;
+  @each $key, $num in $map {
+    @if $prev-num == null or unit($num) == "%" {
+      // Do nothing
+    } @else if not comparable($prev-num, $num) {
+      @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    } @else if $prev-num >= $num {
+      @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
+    }
+    $prev-key: $key;
+    $prev-num: $num;
+  }
+}
+
+// Starts at zero
+// Used to ensure the min-width of the lowest breakpoint starts at 0.
+@mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
+  $values: map-values($map);
+  $first-value: nth($values, 1);
+  @if $first-value != 0 {
+    @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
+  }
+}
+
+// Replace `$search` with `$replace` in `$string`
+// Used on our SVG icon backgrounds for custom forms.
+//
+// @author Hugo Giraudel
+// @param {String} $string - Initial string
+// @param {String} $search - Substring to replace
+// @param {String} $replace ('') - New value
+// @return {String} - Updated string
+@function str-replace($string, $search, $replace: "") {
+  $index: str-index($string, $search);
+
+  @if $index {
+    @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
+  }
+
+  @return $string;
+}
+
+// Color contrast
+@function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
+  $r: red($color);
+  $g: green($color);
+  $b: blue($color);
+
+  $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
+
+  @if ($yiq >= $yiq-contrasted-threshold) {
+    @return $dark;
+  } @else {
+    @return $light;
+  }
+}
+
+// Retrieve color Sass maps
+@function color($key: "blue") {
+  @return map-get($colors, $key);
+}
+
+@function theme-color($key: "primary") {
+  @return map-get($theme-colors, $key);
+}
+
+@function gray($key: "100") {
+  @return map-get($grays, $key);
+}
+
+// Request a theme color level
+@function theme-color-level($color-name: "primary", $level: 0) {
+  $color: theme-color($color-name);
+  $color-base: if($level > 0, $black, $white);
+  $level: abs($level);
+
+  @return mix($color-base, $color, $level * $theme-color-interval);
+}

+ 52 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_grid.scss

@@ -0,0 +1,52 @@
+// Container widths
+//
+// Set the container width, and override it for fixed navbars in media queries.
+
+@if $enable-grid-classes {
+  .container {
+    @include make-container();
+    @include make-container-max-widths();
+  }
+}
+
+// Fluid container
+//
+// Utilizes the mixin meant for fixed width containers, but with 100% width for
+// fluid, full width layouts.
+
+@if $enable-grid-classes {
+  .container-fluid {
+    @include make-container();
+  }
+}
+
+// Row
+//
+// Rows contain and clear the floats of your columns.
+
+@if $enable-grid-classes {
+  .row {
+    @include make-row();
+  }
+
+  // Remove the negative margin from default .row, then the horizontal padding
+  // from all immediate children columns (to prevent runaway style inheritance).
+  .no-gutters {
+    margin-right: 0;
+    margin-left: 0;
+
+    > .col,
+    > [class*="col-"] {
+      padding-right: 0;
+      padding-left: 0;
+    }
+  }
+}
+
+// Columns
+//
+// Common styles for small and large grid columns
+
+@if $enable-grid-classes {
+  @include make-grid-columns();
+}

+ 42 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_images.scss

@@ -0,0 +1,42 @@
+// Responsive images (ensure images don't scale beyond their parents)
+//
+// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
+// We previously tried the "images are responsive by default" approach in Bootstrap v2,
+// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
+// which weren't expecting the images within themselves to be involuntarily resized.
+// See also https://github.com/twbs/bootstrap/issues/18178
+.img-fluid {
+  @include img-fluid;
+}
+
+
+// Image thumbnails
+.img-thumbnail {
+  padding: $thumbnail-padding;
+  background-color: $thumbnail-bg;
+  border: $thumbnail-border-width solid $thumbnail-border-color;
+  @include border-radius($thumbnail-border-radius);
+  @include box-shadow($thumbnail-box-shadow);
+
+  // Keep them at most 100% wide
+  @include img-fluid;
+}
+
+//
+// Figures
+//
+
+.figure {
+  // Ensures the caption's text aligns with the image.
+  display: inline-block;
+}
+
+.figure-img {
+  margin-bottom: $spacer / 2;
+  line-height: 1;
+}
+
+.figure-caption {
+  @include font-size($figure-caption-font-size);
+  color: $figure-caption-color;
+}

+ 193 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_input-group.scss

@@ -0,0 +1,193 @@
+// stylelint-disable selector-no-qualifying-type
+
+//
+// Base styles
+//
+
+.input-group {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap; // For form validation feedback
+  align-items: stretch;
+  width: 100%;
+
+  > .form-control,
+  > .form-control-plaintext,
+  > .custom-select,
+  > .custom-file {
+    position: relative; // For focus state's z-index
+    flex: 1 1 auto;
+    // Add width 1% and flex-basis auto to ensure that button will not wrap out
+    // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.
+    width: 1%;
+    margin-bottom: 0;
+
+    + .form-control,
+    + .custom-select,
+    + .custom-file {
+      margin-left: -$input-border-width;
+    }
+  }
+
+  // Bring the "active" form control to the top of surrounding elements
+  > .form-control:focus,
+  > .custom-select:focus,
+  > .custom-file .custom-file-input:focus ~ .custom-file-label {
+    z-index: 3;
+  }
+
+  // Bring the custom file input above the label
+  > .custom-file .custom-file-input:focus {
+    z-index: 4;
+  }
+
+  > .form-control,
+  > .custom-select {
+    &:not(:last-child) { @include border-right-radius(0); }
+    &:not(:first-child) { @include border-left-radius(0); }
+  }
+
+  // Custom file inputs have more complex markup, thus requiring different
+  // border-radius overrides.
+  > .custom-file {
+    display: flex;
+    align-items: center;
+
+    &:not(:last-child) .custom-file-label,
+    &:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }
+    &:not(:first-child) .custom-file-label { @include border-left-radius(0); }
+  }
+}
+
+
+// Prepend and append
+//
+// While it requires one extra layer of HTML for each, dedicated prepend and
+// append elements allow us to 1) be less clever, 2) simplify our selectors, and
+// 3) support HTML5 form validation.
+
+.input-group-prepend,
+.input-group-append {
+  display: flex;
+
+  // Ensure buttons are always above inputs for more visually pleasing borders.
+  // This isn't needed for `.input-group-text` since it shares the same border-color
+  // as our inputs.
+  .btn {
+    position: relative;
+    z-index: 2;
+
+    &:focus {
+      z-index: 3;
+    }
+  }
+
+  .btn + .btn,
+  .btn + .input-group-text,
+  .input-group-text + .input-group-text,
+  .input-group-text + .btn {
+    margin-left: -$input-border-width;
+  }
+}
+
+.input-group-prepend { margin-right: -$input-border-width; }
+.input-group-append { margin-left: -$input-border-width; }
+
+
+// Textual addons
+//
+// Serves as a catch-all element for any text or radio/checkbox input you wish
+// to prepend or append to an input.
+
+.input-group-text {
+  display: flex;
+  align-items: center;
+  padding: $input-padding-y $input-padding-x;
+  margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom
+  @include font-size($input-font-size); // Match inputs
+  font-weight: $font-weight-normal;
+  line-height: $input-line-height;
+  color: $input-group-addon-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $input-group-addon-bg;
+  border: $input-border-width solid $input-group-addon-border-color;
+  @include border-radius($input-border-radius);
+
+  // Nuke default margins from checkboxes and radios to vertically center within.
+  input[type="radio"],
+  input[type="checkbox"] {
+    margin-top: 0;
+  }
+}
+
+
+// Sizing
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control:not(textarea),
+.input-group-lg > .custom-select {
+  height: $input-height-lg;
+}
+
+.input-group-lg > .form-control,
+.input-group-lg > .custom-select,
+.input-group-lg > .input-group-prepend > .input-group-text,
+.input-group-lg > .input-group-append > .input-group-text,
+.input-group-lg > .input-group-prepend > .btn,
+.input-group-lg > .input-group-append > .btn {
+  padding: $input-padding-y-lg $input-padding-x-lg;
+  @include font-size($input-font-size-lg);
+  line-height: $input-line-height-lg;
+  @include border-radius($input-border-radius-lg);
+}
+
+.input-group-sm > .form-control:not(textarea),
+.input-group-sm > .custom-select {
+  height: $input-height-sm;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .custom-select,
+.input-group-sm > .input-group-prepend > .input-group-text,
+.input-group-sm > .input-group-append > .input-group-text,
+.input-group-sm > .input-group-prepend > .btn,
+.input-group-sm > .input-group-append > .btn {
+  padding: $input-padding-y-sm $input-padding-x-sm;
+  @include font-size($input-font-size-sm);
+  line-height: $input-line-height-sm;
+  @include border-radius($input-border-radius-sm);
+}
+
+.input-group-lg > .custom-select,
+.input-group-sm > .custom-select {
+  padding-right: $custom-select-padding-x + $custom-select-indicator-padding;
+}
+
+
+// Prepend and append rounded corners
+//
+// These rulesets must come after the sizing ones to properly override sm and lg
+// border-radius values when extending. They're more specific than we'd like
+// with the `.input-group >` part, but without it, we cannot override the sizing.
+
+
+.input-group > .input-group-prepend > .btn,
+.input-group > .input-group-prepend > .input-group-text,
+.input-group > .input-group-append:not(:last-child) > .btn,
+.input-group > .input-group-append:not(:last-child) > .input-group-text,
+.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
+  @include border-right-radius(0);
+}
+
+.input-group > .input-group-append > .btn,
+.input-group > .input-group-append > .input-group-text,
+.input-group > .input-group-prepend:not(:first-child) > .btn,
+.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
+.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
+.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
+  @include border-left-radius(0);
+}

+ 17 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_jumbotron.scss

@@ -0,0 +1,17 @@
+.jumbotron {
+  padding: $jumbotron-padding ($jumbotron-padding / 2);
+  margin-bottom: $jumbotron-padding;
+  color: $jumbotron-color;
+  background-color: $jumbotron-bg;
+  @include border-radius($border-radius-lg);
+
+  @include media-breakpoint-up(sm) {
+    padding: ($jumbotron-padding * 2) $jumbotron-padding;
+  }
+}
+
+.jumbotron-fluid {
+  padding-right: 0;
+  padding-left: 0;
+  @include border-radius(0);
+}

+ 149 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_list-group.scss

@@ -0,0 +1,149 @@
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+
+.list-group {
+  display: flex;
+  flex-direction: column;
+
+  // No need to set list-style: none; since .list-group-item is block level
+  padding-left: 0; // reset padding because ul and ol
+  margin-bottom: 0;
+}
+
+
+// Interactive list items
+//
+// Use anchor or button elements instead of `li`s or `div`s to create interactive
+// list items. Includes an extra `.active` modifier class for selected items.
+
+.list-group-item-action {
+  width: 100%; // For `<button>`s (anchors become 100% by default though)
+  color: $list-group-action-color;
+  text-align: inherit; // For `<button>`s (anchors inherit)
+
+  // Hover state
+  @include hover-focus {
+    z-index: 1; // Place hover/focus items above their siblings for proper border styling
+    color: $list-group-action-hover-color;
+    text-decoration: none;
+    background-color: $list-group-hover-bg;
+  }
+
+  &:active {
+    color: $list-group-action-active-color;
+    background-color: $list-group-action-active-bg;
+  }
+}
+
+
+// Individual list items
+//
+// Use on `li`s or `div`s within the `.list-group` parent.
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: $list-group-item-padding-y $list-group-item-padding-x;
+  // Place the border on the list items and negative margin up for better styling
+  margin-bottom: -$list-group-border-width;
+  color: $list-group-color;
+  background-color: $list-group-bg;
+  border: $list-group-border-width solid $list-group-border-color;
+
+  &:first-child {
+    @include border-top-radius($list-group-border-radius);
+  }
+
+  &:last-child {
+    margin-bottom: 0;
+    @include border-bottom-radius($list-group-border-radius);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $list-group-disabled-color;
+    pointer-events: none;
+    background-color: $list-group-disabled-bg;
+  }
+
+  // Include both here for `<a>`s and `<button>`s
+  &.active {
+    z-index: 2; // Place active items above their siblings for proper border styling
+    color: $list-group-active-color;
+    background-color: $list-group-active-bg;
+    border-color: $list-group-active-border-color;
+  }
+}
+
+
+// Horizontal
+//
+// Change the layout of list group items from vertical (default) to horizontal.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+  @include media-breakpoint-up($breakpoint) {
+    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+    .list-group-horizontal#{$infix} {
+      flex-direction: row;
+
+      .list-group-item {
+        margin-right: -$list-group-border-width;
+        margin-bottom: 0;
+
+        &:first-child {
+          @include border-left-radius($list-group-border-radius);
+          @include border-top-right-radius(0);
+        }
+
+        &:last-child {
+          margin-right: 0;
+          @include border-right-radius($list-group-border-radius);
+          @include border-bottom-left-radius(0);
+        }
+      }
+    }
+  }
+}
+
+
+// Flush list items
+//
+// Remove borders and border-radius to keep list group items edge-to-edge. Most
+// useful within other components (e.g., cards).
+
+.list-group-flush {
+  .list-group-item {
+    border-right: 0;
+    border-left: 0;
+    @include border-radius(0);
+
+    &:last-child {
+      margin-bottom: -$list-group-border-width;
+    }
+  }
+
+  &:first-child {
+    .list-group-item:first-child {
+      border-top: 0;
+    }
+  }
+
+  &:last-child {
+    .list-group-item:last-child {
+      margin-bottom: 0;
+      border-bottom: 0;
+    }
+  }
+}
+
+
+// Contextual variants
+//
+// Add modifier classes to change text and background color on individual items.
+// Organizationally, this must come after the `:hover` states.
+
+@each $color, $value in $theme-colors {
+  @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));
+}

+ 8 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_media.scss

@@ -0,0 +1,8 @@
+.media {
+  display: flex;
+  align-items: flex-start;
+}
+
+.media-body {
+  flex: 1;
+}

+ 47 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_mixins.scss

@@ -0,0 +1,47 @@
+// Toggles
+//
+// Used in conjunction with global variables to enable certain theme features.
+
+// Vendor
+@import "vendor/rfs";
+
+// Deprecate
+@import "mixins/deprecate";
+
+// Utilities
+@import "mixins/breakpoints";
+@import "mixins/hover";
+@import "mixins/image";
+@import "mixins/badge";
+@import "mixins/resize";
+@import "mixins/screen-reader";
+@import "mixins/size";
+@import "mixins/reset-text";
+@import "mixins/text-emphasis";
+@import "mixins/text-hide";
+@import "mixins/text-truncate";
+@import "mixins/visibility";
+
+// // Components
+@import "mixins/alert";
+@import "mixins/buttons";
+@import "mixins/caret";
+@import "mixins/pagination";
+@import "mixins/lists";
+@import "mixins/list-group";
+@import "mixins/nav-divider";
+@import "mixins/forms";
+@import "mixins/table-row";
+
+// // Skins
+@import "mixins/background-variant";
+@import "mixins/border-radius";
+@import "mixins/box-shadow";
+@import "mixins/gradients";
+@import "mixins/transition";
+
+// // Layout
+@import "mixins/clearfix";
+@import "mixins/grid-framework";
+@import "mixins/grid";
+@import "mixins/float";

+ 229 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_modal.scss

@@ -0,0 +1,229 @@
+// .modal-open      - body class for killing the scroll
+// .modal           - container to scroll within
+// .modal-dialog    - positioning shell for the actual modal
+// .modal-content   - actual modal w/ bg and corners and stuff
+
+
+.modal-open {
+  // Kill the scroll on the body
+  overflow: hidden;
+
+  .modal {
+    overflow-x: hidden;
+    overflow-y: auto;
+  }
+}
+
+// Container that the modal scrolls within
+.modal {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex-modal;
+  display: none;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  // Prevent Chrome on Windows from adding a focus outline. For details, see
+  // https://github.com/twbs/bootstrap/pull/10951.
+  outline: 0;
+  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
+  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
+  // See also https://github.com/twbs/bootstrap/issues/17695
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: $modal-dialog-margin;
+  // allow clicks to pass through for custom click handling to close modal
+  pointer-events: none;
+
+  // When fading in the modal, animate it to slide down
+  .modal.fade & {
+    @include transition($modal-transition);
+    transform: $modal-fade-transform;
+  }
+  .modal.show & {
+    transform: $modal-show-transform;
+  }
+}
+
+.modal-dialog-scrollable {
+  display: flex; // IE10/11
+  max-height: calc(100% - #{$modal-dialog-margin * 2});
+
+  .modal-content {
+    max-height: calc(100vh - #{$modal-dialog-margin * 2}); // IE10/11
+    overflow: hidden;
+  }
+
+  .modal-header,
+  .modal-footer {
+    flex-shrink: 0;
+  }
+
+  .modal-body {
+    overflow-y: auto;
+  }
+}
+
+.modal-dialog-centered {
+  display: flex;
+  align-items: center;
+  min-height: calc(100% - #{$modal-dialog-margin * 2});
+
+  // Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)
+  &::before {
+    display: block; // IE10
+    height: calc(100vh - #{$modal-dialog-margin * 2});
+    content: "";
+  }
+
+  // Ensure `.modal-body` shows scrollbar (IE10/11)
+  &.modal-dialog-scrollable {
+    flex-direction: column;
+    justify-content: center;
+    height: 100%;
+
+    .modal-content {
+      max-height: none;
+    }
+
+    &::before {
+      content: none;
+    }
+  }
+}
+
+// Actual modal
+.modal-content {
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
+  // counteract the pointer-events: none; in the .modal-dialog
+  color: $modal-content-color;
+  pointer-events: auto;
+  background-color: $modal-content-bg;
+  background-clip: padding-box;
+  border: $modal-content-border-width solid $modal-content-border-color;
+  @include border-radius($modal-content-border-radius);
+  @include box-shadow($modal-content-box-shadow-xs);
+  // Remove focus outline from opened modal
+  outline: 0;
+}
+
+// Modal background
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: $zindex-modal-backdrop;
+  width: 100vw;
+  height: 100vh;
+  background-color: $modal-backdrop-bg;
+
+  // Fade for backdrop
+  &.fade { opacity: 0; }
+  &.show { opacity: $modal-backdrop-opacity; }
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+  display: flex;
+  align-items: flex-start; // so the close btn always stays on the upper right corner
+  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
+  padding: $modal-header-padding;
+  border-bottom: $modal-header-border-width solid $modal-header-border-color;
+  @include border-top-radius($modal-content-border-radius);
+
+  .close {
+    padding: $modal-header-padding;
+    // auto on the left force icon to the right even when there is no .modal-title
+    margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;
+  }
+}
+
+// Title text within header
+.modal-title {
+  margin-bottom: 0;
+  line-height: $modal-title-line-height;
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+  position: relative;
+  // Enable `flex-grow: 1` so that the body take up as much space as possible
+  // when should there be a fixed height on `.modal-dialog`.
+  flex: 1 1 auto;
+  padding: $modal-inner-padding;
+}
+
+// Footer (for actions)
+.modal-footer {
+  display: flex;
+  align-items: center; // vertically center
+  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
+  padding: $modal-inner-padding;
+  border-top: $modal-footer-border-width solid $modal-footer-border-color;
+  @include border-bottom-radius($modal-content-border-radius);
+
+  // Easily place margin between footer elements
+  > :not(:first-child) { margin-left: .25rem; }
+  > :not(:last-child) { margin-right: .25rem; }
+}
+
+// Measure scrollbar width for padding body during modal show/hide
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll;
+}
+
+// Scale up the modal
+@include media-breakpoint-up(sm) {
+  // Automatically set modal's width for larger viewports
+  .modal-dialog {
+    max-width: $modal-md;
+    margin: $modal-dialog-margin-y-sm-up auto;
+  }
+
+  .modal-dialog-scrollable {
+    max-height: calc(100% - #{$modal-dialog-margin-y-sm-up * 2});
+
+    .modal-content {
+      max-height: calc(100vh - #{$modal-dialog-margin-y-sm-up * 2});
+    }
+  }
+
+  .modal-dialog-centered {
+    min-height: calc(100% - #{$modal-dialog-margin-y-sm-up * 2});
+
+    &::before {
+      height: calc(100vh - #{$modal-dialog-margin-y-sm-up * 2});
+    }
+  }
+
+  .modal-content {
+    @include box-shadow($modal-content-box-shadow-sm-up);
+  }
+
+  .modal-sm { max-width: $modal-sm; }
+}
+
+@include media-breakpoint-up(lg) {
+  .modal-lg,
+  .modal-xl {
+    max-width: $modal-lg;
+  }
+}
+
+@include media-breakpoint-up(xl) {
+  .modal-xl { max-width: $modal-xl; }
+}

+ 120 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_nav.scss

@@ -0,0 +1,120 @@
+// Base class
+//
+// Kickstart any navigation component with a set of style resets. Works with
+// `<nav>`s or `<ul>`s.
+
+.nav {
+  display: flex;
+  flex-wrap: wrap;
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+
+.nav-link {
+  display: block;
+  padding: $nav-link-padding-y $nav-link-padding-x;
+
+  @include hover-focus {
+    text-decoration: none;
+  }
+
+  // Disabled state lightens text
+  &.disabled {
+    color: $nav-link-disabled-color;
+    pointer-events: none;
+    cursor: default;
+  }
+}
+
+//
+// Tabs
+//
+
+.nav-tabs {
+  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
+
+  .nav-item {
+    margin-bottom: -$nav-tabs-border-width;
+  }
+
+  .nav-link {
+    border: $nav-tabs-border-width solid transparent;
+    @include border-top-radius($nav-tabs-border-radius);
+
+    @include hover-focus {
+      border-color: $nav-tabs-link-hover-border-color;
+    }
+
+    &.disabled {
+      color: $nav-link-disabled-color;
+      background-color: transparent;
+      border-color: transparent;
+    }
+  }
+
+  .nav-link.active,
+  .nav-item.show .nav-link {
+    color: $nav-tabs-link-active-color;
+    background-color: $nav-tabs-link-active-bg;
+    border-color: $nav-tabs-link-active-border-color;
+  }
+
+  .dropdown-menu {
+    // Make dropdown border overlap tab border
+    margin-top: -$nav-tabs-border-width;
+    // Remove the top rounded corners here since there is a hard edge above the menu
+    @include border-top-radius(0);
+  }
+}
+
+
+//
+// Pills
+//
+
+.nav-pills {
+  .nav-link {
+    @include border-radius($nav-pills-border-radius);
+  }
+
+  .nav-link.active,
+  .show > .nav-link {
+    color: $nav-pills-link-active-color;
+    background-color: $nav-pills-link-active-bg;
+  }
+}
+
+
+//
+// Justified variants
+//
+
+.nav-fill {
+  .nav-item {
+    flex: 1 1 auto;
+    text-align: center;
+  }
+}
+
+.nav-justified {
+  .nav-item {
+    flex-basis: 0;
+    flex-grow: 1;
+    text-align: center;
+  }
+}
+
+
+// Tabbable tabs
+//
+// Hide tabbable panes to start, show them when `.active`
+
+.tab-content {
+  > .tab-pane {
+    display: none;
+  }
+  > .active {
+    display: block;
+  }
+}

+ 294 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_navbar.scss

@@ -0,0 +1,294 @@
+// Contents
+//
+// Navbar
+// Navbar brand
+// Navbar nav
+// Navbar text
+// Navbar divider
+// Responsive navbar
+// Navbar position
+// Navbar themes
+
+
+// Navbar
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+  position: relative;
+  display: flex;
+  flex-wrap: wrap; // allow us to do the line break for collapsing content
+  align-items: center;
+  justify-content: space-between; // space out brand from logo
+  padding: $navbar-padding-y $navbar-padding-x;
+
+  // Because flex properties aren't inherited, we need to redeclare these first
+  // few properties so that content nested within behave properly.
+  > .container,
+  > .container-fluid {
+    display: flex;
+    flex-wrap: wrap;
+    align-items: center;
+    justify-content: space-between;
+  }
+}
+
+
+// Navbar brand
+//
+// Used for brand, project, or site names.
+
+.navbar-brand {
+  display: inline-block;
+  padding-top: $navbar-brand-padding-y;
+  padding-bottom: $navbar-brand-padding-y;
+  margin-right: $navbar-padding-x;
+  @include font-size($navbar-brand-font-size);
+  line-height: inherit;
+  white-space: nowrap;
+
+  @include hover-focus {
+    text-decoration: none;
+  }
+}
+
+
+// Navbar nav
+//
+// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
+
+.navbar-nav {
+  display: flex;
+  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+
+  .nav-link {
+    padding-right: 0;
+    padding-left: 0;
+  }
+
+  .dropdown-menu {
+    position: static;
+    float: none;
+  }
+}
+
+
+// Navbar text
+//
+//
+
+.navbar-text {
+  display: inline-block;
+  padding-top: $nav-link-padding-y;
+  padding-bottom: $nav-link-padding-y;
+}
+
+
+// Responsive navbar
+//
+// Custom styles for responsive collapsing and toggling of navbar contents.
+// Powered by the collapse Bootstrap JavaScript plugin.
+
+// When collapsed, prevent the toggleable navbar contents from appearing in
+// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
+// on the `.navbar` parent.
+.navbar-collapse {
+  flex-basis: 100%;
+  flex-grow: 1;
+  // For always expanded or extra full navbars, ensure content aligns itself
+  // properly vertically. Can be easily overridden with flex utilities.
+  align-items: center;
+}
+
+// Button for toggling the navbar when in its collapsed state
+.navbar-toggler {
+  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
+  @include font-size($navbar-toggler-font-size);
+  line-height: 1;
+  background-color: transparent; // remove default button style
+  border: $border-width solid transparent; // remove default button style
+  @include border-radius($navbar-toggler-border-radius);
+
+  @include hover-focus {
+    text-decoration: none;
+  }
+}
+
+// Keep as a separate element so folks can easily override it with another icon
+// or image file as needed.
+.navbar-toggler-icon {
+  display: inline-block;
+  width: 1.5em;
+  height: 1.5em;
+  vertical-align: middle;
+  content: "";
+  background: no-repeat center center;
+  background-size: 100% 100%;
+}
+
+// Generate series of `.navbar-expand-*` responsive classes for configuring
+// where your navbar collapses.
+.navbar-expand {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    &#{$infix} {
+      @include media-breakpoint-down($breakpoint) {
+        > .container,
+        > .container-fluid {
+          padding-right: 0;
+          padding-left: 0;
+        }
+      }
+
+      @include media-breakpoint-up($next) {
+        flex-flow: row nowrap;
+        justify-content: flex-start;
+
+        .navbar-nav {
+          flex-direction: row;
+
+          .dropdown-menu {
+            position: absolute;
+          }
+
+          .nav-link {
+            padding-right: $navbar-nav-link-padding-x;
+            padding-left: $navbar-nav-link-padding-x;
+          }
+        }
+
+        // For nesting containers, have to redeclare for alignment purposes
+        > .container,
+        > .container-fluid {
+          flex-wrap: nowrap;
+        }
+
+        .navbar-collapse {
+          display: flex !important; // stylelint-disable-line declaration-no-important
+
+          // Changes flex-bases to auto because of an IE10 bug
+          flex-basis: auto;
+        }
+
+        .navbar-toggler {
+          display: none;
+        }
+      }
+    }
+  }
+}
+
+
+// Navbar themes
+//
+// Styles for switching between navbars with light or dark background.
+
+// Dark links against a light background
+.navbar-light {
+  .navbar-brand {
+    color: $navbar-light-brand-color;
+
+    @include hover-focus {
+      color: $navbar-light-brand-hover-color;
+    }
+  }
+
+  .navbar-nav {
+    .nav-link {
+      color: $navbar-light-color;
+
+      @include hover-focus {
+        color: $navbar-light-hover-color;
+      }
+
+      &.disabled {
+        color: $navbar-light-disabled-color;
+      }
+    }
+
+    .show > .nav-link,
+    .active > .nav-link,
+    .nav-link.show,
+    .nav-link.active {
+      color: $navbar-light-active-color;
+    }
+  }
+
+  .navbar-toggler {
+    color: $navbar-light-color;
+    border-color: $navbar-light-toggler-border-color;
+  }
+
+  .navbar-toggler-icon {
+    background-image: $navbar-light-toggler-icon-bg;
+  }
+
+  .navbar-text {
+    color: $navbar-light-color;
+    a {
+      color: $navbar-light-active-color;
+
+      @include hover-focus {
+        color: $navbar-light-active-color;
+      }
+    }
+  }
+}
+
+// White links against a dark background
+.navbar-dark {
+  .navbar-brand {
+    color: $navbar-dark-brand-color;
+
+    @include hover-focus {
+      color: $navbar-dark-brand-hover-color;
+    }
+  }
+
+  .navbar-nav {
+    .nav-link {
+      color: $navbar-dark-color;
+
+      @include hover-focus {
+        color: $navbar-dark-hover-color;
+      }
+
+      &.disabled {
+        color: $navbar-dark-disabled-color;
+      }
+    }
+
+    .show > .nav-link,
+    .active > .nav-link,
+    .nav-link.show,
+    .nav-link.active {
+      color: $navbar-dark-active-color;
+    }
+  }
+
+  .navbar-toggler {
+    color: $navbar-dark-color;
+    border-color: $navbar-dark-toggler-border-color;
+  }
+
+  .navbar-toggler-icon {
+    background-image: $navbar-dark-toggler-icon-bg;
+  }
+
+  .navbar-text {
+    color: $navbar-dark-color;
+    a {
+      color: $navbar-dark-active-color;
+
+      @include hover-focus {
+        color: $navbar-dark-active-color;
+      }
+    }
+  }
+}

+ 73 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_pagination.scss

@@ -0,0 +1,73 @@
+.pagination {
+  display: flex;
+  @include list-unstyled();
+  @include border-radius();
+}
+
+.page-link {
+  position: relative;
+  display: block;
+  padding: $pagination-padding-y $pagination-padding-x;
+  margin-left: -$pagination-border-width;
+  line-height: $pagination-line-height;
+  color: $pagination-color;
+  background-color: $pagination-bg;
+  border: $pagination-border-width solid $pagination-border-color;
+
+  &:hover {
+    z-index: 2;
+    color: $pagination-hover-color;
+    text-decoration: none;
+    background-color: $pagination-hover-bg;
+    border-color: $pagination-hover-border-color;
+  }
+
+  &:focus {
+    z-index: 2;
+    outline: $pagination-focus-outline;
+    box-shadow: $pagination-focus-box-shadow;
+  }
+}
+
+.page-item {
+  &:first-child {
+    .page-link {
+      margin-left: 0;
+      @include border-left-radius($border-radius);
+    }
+  }
+  &:last-child {
+    .page-link {
+      @include border-right-radius($border-radius);
+    }
+  }
+
+  &.active .page-link {
+    z-index: 1;
+    color: $pagination-active-color;
+    background-color: $pagination-active-bg;
+    border-color: $pagination-active-border-color;
+  }
+
+  &.disabled .page-link {
+    color: $pagination-disabled-color;
+    pointer-events: none;
+    // Opinionated: remove the "hand" cursor set previously for .page-link
+    cursor: auto;
+    background-color: $pagination-disabled-bg;
+    border-color: $pagination-disabled-border-color;
+  }
+}
+
+
+//
+// Sizing
+//
+
+.pagination-lg {
+  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);
+}
+
+.pagination-sm {
+  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);
+}

+ 171 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_popover.scss

@@ -0,0 +1,171 @@
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: $zindex-popover;
+  display: block;
+  max-width: $popover-max-width;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size($popover-font-size);
+  // Allow breaking very long words so they don't overflow the popover's bounds
+  word-wrap: break-word;
+  background-color: $popover-bg;
+  background-clip: padding-box;
+  border: $popover-border-width solid $popover-border-color;
+  @include border-radius($popover-border-radius);
+  @include box-shadow($popover-box-shadow);
+
+  .arrow {
+    position: absolute;
+    display: block;
+    width: $popover-arrow-width;
+    height: $popover-arrow-height;
+    margin: 0 $border-radius-lg;
+
+    &::before,
+    &::after {
+      position: absolute;
+      display: block;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-popover-top {
+  margin-bottom: $popover-arrow-height;
+
+  > .arrow {
+    bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
+
+    &::before {
+      bottom: 0;
+      border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-top-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      bottom: $popover-border-width;
+      border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-top-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-right {
+  margin-left: $popover-arrow-height;
+
+  > .arrow {
+    left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
+    width: $popover-arrow-height;
+    height: $popover-arrow-width;
+    margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
+
+    &::before {
+      left: 0;
+      border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-right-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      left: $popover-border-width;
+      border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
+      border-right-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-bottom {
+  margin-top: $popover-arrow-height;
+
+  > .arrow {
+    top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
+
+    &::before {
+      top: 0;
+      border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
+      border-bottom-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      top: $popover-border-width;
+      border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
+      border-bottom-color: $popover-arrow-color;
+    }
+  }
+
+  // This will remove the popover-header's border just below the arrow
+  .popover-header::before {
+    position: absolute;
+    top: 0;
+    left: 50%;
+    display: block;
+    width: $popover-arrow-width;
+    margin-left: -$popover-arrow-width / 2;
+    content: "";
+    border-bottom: $popover-border-width solid $popover-header-bg;
+  }
+}
+
+.bs-popover-left {
+  margin-right: $popover-arrow-height;
+
+  > .arrow {
+    right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);
+    width: $popover-arrow-height;
+    height: $popover-arrow-width;
+    margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners
+
+    &::before {
+      right: 0;
+      border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
+      border-left-color: $popover-arrow-outer-color;
+    }
+
+    &::after {
+      right: $popover-border-width;
+      border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
+      border-left-color: $popover-arrow-color;
+    }
+  }
+}
+
+.bs-popover-auto {
+  &[x-placement^="top"] {
+    @extend .bs-popover-top;
+  }
+  &[x-placement^="right"] {
+    @extend .bs-popover-right;
+  }
+  &[x-placement^="bottom"] {
+    @extend .bs-popover-bottom;
+  }
+  &[x-placement^="left"] {
+    @extend .bs-popover-left;
+  }
+}
+
+
+// Offset the popover to account for the popover arrow
+.popover-header {
+  padding: $popover-header-padding-y $popover-header-padding-x;
+  margin-bottom: 0; // Reset the default from Reboot
+  @include font-size($font-size-base);
+  color: $popover-header-color;
+  background-color: $popover-header-bg;
+  border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
+  $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});
+  @include border-top-radius($offset-border-width);
+
+  &:empty {
+    display: none;
+  }
+}
+
+.popover-body {
+  padding: $popover-body-padding-y $popover-body-padding-x;
+  color: $popover-body-color;
+}

+ 141 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_print.scss

@@ -0,0 +1,141 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type
+
+// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css
+
+// ==========================================================================
+// Print styles.
+// Inlined to avoid the additional HTTP request:
+// https://www.phpied.com/delay-loading-your-print-css/
+// ==========================================================================
+
+@if $enable-print-styles {
+  @media print {
+    *,
+    *::before,
+    *::after {
+      // Bootstrap specific; comment out `color` and `background`
+      //color: $black !important; // Black prints faster
+      text-shadow: none !important;
+      //background: transparent !important;
+      box-shadow: none !important;
+    }
+
+    a {
+      &:not(.btn) {
+        text-decoration: underline;
+      }
+    }
+
+    // Bootstrap specific; comment the following selector out
+    //a[href]::after {
+    //  content: " (" attr(href) ")";
+    //}
+
+    abbr[title]::after {
+      content: " (" attr(title) ")";
+    }
+
+    // Bootstrap specific; comment the following selector out
+    //
+    // Don't show links that are fragment identifiers,
+    // or use the `javascript:` pseudo protocol
+    //
+
+    //a[href^="#"]::after,
+    //a[href^="javascript:"]::after {
+    // content: "";
+    //}
+
+    pre {
+      white-space: pre-wrap !important;
+    }
+    pre,
+    blockquote {
+      border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px
+      page-break-inside: avoid;
+    }
+
+    //
+    // Printing Tables:
+    // http://css-discuss.incutio.com/wiki/Printing_Tables
+    //
+
+    thead {
+      display: table-header-group;
+    }
+
+    tr,
+    img {
+      page-break-inside: avoid;
+    }
+
+    p,
+    h2,
+    h3 {
+      orphans: 3;
+      widows: 3;
+    }
+
+    h2,
+    h3 {
+      page-break-after: avoid;
+    }
+
+    // Bootstrap specific changes start
+
+    // Specify a size and min-width to make printing closer across browsers.
+    // We don't set margin here because it breaks `size` in Chrome. We also
+    // don't use `!important` on `size` as it breaks in Chrome.
+    @page {
+      size: $print-page-size;
+    }
+    body {
+      min-width: $print-body-min-width !important;
+    }
+    .container {
+      min-width: $print-body-min-width !important;
+    }
+
+    // Bootstrap components
+    .navbar {
+      display: none;
+    }
+    .badge {
+      border: $border-width solid $black;
+    }
+
+    .table {
+      border-collapse: collapse !important;
+
+      td,
+      th {
+        background-color: $white !important;
+      }
+    }
+
+    .table-bordered {
+      th,
+      td {
+        border: 1px solid $gray-300 !important;
+      }
+    }
+
+    .table-dark {
+      color: inherit;
+
+      th,
+      td,
+      thead th,
+      tbody + tbody {
+        border-color: $table-border-color;
+      }
+    }
+
+    .table .thead-dark th {
+      color: inherit;
+      border-color: $table-border-color;
+    }
+
+    // Bootstrap specific changes end
+  }
+}

+ 43 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_progress.scss

@@ -0,0 +1,43 @@
+// Disable animation if transitions are disabled
+@if $enable-transitions {
+  @keyframes progress-bar-stripes {
+    from { background-position: $progress-height 0; }
+    to { background-position: 0 0; }
+  }
+}
+
+.progress {
+  display: flex;
+  height: $progress-height;
+  overflow: hidden; // force rounded corners by cropping it
+  @include font-size($progress-font-size);
+  background-color: $progress-bg;
+  @include border-radius($progress-border-radius);
+  @include box-shadow($progress-box-shadow);
+}
+
+.progress-bar {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  color: $progress-bar-color;
+  text-align: center;
+  white-space: nowrap;
+  background-color: $progress-bar-bg;
+  @include transition($progress-bar-transition);
+}
+
+.progress-bar-striped {
+  @include gradient-striped();
+  background-size: $progress-height $progress-height;
+}
+
+@if $enable-transitions {
+  .progress-bar-animated {
+    animation: progress-bar-stripes $progress-bar-animation-timing;
+
+    @media (prefers-reduced-motion: reduce) {
+      animation: none;
+    }
+  }
+}

+ 483 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_reboot.scss

@@ -0,0 +1,483 @@
+// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
+
+// Reboot
+//
+// Normalization of HTML elements, manually forked from Normalize.css to remove
+// styles targeting irrelevant browsers while applying new styles.
+//
+// Normalize is licensed MIT. https://github.com/necolas/normalize.css
+
+
+// Document
+//
+// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
+// 2. Change the default font family in all browsers.
+// 3. Correct the line height in all browsers.
+// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.
+// 5. Change the default tap highlight to be completely transparent in iOS.
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box; // 1
+}
+
+html {
+  font-family: sans-serif; // 2
+  line-height: 1.15; // 3
+  -webkit-text-size-adjust: 100%; // 4
+  -webkit-tap-highlight-color: rgba($black, 0); // 5
+}
+
+// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
+// TODO: remove in v5
+// stylelint-disable-next-line selector-list-comma-newline-after
+article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
+  display: block;
+}
+
+// Body
+//
+// 1. Remove the margin in all browsers.
+// 2. As a best practice, apply a default `background-color`.
+// 3. Set an explicit initial text-align value so that we can later use
+//    the `inherit` value on things like `<th>` elements.
+
+body {
+  margin: 0; // 1
+  font-family: $font-family-base;
+  @include font-size($font-size-base);
+  font-weight: $font-weight-base;
+  line-height: $line-height-base;
+  color: $body-color;
+  text-align: left; // 3
+  background-color: $body-bg; // 2
+}
+
+// Suppress the focus outline on elements that cannot be accessed via keyboard.
+// This prevents an unwanted focus outline from appearing around elements that
+// might still respond to pointer events.
+//
+// Credit: https://github.com/suitcss/base
+[tabindex="-1"]:focus {
+  outline: 0 !important;
+}
+
+
+// Content grouping
+//
+// 1. Add the correct box sizing in Firefox.
+// 2. Show the overflow in Edge and IE.
+
+hr {
+  box-sizing: content-box; // 1
+  height: 0; // 1
+  overflow: visible; // 2
+}
+
+
+//
+// Typography
+//
+
+// Remove top margins from headings
+//
+// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
+// margin for easier control within type scales as it avoids margin collapsing.
+// stylelint-disable-next-line selector-list-comma-newline-after
+h1, h2, h3, h4, h5, h6 {
+  margin-top: 0;
+  margin-bottom: $headings-margin-bottom;
+}
+
+// Reset margins on paragraphs
+//
+// Similarly, the top margin on `<p>`s get reset. However, we also reset the
+// bottom margin to use `rem` units instead of `em`.
+p {
+  margin-top: 0;
+  margin-bottom: $paragraph-margin-bottom;
+}
+
+// Abbreviations
+//
+// 1. Duplicate behavior to the data-* attribute for our tooltip plugin
+// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+// 3. Add explicit cursor to indicate changed behavior.
+// 4. Remove the bottom border in Firefox 39-.
+// 5. Prevent the text-decoration to be skipped.
+
+abbr[title],
+abbr[data-original-title] { // 1
+  text-decoration: underline; // 2
+  text-decoration: underline dotted; // 2
+  cursor: help; // 3
+  border-bottom: 0; // 4
+  text-decoration-skip-ink: none; // 5
+}
+
+address {
+  margin-bottom: 1rem;
+  font-style: normal;
+  line-height: inherit;
+}
+
+ol,
+ul,
+dl {
+  margin-top: 0;
+  margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+  margin-bottom: 0;
+}
+
+dt {
+  font-weight: $dt-font-weight;
+}
+
+dd {
+  margin-bottom: .5rem;
+  margin-left: 0; // Undo browser default
+}
+
+blockquote {
+  margin: 0 0 1rem;
+}
+
+b,
+strong {
+  font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari
+}
+
+small {
+  @include font-size(80%); // Add the correct font size in all browsers
+}
+
+//
+// Prevent `sub` and `sup` elements from affecting the line height in
+// all browsers.
+//
+
+sub,
+sup {
+  position: relative;
+  @include font-size(75%);
+  line-height: 0;
+  vertical-align: baseline;
+}
+
+sub { bottom: -.25em; }
+sup { top: -.5em; }
+
+
+//
+// Links
+//
+
+a {
+  color: $link-color;
+  text-decoration: $link-decoration;
+  background-color: transparent; // Remove the gray background on active links in IE 10.
+
+  @include hover {
+    color: $link-hover-color;
+    text-decoration: $link-hover-decoration;
+  }
+}
+
+// And undo these styles for placeholder links/named anchors (without href)
+// which have not been made explicitly keyboard-focusable (without tabindex).
+// It would be more straightforward to just use a[href] in previous block, but that
+// causes specificity issues in many other styles that are too complex to fix.
+// See https://github.com/twbs/bootstrap/issues/19402
+
+a:not([href]):not([tabindex]) {
+  color: inherit;
+  text-decoration: none;
+
+  @include hover-focus {
+    color: inherit;
+    text-decoration: none;
+  }
+
+  &:focus {
+    outline: 0;
+  }
+}
+
+
+//
+// Code
+//
+
+pre,
+code,
+kbd,
+samp {
+  font-family: $font-family-monospace;
+  @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
+}
+
+pre {
+  // Remove browser default top margin
+  margin-top: 0;
+  // Reset browser default of `1em` to use `rem`s
+  margin-bottom: 1rem;
+  // Don't allow content to break outside
+  overflow: auto;
+}
+
+
+//
+// Figures
+//
+
+figure {
+  // Apply a consistent margin strategy (matches our type styles).
+  margin: 0 0 1rem;
+}
+
+
+//
+// Images and content
+//
+
+img {
+  vertical-align: middle;
+  border-style: none; // Remove the border on images inside links in IE 10-.
+}
+
+svg {
+  // Workaround for the SVG overflow bug in IE10/11 is still required.
+  // See https://github.com/twbs/bootstrap/issues/26878
+  overflow: hidden;
+  vertical-align: middle;
+}
+
+
+//
+// Tables
+//
+
+table {
+  border-collapse: collapse; // Prevent double borders
+}
+
+caption {
+  padding-top: $table-cell-padding;
+  padding-bottom: $table-cell-padding;
+  color: $table-caption-color;
+  text-align: left;
+  caption-side: bottom;
+}
+
+th {
+  // Matches default `<td>` alignment by inheriting from the `<body>`, or the
+  // closest parent with a set `text-align`.
+  text-align: inherit;
+}
+
+
+//
+// Forms
+//
+
+label {
+  // Allow labels to use `margin` for spacing.
+  display: inline-block;
+  margin-bottom: $label-margin-bottom;
+}
+
+// Remove the default `border-radius` that macOS Chrome adds.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24093
+button {
+  // stylelint-disable-next-line property-blacklist
+  border-radius: 0;
+}
+
+// Work around a Firefox/IE bug where the transparent `button` background
+// results in a loss of the default `button` focus styles.
+//
+// Credit: https://github.com/suitcss/base/
+button:focus {
+  outline: 1px dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+}
+
+input,
+button,
+select,
+optgroup,
+textarea {
+  margin: 0; // Remove the margin in Firefox and Safari
+  font-family: inherit;
+  @include font-size(inherit);
+  line-height: inherit;
+}
+
+button,
+input {
+  overflow: visible; // Show the overflow in Edge
+}
+
+button,
+select {
+  text-transform: none; // Remove the inheritance of text transform in Firefox
+}
+
+// Remove the inheritance of word-wrap in Safari.
+//
+// Details at https://github.com/twbs/bootstrap/issues/24990
+select {
+  word-wrap: normal;
+}
+
+
+// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+//    controls in Android 4.
+// 2. Correct the inability to style clickable types in iOS and Safari.
+button,
+[type="button"], // 1
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button; // 2
+}
+
+// Opinionated: add "hand" cursor to non-disabled button elements.
+@if $enable-pointer-cursor-for-buttons {
+  button,
+  [type="button"],
+  [type="reset"],
+  [type="submit"] {
+    &:not(:disabled) {
+      cursor: pointer;
+    }
+  }
+}
+
+// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  padding: 0;
+  border-style: none;
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+  box-sizing: border-box; // 1. Add the correct box sizing in IE 10-
+  padding: 0; // 2. Remove the padding in IE 10-
+}
+
+
+input[type="date"],
+input[type="time"],
+input[type="datetime-local"],
+input[type="month"] {
+  // Remove the default appearance of temporal inputs to avoid a Mobile Safari
+  // bug where setting a custom line-height prevents text from being vertically
+  // centered within the input.
+  // See https://bugs.webkit.org/show_bug.cgi?id=139848
+  // and https://github.com/twbs/bootstrap/issues/11266
+  -webkit-appearance: listbox;
+}
+
+textarea {
+  overflow: auto; // Remove the default vertical scrollbar in IE.
+  // Textareas should really only resize vertically so they don't break their (horizontal) containers.
+  resize: vertical;
+}
+
+fieldset {
+  // Browsers set a default `min-width: min-content;` on fieldsets,
+  // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
+  // So we reset that to ensure fieldsets behave more like a standard block element.
+  // See https://github.com/twbs/bootstrap/issues/59
+  // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
+  min-width: 0;
+  // Reset the default outline behavior of fieldsets so they don't affect page layout.
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+// 1. Correct the text wrapping in Edge and IE.
+// 2. Correct the color inheritance from `fieldset` elements in IE.
+legend {
+  display: block;
+  width: 100%;
+  max-width: 100%; // 1
+  padding: 0;
+  margin-bottom: .5rem;
+  @include font-size(1.5rem);
+  line-height: inherit;
+  color: inherit; // 2
+  white-space: normal; // 1
+}
+
+progress {
+  vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.
+}
+
+// Correct the cursor style of increment and decrement buttons in Chrome.
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+[type="search"] {
+  // This overrides the extra rounded corners on search inputs in iOS so that our
+  // `.form-control` class can properly style them. Note that this cannot simply
+  // be added to `.form-control` as it's not specific enough. For details, see
+  // https://github.com/twbs/bootstrap/issues/11586.
+  outline-offset: -2px; // 2. Correct the outline style in Safari.
+  -webkit-appearance: none;
+}
+
+//
+// Remove the inner padding in Chrome and Safari on macOS.
+//
+
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+//
+// 1. Correct the inability to style clickable types in iOS and Safari.
+// 2. Change font properties to `inherit` in Safari.
+//
+
+::-webkit-file-upload-button {
+  font: inherit; // 2
+  -webkit-appearance: button; // 1
+}
+
+//
+// Correct element displays
+//
+
+output {
+  display: inline-block;
+}
+
+summary {
+  display: list-item; // Add the correct display in all browsers
+  cursor: pointer;
+}
+
+template {
+  display: none; // Add the correct display in IE
+}
+
+// Always hide an element with the `hidden` HTML attribute (from PureCSS).
+// Needed for proper display in IE 10-.
+[hidden] {
+  display: none !important;
+}

+ 19 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_root.scss

@@ -0,0 +1,19 @@
+:root {
+  // Custom variable values only support SassScript inside `#{}`.
+  @each $color, $value in $colors {
+    --#{$color}: #{$value};
+  }
+
+  @each $color, $value in $theme-colors {
+    --#{$color}: #{$value};
+  }
+
+  @each $bp, $value in $grid-breakpoints {
+    --breakpoint-#{$bp}: #{$value};
+  }
+
+  // Use `inspect` for lists so that quoted items keep the quotes.
+  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
+  --font-family-sans-serif: #{inspect($font-family-sans-serif)};
+  --font-family-monospace: #{inspect($font-family-monospace)};
+}

+ 55 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_spinners.scss

@@ -0,0 +1,55 @@
+//
+// Rotating border
+//
+
+@keyframes spinner-border {
+  to { transform: rotate(360deg); }
+}
+
+.spinner-border {
+  display: inline-block;
+  width: $spinner-width;
+  height: $spinner-height;
+  vertical-align: text-bottom;
+  border: $spinner-border-width solid currentColor;
+  border-right-color: transparent;
+  // stylelint-disable-next-line property-blacklist
+  border-radius: 50%;
+  animation: spinner-border .75s linear infinite;
+}
+
+.spinner-border-sm {
+  width: $spinner-width-sm;
+  height: $spinner-height-sm;
+  border-width: $spinner-border-width-sm;
+}
+
+//
+// Growing circle
+//
+
+@keyframes spinner-grow {
+  0% {
+    transform: scale(0);
+  }
+  50% {
+    opacity: 1;
+  }
+}
+
+.spinner-grow {
+  display: inline-block;
+  width: $spinner-width;
+  height: $spinner-height;
+  vertical-align: text-bottom;
+  background-color: currentColor;
+  // stylelint-disable-next-line property-blacklist
+  border-radius: 50%;
+  opacity: 0;
+  animation: spinner-grow .75s linear infinite;
+}
+
+.spinner-grow-sm {
+  width: $spinner-width-sm;
+  height: $spinner-height-sm;
+}

+ 185 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_tables.scss

@@ -0,0 +1,185 @@
+//
+// Basic Bootstrap table
+//
+
+.table {
+  width: 100%;
+  margin-bottom: $spacer;
+  color: $table-color;
+  background-color: $table-bg; // Reset for nesting within parents with `background-color`.
+
+  th,
+  td {
+    padding: $table-cell-padding;
+    vertical-align: top;
+    border-top: $table-border-width solid $table-border-color;
+  }
+
+  thead th {
+    vertical-align: bottom;
+    border-bottom: (2 * $table-border-width) solid $table-border-color;
+  }
+
+  tbody + tbody {
+    border-top: (2 * $table-border-width) solid $table-border-color;
+  }
+}
+
+
+//
+// Condensed table w/ half padding
+//
+
+.table-sm {
+  th,
+  td {
+    padding: $table-cell-padding-sm;
+  }
+}
+
+
+// Border versions
+//
+// Add or remove borders all around the table and between all the columns.
+
+.table-bordered {
+  border: $table-border-width solid $table-border-color;
+
+  th,
+  td {
+    border: $table-border-width solid $table-border-color;
+  }
+
+  thead {
+    th,
+    td {
+      border-bottom-width: 2 * $table-border-width;
+    }
+  }
+}
+
+.table-borderless {
+  th,
+  td,
+  thead th,
+  tbody + tbody {
+    border: 0;
+  }
+}
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+  tbody tr:nth-of-type(#{$table-striped-order}) {
+    background-color: $table-accent-bg;
+  }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+  tbody tr {
+    @include hover {
+      color: $table-hover-color;
+      background-color: $table-hover-bg;
+    }
+  }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+@each $color, $value in $theme-colors {
+  @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));
+}
+
+@include table-row-variant(active, $table-active-bg);
+
+
+// Dark styles
+//
+// Same table markup, but inverted color scheme: dark background and light text.
+
+// stylelint-disable-next-line no-duplicate-selectors
+.table {
+  .thead-dark {
+    th {
+      color: $table-dark-color;
+      background-color: $table-dark-bg;
+      border-color: $table-dark-border-color;
+    }
+  }
+
+  .thead-light {
+    th {
+      color: $table-head-color;
+      background-color: $table-head-bg;
+      border-color: $table-border-color;
+    }
+  }
+}
+
+.table-dark {
+  color: $table-dark-color;
+  background-color: $table-dark-bg;
+
+  th,
+  td,
+  thead th {
+    border-color: $table-dark-border-color;
+  }
+
+  &.table-bordered {
+    border: 0;
+  }
+
+  &.table-striped {
+    tbody tr:nth-of-type(odd) {
+      background-color: $table-dark-accent-bg;
+    }
+  }
+
+  &.table-hover {
+    tbody tr {
+      @include hover {
+        color: $table-dark-hover-color;
+        background-color: $table-dark-hover-bg;
+      }
+    }
+  }
+}
+
+
+// Responsive tables
+//
+// Generate series of `.table-responsive-*` classes for configuring the screen
+// size of where your table will overflow.
+
+.table-responsive {
+  @each $breakpoint in map-keys($grid-breakpoints) {
+    $next: breakpoint-next($breakpoint, $grid-breakpoints);
+    $infix: breakpoint-infix($next, $grid-breakpoints);
+
+    &#{$infix} {
+      @include media-breakpoint-down($breakpoint) {
+        display: block;
+        width: 100%;
+        overflow-x: auto;
+        -webkit-overflow-scrolling: touch;
+
+        // Prevent double border on horizontal scroll due to use of `display: block;`
+        > .table-bordered {
+          border: 0;
+        }
+      }
+    }
+  }
+}

+ 44 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_toasts.scss

@@ -0,0 +1,44 @@
+.toast {
+  max-width: $toast-max-width;
+  overflow: hidden; // cheap rounded corners on nested items
+  @include font-size($toast-font-size);
+  color: $toast-color;
+  background-color: $toast-background-color;
+  background-clip: padding-box;
+  border: $toast-border-width solid $toast-border-color;
+  box-shadow: $toast-box-shadow;
+  backdrop-filter: blur(10px);
+  opacity: 0;
+  @include border-radius($toast-border-radius);
+
+  &:not(:last-child) {
+    margin-bottom: $toast-padding-x;
+  }
+
+  &.showing {
+    opacity: 1;
+  }
+
+  &.show {
+    display: block;
+    opacity: 1;
+  }
+
+  &.hide {
+    display: none;
+  }
+}
+
+.toast-header {
+  display: flex;
+  align-items: center;
+  padding: $toast-padding-y $toast-padding-x;
+  color: $toast-header-color;
+  background-color: $toast-header-background-color;
+  background-clip: padding-box;
+  border-bottom: $toast-border-width solid $toast-header-border-color;
+}
+
+.toast-body {
+  padding: $toast-padding-x; // apply to both vertical and horizontal
+}

+ 115 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_tooltip.scss

@@ -0,0 +1,115 @@
+// Base class
+.tooltip {
+  position: absolute;
+  z-index: $zindex-tooltip;
+  display: block;
+  margin: $tooltip-margin;
+  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+  // So reset our font and text properties to avoid inheriting weird values.
+  @include reset-text();
+  @include font-size($tooltip-font-size);
+  // Allow breaking very long words so they don't overflow the tooltip's bounds
+  word-wrap: break-word;
+  opacity: 0;
+
+  &.show { opacity: $tooltip-opacity; }
+
+  .arrow {
+    position: absolute;
+    display: block;
+    width: $tooltip-arrow-width;
+    height: $tooltip-arrow-height;
+
+    &::before {
+      position: absolute;
+      content: "";
+      border-color: transparent;
+      border-style: solid;
+    }
+  }
+}
+
+.bs-tooltip-top {
+  padding: $tooltip-arrow-height 0;
+
+  .arrow {
+    bottom: 0;
+
+    &::before {
+      top: 0;
+      border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+      border-top-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-right {
+  padding: 0 $tooltip-arrow-height;
+
+  .arrow {
+    left: 0;
+    width: $tooltip-arrow-height;
+    height: $tooltip-arrow-width;
+
+    &::before {
+      right: 0;
+      border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+      border-right-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-bottom {
+  padding: $tooltip-arrow-height 0;
+
+  .arrow {
+    top: 0;
+
+    &::before {
+      bottom: 0;
+      border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+      border-bottom-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-left {
+  padding: 0 $tooltip-arrow-height;
+
+  .arrow {
+    right: 0;
+    width: $tooltip-arrow-height;
+    height: $tooltip-arrow-width;
+
+    &::before {
+      left: 0;
+      border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+      border-left-color: $tooltip-arrow-color;
+    }
+  }
+}
+
+.bs-tooltip-auto {
+  &[x-placement^="top"] {
+    @extend .bs-tooltip-top;
+  }
+  &[x-placement^="right"] {
+    @extend .bs-tooltip-right;
+  }
+  &[x-placement^="bottom"] {
+    @extend .bs-tooltip-bottom;
+  }
+  &[x-placement^="left"] {
+    @extend .bs-tooltip-left;
+  }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+  max-width: $tooltip-max-width;
+  padding: $tooltip-padding-y $tooltip-padding-x;
+  color: $tooltip-color;
+  text-align: center;
+  background-color: $tooltip-bg;
+  @include border-radius($tooltip-border-radius);
+}

+ 20 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_transitions.scss

@@ -0,0 +1,20 @@
+.fade {
+  @include transition($transition-fade);
+
+  &:not(.show) {
+    opacity: 0;
+  }
+}
+
+.collapse {
+  &:not(.show) {
+    display: none;
+  }
+}
+
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  @include transition($transition-collapse);
+}

+ 125 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_type.scss

@@ -0,0 +1,125 @@
+// stylelint-disable declaration-no-important, selector-list-comma-newline-after
+
+//
+// Headings
+//
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  margin-bottom: $headings-margin-bottom;
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+  line-height: $headings-line-height;
+  color: $headings-color;
+}
+
+h1, .h1 { @include font-size($h1-font-size); }
+h2, .h2 { @include font-size($h2-font-size); }
+h3, .h3 { @include font-size($h3-font-size); }
+h4, .h4 { @include font-size($h4-font-size); }
+h5, .h5 { @include font-size($h5-font-size); }
+h6, .h6 { @include font-size($h6-font-size); }
+
+.lead {
+  @include font-size($lead-font-size);
+  font-weight: $lead-font-weight;
+}
+
+// Type display classes
+.display-1 {
+  @include font-size($display1-size);
+  font-weight: $display1-weight;
+  line-height: $display-line-height;
+}
+.display-2 {
+  @include font-size($display2-size);
+  font-weight: $display2-weight;
+  line-height: $display-line-height;
+}
+.display-3 {
+  @include font-size($display3-size);
+  font-weight: $display3-weight;
+  line-height: $display-line-height;
+}
+.display-4 {
+  @include font-size($display4-size);
+  font-weight: $display4-weight;
+  line-height: $display-line-height;
+}
+
+
+//
+// Horizontal rules
+//
+
+hr {
+  margin-top: $hr-margin-y;
+  margin-bottom: $hr-margin-y;
+  border: 0;
+  border-top: $hr-border-width solid $hr-border-color;
+}
+
+
+//
+// Emphasis
+//
+
+small,
+.small {
+  @include font-size($small-font-size);
+  font-weight: $font-weight-normal;
+}
+
+mark,
+.mark {
+  padding: $mark-padding;
+  background-color: $mark-bg;
+}
+
+
+//
+// Lists
+//
+
+.list-unstyled {
+  @include list-unstyled;
+}
+
+// Inline turns list items into inline-block
+.list-inline {
+  @include list-unstyled;
+}
+.list-inline-item {
+  display: inline-block;
+
+  &:not(:last-child) {
+    margin-right: $list-inline-padding;
+  }
+}
+
+
+//
+// Misc
+//
+
+// Builds on `abbr`
+.initialism {
+  @include font-size(90%);
+  text-transform: uppercase;
+}
+
+// Blockquotes
+.blockquote {
+  margin-bottom: $spacer;
+  @include font-size($blockquote-font-size);
+}
+
+.blockquote-footer {
+  display: block;
+  @include font-size($blockquote-small-font-size);
+  color: $blockquote-small-color;
+
+  &::before {
+    content: "\2014\00A0"; // em dash, nbsp
+  }
+}

+ 17 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_utilities.scss

@@ -0,0 +1,17 @@
+@import "utilities/align";
+@import "utilities/background";
+@import "utilities/borders";
+@import "utilities/clearfix";
+@import "utilities/display";
+@import "utilities/embed";
+@import "utilities/flex";
+@import "utilities/float";
+@import "utilities/overflow";
+@import "utilities/position";
+@import "utilities/screenreaders";
+@import "utilities/shadows";
+@import "utilities/sizing";
+@import "utilities/stretched-link";
+@import "utilities/spacing";
+@import "utilities/text";
+@import "utilities/visibility";

+ 1123 - 0
apps/static/assets/scss/black-dashboard/bootstrap/_variables.scss

@@ -0,0 +1,1123 @@
+// Variables
+//
+// Variables should follow the `$component-state-property-size` formula for
+// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
+
+// Color system
+
+$white:    #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black:    #000 !default;
+
+$grays: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$grays: map-merge(
+  (
+    "100": $gray-100,
+    "200": $gray-200,
+    "300": $gray-300,
+    "400": $gray-400,
+    "500": $gray-500,
+    "600": $gray-600,
+    "700": $gray-700,
+    "800": $gray-800,
+    "900": $gray-900
+  ),
+  $grays
+);
+
+$blue:    #007bff !default;
+$indigo:  #6610f2 !default;
+$purple:  #6f42c1 !default;
+$pink:    #e83e8c !default;
+$red:     #dc3545 !default;
+$orange:  #fd7e14 !default;
+$yellow:  #ffc107 !default;
+$green:   #28a745 !default;
+$teal:    #20c997 !default;
+$cyan:    #17a2b8 !default;
+
+$colors: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$colors: map-merge(
+  (
+    "blue":       $blue,
+    "indigo":     $indigo,
+    "purple":     $purple,
+    "pink":       $pink,
+    "red":        $red,
+    "orange":     $orange,
+    "yellow":     $yellow,
+    "green":      $green,
+    "teal":       $teal,
+    "cyan":       $cyan,
+    "white":      $white,
+    "gray":       $gray-600,
+    "gray-dark":  $gray-800
+  ),
+  $colors
+);
+
+$primary:       $blue !default;
+$secondary:     $gray-600 !default;
+$success:       $green !default;
+$info:          $cyan !default;
+$warning:       $yellow !default;
+$danger:        $red !default;
+$light:         $gray-100 !default;
+$dark:          $gray-800 !default;
+
+$theme-colors: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$theme-colors: map-merge(
+  (
+    "primary":    $primary,
+    "secondary":  $secondary,
+    "success":    $success,
+    "info":       $info,
+    "warning":    $warning,
+    "danger":     $danger,
+    "light":      $light,
+    "dark":       $dark
+  ),
+  $theme-colors
+);
+
+// Set a specific jump point for requesting color jumps
+$theme-color-interval:      8% !default;
+
+// The yiq lightness value that determines when the lightness of color changes from "dark" to "light". Acceptable values are between 0 and 255.
+$yiq-contrasted-threshold:  150 !default;
+
+// Customize the light and dark text colors for use in our YIQ color contrast function.
+$yiq-text-dark:             $gray-900 !default;
+$yiq-text-light:            $white !default;
+
+
+// Options
+//
+// Quickly modify global styling by enabling or disabling optional features.
+
+$enable-caret:                                true !default;
+$enable-rounded:                              true !default;
+$enable-shadows:                              false !default;
+$enable-gradients:                            false !default;
+$enable-transitions:                          true !default;
+$enable-prefers-reduced-motion-media-query:   true !default;
+$enable-hover-media-query:                    false !default; // Deprecated, no longer affects any compiled CSS
+$enable-grid-classes:                         true !default;
+$enable-pointer-cursor-for-buttons:           true !default;
+$enable-print-styles:                         true !default;
+$enable-responsive-font-sizes:                false !default;
+$enable-validation-icons:                     true !default;
+$enable-deprecation-messages:                 true !default;
+
+
+// Spacing
+//
+// Control the default styling of most Bootstrap elements by modifying these
+// variables. Mostly focused on spacing.
+// You can add more entries to the $spacers map, should you need more variation.
+
+$spacer: 1rem !default;
+$spacers: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$spacers: map-merge(
+  (
+    0: 0,
+    1: ($spacer * .25),
+    2: ($spacer * .5),
+    3: $spacer,
+    4: ($spacer * 1.5),
+    5: ($spacer * 3)
+  ),
+  $spacers
+);
+
+// This variable affects the `.h-*` and `.w-*` classes.
+$sizes: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$sizes: map-merge(
+  (
+    25: 25%,
+    50: 50%,
+    75: 75%,
+    100: 100%,
+    auto: auto
+  ),
+  $sizes
+);
+
+
+// Body
+//
+// Settings for the `<body>` element.
+
+$body-bg:                   $white !default;
+$body-color:                $gray-900 !default;
+
+
+// Links
+//
+// Style anchor elements.
+
+$link-color:                              theme-color("primary") !default;
+$link-decoration:                         none !default;
+$link-hover-color:                        darken($link-color, 15%) !default;
+$link-hover-decoration:                   underline !default;
+// Darken percentage for links with `.text-*` class (e.g. `.text-success`)
+$emphasized-link-hover-darken-percentage: 15% !default;
+
+// Paragraphs
+//
+// Style p element.
+
+$paragraph-margin-bottom:   1rem !default;
+
+
+// Grid breakpoints
+//
+// Define the minimum dimensions at which your layout will change,
+// adapting to different screen sizes, for use in media queries.
+
+$grid-breakpoints: (
+  xs: 0,
+  sm: 576px,
+  md: 768px,
+  lg: 992px,
+  xl: 1200px
+) !default;
+
+@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
+@include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
+
+
+// Grid containers
+//
+// Define the maximum width of `.container` for different screen sizes.
+
+$container-max-widths: (
+  sm: 540px,
+  md: 720px,
+  lg: 960px,
+  xl: 1140px
+) !default;
+
+@include _assert-ascending($container-max-widths, "$container-max-widths");
+
+
+// Grid columns
+//
+// Set the number of columns and specify the width of the gutters.
+
+$grid-columns:                12 !default;
+$grid-gutter-width:           30px !default;
+
+
+// Components
+//
+// Define common padding and border radius sizes and more.
+
+$line-height-lg:              1.5 !default;
+$line-height-sm:              1.5 !default;
+
+$border-width:                1px !default;
+$border-color:                $gray-300 !default;
+
+$border-radius:               .25rem !default;
+$border-radius-lg:            .3rem !default;
+$border-radius-sm:            .2rem !default;
+
+$rounded-pill:                50rem !default;
+
+$box-shadow-sm:               0 .125rem .25rem rgba($black, .075) !default;
+$box-shadow:                  0 .5rem 1rem rgba($black, .15) !default;
+$box-shadow-lg:               0 1rem 3rem rgba($black, .175) !default;
+
+$component-active-color:      $white !default;
+$component-active-bg:         theme-color("primary") !default;
+
+$caret-width:                 .3em !default;
+$caret-vertical-align:        $caret-width * .85 !default;
+$caret-spacing:               $caret-width * .85 !default;
+
+$transition-base:             all .2s ease-in-out !default;
+$transition-fade:             opacity .15s linear !default;
+$transition-collapse:         height .35s ease !default;
+
+$embed-responsive-aspect-ratios: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$embed-responsive-aspect-ratios: join(
+  (
+    (21 9),
+    (16 9),
+    (4 3),
+    (1 1),
+  ),
+  $embed-responsive-aspect-ratios
+);
+
+// Typography
+//
+// Font, line-height, and color for body text, headings, and more.
+
+// stylelint-disable value-keyword-case
+$font-family-sans-serif:      -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
+$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
+$font-family-base:            $font-family-sans-serif !default;
+// stylelint-enable value-keyword-case
+
+$font-size-base:              1rem !default; // Assumes the browser default, typically `16px`
+$font-size-lg:                $font-size-base * 1.25 !default;
+$font-size-sm:                $font-size-base * .875 !default;
+
+$font-weight-lighter:         lighter !default;
+$font-weight-light:           300 !default;
+$font-weight-normal:          400 !default;
+$font-weight-bold:            700 !default;
+$font-weight-bolder:          bolder !default;
+
+$font-weight-base:            $font-weight-normal !default;
+$line-height-base:            1.5 !default;
+
+$h1-font-size:                $font-size-base * 2.5 !default;
+$h2-font-size:                $font-size-base * 2 !default;
+$h3-font-size:                $font-size-base * 1.75 !default;
+$h4-font-size:                $font-size-base * 1.5 !default;
+$h5-font-size:                $font-size-base * 1.25 !default;
+$h6-font-size:                $font-size-base !default;
+
+$headings-margin-bottom:      $spacer / 2 !default;
+$headings-font-family:        null !default;
+$headings-font-weight:        500 !default;
+$headings-line-height:        1.2 !default;
+$headings-color:              null !default;
+
+$display1-size:               6rem !default;
+$display2-size:               5.5rem !default;
+$display3-size:               4.5rem !default;
+$display4-size:               3.5rem !default;
+
+$display1-weight:             300 !default;
+$display2-weight:             300 !default;
+$display3-weight:             300 !default;
+$display4-weight:             300 !default;
+$display-line-height:         $headings-line-height !default;
+
+$lead-font-size:              $font-size-base * 1.25 !default;
+$lead-font-weight:            300 !default;
+
+$small-font-size:             80% !default;
+
+$text-muted:                  $gray-600 !default;
+
+$blockquote-small-color:      $gray-600 !default;
+$blockquote-small-font-size:  $small-font-size !default;
+$blockquote-font-size:        $font-size-base * 1.25 !default;
+
+$hr-border-color:             rgba($black, .1) !default;
+$hr-border-width:             $border-width !default;
+
+$mark-padding:                .2em !default;
+
+$dt-font-weight:              $font-weight-bold !default;
+
+$kbd-box-shadow:              inset 0 -.1rem 0 rgba($black, .25) !default;
+$nested-kbd-font-weight:      $font-weight-bold !default;
+
+$list-inline-padding:         .5rem !default;
+
+$mark-bg:                     #fcf8e3 !default;
+
+$hr-margin-y:                 $spacer !default;
+
+
+// Tables
+//
+// Customizes the `.table` component with basic values, each used across all table variations.
+
+$table-cell-padding:          .75rem !default;
+$table-cell-padding-sm:       .3rem !default;
+
+$table-color:                 $body-color !default;
+$table-bg:                    null !default;
+$table-accent-bg:             rgba($black, .05) !default;
+$table-hover-color:           $table-color !default;
+$table-hover-bg:              rgba($black, .075) !default;
+$table-active-bg:             $table-hover-bg !default;
+
+$table-border-width:          $border-width !default;
+$table-border-color:          $border-color !default;
+
+$table-head-bg:               $gray-200 !default;
+$table-head-color:            $gray-700 !default;
+
+$table-dark-color:            $white !default;
+$table-dark-bg:               $gray-800 !default;
+$table-dark-accent-bg:        rgba($white, .05) !default;
+$table-dark-hover-color:      $table-dark-color !default;
+$table-dark-hover-bg:         rgba($white, .075) !default;
+$table-dark-border-color:     lighten($table-dark-bg, 7.5%) !default;
+$table-dark-color:            $white !default;
+
+$table-striped-order:         odd !default;
+
+$table-caption-color:         $text-muted !default;
+
+$table-bg-level:              -9 !default;
+$table-border-level:          -6 !default;
+
+
+// Buttons + Forms
+//
+// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
+
+$input-btn-padding-y:         .375rem !default;
+$input-btn-padding-x:         .75rem !default;
+$input-btn-font-family:       null !default;
+$input-btn-font-size:         $font-size-base !default;
+$input-btn-line-height:       $line-height-base !default;
+
+$input-btn-focus-width:       .2rem !default;
+$input-btn-focus-color:       rgba($component-active-bg, .25) !default;
+$input-btn-focus-box-shadow:  0 0 0 $input-btn-focus-width $input-btn-focus-color !default;
+
+$input-btn-padding-y-sm:      .25rem !default;
+$input-btn-padding-x-sm:      .5rem !default;
+$input-btn-font-size-sm:      $font-size-sm !default;
+$input-btn-line-height-sm:    $line-height-sm !default;
+
+$input-btn-padding-y-lg:      .5rem !default;
+$input-btn-padding-x-lg:      1rem !default;
+$input-btn-font-size-lg:      $font-size-lg !default;
+$input-btn-line-height-lg:    $line-height-lg !default;
+
+$input-btn-border-width:      $border-width !default;
+
+
+// Buttons
+//
+// For each of Bootstrap's buttons, define text, background, and border color.
+
+$btn-padding-y:               $input-btn-padding-y !default;
+$btn-padding-x:               $input-btn-padding-x !default;
+$btn-font-family:             $input-btn-font-family !default;
+$btn-font-size:               $input-btn-font-size !default;
+$btn-line-height:             $input-btn-line-height !default;
+
+$btn-padding-y-sm:            $input-btn-padding-y-sm !default;
+$btn-padding-x-sm:            $input-btn-padding-x-sm !default;
+$btn-font-size-sm:            $input-btn-font-size-sm !default;
+$btn-line-height-sm:          $input-btn-line-height-sm !default;
+
+$btn-padding-y-lg:            $input-btn-padding-y-lg !default;
+$btn-padding-x-lg:            $input-btn-padding-x-lg !default;
+$btn-font-size-lg:            $input-btn-font-size-lg !default;
+$btn-line-height-lg:          $input-btn-line-height-lg !default;
+
+$btn-border-width:            $input-btn-border-width !default;
+
+$btn-font-weight:             $font-weight-normal !default;
+$btn-box-shadow:              inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
+$btn-focus-width:             $input-btn-focus-width !default;
+$btn-focus-box-shadow:        $input-btn-focus-box-shadow !default;
+$btn-disabled-opacity:        .65 !default;
+$btn-active-box-shadow:       inset 0 3px 5px rgba($black, .125) !default;
+
+$btn-link-disabled-color:     $gray-600 !default;
+
+$btn-block-spacing-y:         .5rem !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius:           $border-radius !default;
+$btn-border-radius-lg:        $border-radius-lg !default;
+$btn-border-radius-sm:        $border-radius-sm !default;
+
+$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+
+// Forms
+
+$label-margin-bottom:                   .5rem !default;
+
+$input-padding-y:                       $input-btn-padding-y !default;
+$input-padding-x:                       $input-btn-padding-x !default;
+$input-font-family:                     $input-btn-font-family !default;
+$input-font-size:                       $input-btn-font-size !default;
+$input-font-weight:                     $font-weight-base !default;
+$input-line-height:                     $input-btn-line-height !default;
+
+$input-padding-y-sm:                    $input-btn-padding-y-sm !default;
+$input-padding-x-sm:                    $input-btn-padding-x-sm !default;
+$input-font-size-sm:                    $input-btn-font-size-sm !default;
+$input-line-height-sm:                  $input-btn-line-height-sm !default;
+
+$input-padding-y-lg:                    $input-btn-padding-y-lg !default;
+$input-padding-x-lg:                    $input-btn-padding-x-lg !default;
+$input-font-size-lg:                    $input-btn-font-size-lg !default;
+$input-line-height-lg:                  $input-btn-line-height-lg !default;
+
+$input-bg:                              $white !default;
+$input-disabled-bg:                     $gray-200 !default;
+
+$input-color:                           $gray-700 !default;
+$input-border-color:                    $gray-400 !default;
+$input-border-width:                    $input-btn-border-width !default;
+$input-box-shadow:                      inset 0 1px 1px rgba($black, .075) !default;
+
+$input-border-radius:                   $border-radius !default;
+$input-border-radius-lg:                $border-radius-lg !default;
+$input-border-radius-sm:                $border-radius-sm !default;
+
+$input-focus-bg:                        $input-bg !default;
+$input-focus-border-color:              lighten($component-active-bg, 25%) !default;
+$input-focus-color:                     $input-color !default;
+$input-focus-width:                     $input-btn-focus-width !default;
+$input-focus-box-shadow:                $input-btn-focus-box-shadow !default;
+
+$input-placeholder-color:               $gray-600 !default;
+$input-plaintext-color:                 $body-color !default;
+
+$input-height-border:                   $input-border-width * 2 !default;
+
+$input-height-inner:                    calc(#{$input-line-height * 1em} + #{$input-padding-y * 2}) !default;
+$input-height-inner-half:               calc(#{$input-line-height * .5em} + #{$input-padding-y}) !default;
+$input-height-inner-quarter:            calc(#{$input-line-height * .25em} + #{$input-padding-y / 2}) !default;
+
+$input-height:                          calc(#{$input-line-height * 1em} + #{$input-padding-y * 2} + #{$input-height-border}) !default;
+$input-height-sm:                       calc(#{$input-line-height-sm * 1em} + #{$input-btn-padding-y-sm * 2} + #{$input-height-border}) !default;
+$input-height-lg:                       calc(#{$input-line-height-lg * 1em} + #{$input-btn-padding-y-lg * 2} + #{$input-height-border}) !default;
+
+$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$form-text-margin-top:                  .25rem !default;
+
+$form-check-input-gutter:               1.25rem !default;
+$form-check-input-margin-y:             .3rem !default;
+$form-check-input-margin-x:             .25rem !default;
+
+$form-check-inline-margin-x:            .75rem !default;
+$form-check-inline-input-margin-x:      .3125rem !default;
+
+$form-grid-gutter-width:                10px !default;
+$form-group-margin-bottom:              1rem !default;
+
+$input-group-addon-color:               $input-color !default;
+$input-group-addon-bg:                  $gray-200 !default;
+$input-group-addon-border-color:        $input-border-color !default;
+
+$custom-forms-transition:               background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+
+$custom-control-gutter:                 .5rem !default;
+$custom-control-spacer-x:               1rem !default;
+
+$custom-control-indicator-size:         1rem !default;
+$custom-control-indicator-bg:           $input-bg !default;
+
+$custom-control-indicator-bg-size:      50% 50% !default;
+$custom-control-indicator-box-shadow:   $input-box-shadow !default;
+$custom-control-indicator-border-color: $gray-500 !default;
+$custom-control-indicator-border-width: $input-border-width !default;
+
+$custom-control-indicator-disabled-bg:          $input-disabled-bg !default;
+$custom-control-label-disabled-color:           $gray-600 !default;
+
+$custom-control-indicator-checked-color:        $component-active-color !default;
+$custom-control-indicator-checked-bg:           $component-active-bg !default;
+$custom-control-indicator-checked-disabled-bg:  rgba(theme-color("primary"), .5) !default;
+$custom-control-indicator-checked-box-shadow:   none !default;
+$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;
+
+$custom-control-indicator-focus-box-shadow:     $input-focus-box-shadow !default;
+$custom-control-indicator-focus-border-color:   $input-focus-border-color !default;
+
+$custom-control-indicator-active-color:         $component-active-color !default;
+$custom-control-indicator-active-bg:            lighten($component-active-bg, 35%) !default;
+$custom-control-indicator-active-box-shadow:    none !default;
+$custom-control-indicator-active-border-color:  $custom-control-indicator-active-bg !default;
+
+$custom-checkbox-indicator-border-radius:       $border-radius !default;
+$custom-checkbox-indicator-icon-checked:        str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"), "#", "%23") !default;
+
+$custom-checkbox-indicator-indeterminate-bg:           $component-active-bg !default;
+$custom-checkbox-indicator-indeterminate-color:        $custom-control-indicator-checked-color !default;
+$custom-checkbox-indicator-icon-indeterminate:         str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3e%3c/svg%3e"), "#", "%23") !default;
+$custom-checkbox-indicator-indeterminate-box-shadow:   none !default;
+$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;
+
+$custom-radio-indicator-border-radius:          50% !default;
+$custom-radio-indicator-icon-checked:           str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
+
+$custom-switch-width:                           $custom-control-indicator-size * 1.75 !default;
+$custom-switch-indicator-border-radius:         $custom-control-indicator-size / 2 !default;
+$custom-switch-indicator-size:                  calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
+
+$custom-select-padding-y:           $input-padding-y !default;
+$custom-select-padding-x:           $input-padding-x !default;
+$custom-select-font-family:         $input-font-family !default;
+$custom-select-font-size:           $input-font-size !default;
+$custom-select-height:              $input-height !default;
+$custom-select-indicator-padding:   1rem !default; // Extra padding to account for the presence of the background-image based indicator
+$custom-select-font-weight:         $input-font-weight !default;
+$custom-select-line-height:         $input-line-height !default;
+$custom-select-color:               $input-color !default;
+$custom-select-disabled-color:      $gray-600 !default;
+$custom-select-bg:                  $input-bg !default;
+$custom-select-disabled-bg:         $gray-200 !default;
+$custom-select-bg-size:             8px 10px !default; // In pixels because image dimensions
+$custom-select-indicator-color:     $gray-800 !default;
+$custom-select-indicator:           str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"), "#", "%23") !default;
+$custom-select-background:          $custom-select-indicator no-repeat right $custom-select-padding-x center / $custom-select-bg-size !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)
+
+$custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
+$custom-select-feedback-icon-position:      center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;
+$custom-select-feedback-icon-size:          $input-height-inner-half $input-height-inner-half !default;
+
+$custom-select-border-width:        $input-border-width !default;
+$custom-select-border-color:        $input-border-color !default;
+$custom-select-border-radius:       $border-radius !default;
+$custom-select-box-shadow:          inset 0 1px 2px rgba($black, .075) !default;
+
+$custom-select-focus-border-color:  $input-focus-border-color !default;
+$custom-select-focus-width:         $input-focus-width !default;
+$custom-select-focus-box-shadow:    0 0 0 $custom-select-focus-width $input-btn-focus-color !default;
+
+$custom-select-padding-y-sm:        $input-padding-y-sm !default;
+$custom-select-padding-x-sm:        $input-padding-x-sm !default;
+$custom-select-font-size-sm:        $input-font-size-sm !default;
+$custom-select-height-sm:           $input-height-sm !default;
+
+$custom-select-padding-y-lg:        $input-padding-y-lg !default;
+$custom-select-padding-x-lg:        $input-padding-x-lg !default;
+$custom-select-font-size-lg:        $input-font-size-lg !default;
+$custom-select-height-lg:           $input-height-lg !default;
+
+$custom-range-track-width:          100% !default;
+$custom-range-track-height:         .5rem !default;
+$custom-range-track-cursor:         pointer !default;
+$custom-range-track-bg:             $gray-300 !default;
+$custom-range-track-border-radius:  1rem !default;
+$custom-range-track-box-shadow:     inset 0 .25rem .25rem rgba($black, .1) !default;
+
+$custom-range-thumb-width:                   1rem !default;
+$custom-range-thumb-height:                  $custom-range-thumb-width !default;
+$custom-range-thumb-bg:                      $component-active-bg !default;
+$custom-range-thumb-border:                  0 !default;
+$custom-range-thumb-border-radius:           1rem !default;
+$custom-range-thumb-box-shadow:              0 .1rem .25rem rgba($black, .1) !default;
+$custom-range-thumb-focus-box-shadow:        0 0 0 1px $body-bg, $input-focus-box-shadow !default;
+$custom-range-thumb-focus-box-shadow-width:  $input-focus-width !default; // For focus box shadow issue in IE/Edge
+$custom-range-thumb-active-bg:               lighten($component-active-bg, 35%) !default;
+$custom-range-thumb-disabled-bg:             $gray-500 !default;
+
+$custom-file-height:                $input-height !default;
+$custom-file-height-inner:          $input-height-inner !default;
+$custom-file-focus-border-color:    $input-focus-border-color !default;
+$custom-file-focus-box-shadow:      $input-focus-box-shadow !default;
+$custom-file-disabled-bg:           $input-disabled-bg !default;
+
+$custom-file-padding-y:             $input-padding-y !default;
+$custom-file-padding-x:             $input-padding-x !default;
+$custom-file-line-height:           $input-line-height !default;
+$custom-file-font-family:           $input-font-family !default;
+$custom-file-font-weight:           $input-font-weight !default;
+$custom-file-color:                 $input-color !default;
+$custom-file-bg:                    $input-bg !default;
+$custom-file-border-width:          $input-border-width !default;
+$custom-file-border-color:          $input-border-color !default;
+$custom-file-border-radius:         $input-border-radius !default;
+$custom-file-box-shadow:            $input-box-shadow !default;
+$custom-file-button-color:          $custom-file-color !default;
+$custom-file-button-bg:             $input-group-addon-bg !default;
+$custom-file-text: (
+  en: "Browse"
+) !default;
+
+
+// Form validation
+
+$form-feedback-margin-top:          $form-text-margin-top !default;
+$form-feedback-font-size:           $small-font-size !default;
+$form-feedback-valid-color:         theme-color("success") !default;
+$form-feedback-invalid-color:       theme-color("danger") !default;
+
+$form-feedback-icon-valid-color:    $form-feedback-valid-color !default;
+$form-feedback-icon-valid:          str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"), "#", "%23") !default;
+$form-feedback-icon-invalid-color:  $form-feedback-invalid-color !default;
+$form-feedback-icon-invalid:        str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$form-feedback-icon-invalid-color}' viewBox='-2 -2 7 7'%3e%3cpath stroke='#{$form-feedback-icon-invalid-color}' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"), "#", "%23") !default;
+
+$form-validation-states: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$form-validation-states: map-merge(
+  (
+    "valid": (
+      "color": $form-feedback-valid-color,
+      "icon": $form-feedback-icon-valid
+    ),
+    "invalid": (
+      "color": $form-feedback-invalid-color,
+      "icon": $form-feedback-icon-invalid
+    ),
+  ),
+  $form-validation-states
+);
+
+// Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+
+$zindex-dropdown:                   1000 !default;
+$zindex-sticky:                     1020 !default;
+$zindex-fixed:                      1030 !default;
+$zindex-modal-backdrop:             1040 !default;
+$zindex-modal:                      1050 !default;
+$zindex-popover:                    1060 !default;
+$zindex-tooltip:                    1070 !default;
+
+
+// Navs
+
+$nav-link-padding-y:                .5rem !default;
+$nav-link-padding-x:                1rem !default;
+$nav-link-disabled-color:           $gray-600 !default;
+
+$nav-tabs-border-color:             $gray-300 !default;
+$nav-tabs-border-width:             $border-width !default;
+$nav-tabs-border-radius:            $border-radius !default;
+$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color !default;
+$nav-tabs-link-active-color:        $gray-700 !default;
+$nav-tabs-link-active-bg:           $body-bg !default;
+$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
+
+$nav-pills-border-radius:           $border-radius !default;
+$nav-pills-link-active-color:       $component-active-color !default;
+$nav-pills-link-active-bg:          $component-active-bg !default;
+
+$nav-divider-color:                 $gray-200 !default;
+$nav-divider-margin-y:              $spacer / 2 !default;
+
+
+// Navbar
+
+$navbar-padding-y:                  $spacer / 2 !default;
+$navbar-padding-x:                  $spacer !default;
+
+$navbar-nav-link-padding-x:         .5rem !default;
+
+$navbar-brand-font-size:            $font-size-lg !default;
+// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
+$nav-link-height:                   $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
+$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;
+$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) / 2 !default;
+
+$navbar-toggler-padding-y:          .25rem !default;
+$navbar-toggler-padding-x:          .75rem !default;
+$navbar-toggler-font-size:          $font-size-lg !default;
+$navbar-toggler-border-radius:      $btn-border-radius !default;
+
+$navbar-dark-color:                 rgba($white, .5) !default;
+$navbar-dark-hover-color:           rgba($white, .75) !default;
+$navbar-dark-active-color:          $white !default;
+$navbar-dark-disabled-color:        rgba($white, .25) !default;
+$navbar-dark-toggler-icon-bg:       str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
+$navbar-dark-toggler-border-color:  rgba($white, .1) !default;
+
+$navbar-light-color:                rgba($black, .5) !default;
+$navbar-light-hover-color:          rgba($black, .7) !default;
+$navbar-light-active-color:         rgba($black, .9) !default;
+$navbar-light-disabled-color:       rgba($black, .3) !default;
+$navbar-light-toggler-icon-bg:      str-replace(url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"), "#", "%23") !default;
+$navbar-light-toggler-border-color: rgba($black, .1) !default;
+
+$navbar-light-brand-color:                $navbar-light-active-color !default;
+$navbar-light-brand-hover-color:          $navbar-light-active-color !default;
+$navbar-dark-brand-color:                 $navbar-dark-active-color !default;
+$navbar-dark-brand-hover-color:           $navbar-dark-active-color !default;
+
+
+// Dropdowns
+//
+// Dropdown menu container and contents.
+
+$dropdown-min-width:                10rem !default;
+$dropdown-padding-y:                .5rem !default;
+$dropdown-spacer:                   .125rem !default;
+$dropdown-font-size:                $font-size-base !default;
+$dropdown-color:                    $body-color !default;
+$dropdown-bg:                       $white !default;
+$dropdown-border-color:             rgba($black, .15) !default;
+$dropdown-border-radius:            $border-radius !default;
+$dropdown-border-width:             $border-width !default;
+$dropdown-inner-border-radius:      calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default;
+$dropdown-divider-bg:               $gray-200 !default;
+$dropdown-divider-margin-y:         $nav-divider-margin-y !default;
+$dropdown-box-shadow:               0 .5rem 1rem rgba($black, .175) !default;
+
+$dropdown-link-color:               $gray-900 !default;
+$dropdown-link-hover-color:         darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg:            $gray-100 !default;
+
+$dropdown-link-active-color:        $component-active-color !default;
+$dropdown-link-active-bg:           $component-active-bg !default;
+
+$dropdown-link-disabled-color:      $gray-600 !default;
+
+$dropdown-item-padding-y:           .25rem !default;
+$dropdown-item-padding-x:           1.5rem !default;
+
+$dropdown-header-color:             $gray-600 !default;
+
+
+// Pagination
+
+$pagination-padding-y:              .5rem !default;
+$pagination-padding-x:              .75rem !default;
+$pagination-padding-y-sm:           .25rem !default;
+$pagination-padding-x-sm:           .5rem !default;
+$pagination-padding-y-lg:           .75rem !default;
+$pagination-padding-x-lg:           1.5rem !default;
+$pagination-line-height:            1.25 !default;
+
+$pagination-color:                  $link-color !default;
+$pagination-bg:                     $white !default;
+$pagination-border-width:           $border-width !default;
+$pagination-border-color:           $gray-300 !default;
+
+$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;
+$pagination-focus-outline:          0 !default;
+
+$pagination-hover-color:            $link-hover-color !default;
+$pagination-hover-bg:               $gray-200 !default;
+$pagination-hover-border-color:     $gray-300 !default;
+
+$pagination-active-color:           $component-active-color !default;
+$pagination-active-bg:              $component-active-bg !default;
+$pagination-active-border-color:    $pagination-active-bg !default;
+
+$pagination-disabled-color:         $gray-600 !default;
+$pagination-disabled-bg:            $white !default;
+$pagination-disabled-border-color:  $gray-300 !default;
+
+
+// Jumbotron
+
+$jumbotron-padding:                 2rem !default;
+$jumbotron-color:                   null !default;
+$jumbotron-bg:                      $gray-200 !default;
+
+
+// Cards
+
+$card-spacer-y:                     .75rem !default;
+$card-spacer-x:                     1.25rem !default;
+$card-border-width:                 $border-width !default;
+$card-border-radius:                $border-radius !default;
+$card-border-color:                 rgba($black, .125) !default;
+$card-inner-border-radius:          calc(#{$card-border-radius} - #{$card-border-width}) !default;
+$card-cap-bg:                       rgba($black, .03) !default;
+$card-cap-color:                    null !default;
+$card-color:                        null !default;
+$card-bg:                           $white !default;
+
+$card-img-overlay-padding:          1.25rem !default;
+
+$card-group-margin:                 $grid-gutter-width / 2 !default;
+$card-deck-margin:                  $card-group-margin !default;
+
+$card-columns-count:                3 !default;
+$card-columns-gap:                  1.25rem !default;
+$card-columns-margin:               $card-spacer-y !default;
+
+
+// Tooltips
+
+$tooltip-font-size:                 $font-size-sm !default;
+$tooltip-max-width:                 200px !default;
+$tooltip-color:                     $white !default;
+$tooltip-bg:                        $black !default;
+$tooltip-border-radius:             $border-radius !default;
+$tooltip-opacity:                   .9 !default;
+$tooltip-padding-y:                 .25rem !default;
+$tooltip-padding-x:                 .5rem !default;
+$tooltip-margin:                    0 !default;
+
+$tooltip-arrow-width:               .8rem !default;
+$tooltip-arrow-height:              .4rem !default;
+$tooltip-arrow-color:               $tooltip-bg !default;
+
+// Form tooltips must come after regular tooltips
+$form-feedback-tooltip-padding-y:     $tooltip-padding-y !default;
+$form-feedback-tooltip-padding-x:     $tooltip-padding-x !default;
+$form-feedback-tooltip-font-size:     $tooltip-font-size !default;
+$form-feedback-tooltip-line-height:   $line-height-base !default;
+$form-feedback-tooltip-opacity:       $tooltip-opacity !default;
+$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
+
+
+// Popovers
+
+$popover-font-size:                 $font-size-sm !default;
+$popover-bg:                        $white !default;
+$popover-max-width:                 276px !default;
+$popover-border-width:              $border-width !default;
+$popover-border-color:              rgba($black, .2) !default;
+$popover-border-radius:             $border-radius-lg !default;
+$popover-box-shadow:                0 .25rem .5rem rgba($black, .2) !default;
+
+$popover-header-bg:                 darken($popover-bg, 3%) !default;
+$popover-header-color:              $headings-color !default;
+$popover-header-padding-y:          .5rem !default;
+$popover-header-padding-x:          .75rem !default;
+
+$popover-body-color:                $body-color !default;
+$popover-body-padding-y:            $popover-header-padding-y !default;
+$popover-body-padding-x:            $popover-header-padding-x !default;
+
+$popover-arrow-width:               1rem !default;
+$popover-arrow-height:              .5rem !default;
+$popover-arrow-color:               $popover-bg !default;
+
+$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;
+
+
+// Toasts
+
+$toast-max-width:                   350px !default;
+$toast-padding-x:                   .75rem !default;
+$toast-padding-y:                   .25rem !default;
+$toast-font-size:                   .875rem !default;
+$toast-color:                       null !default;
+$toast-background-color:            rgba($white, .85) !default;
+$toast-border-width:                1px !default;
+$toast-border-color:                rgba(0, 0, 0, .1) !default;
+$toast-border-radius:               .25rem !default;
+$toast-box-shadow:                  0 .25rem .75rem rgba($black, .1) !default;
+
+$toast-header-color:                $gray-600 !default;
+$toast-header-background-color:     rgba($white, .85) !default;
+$toast-header-border-color:         rgba(0, 0, 0, .05) !default;
+
+
+// Badges
+
+$badge-font-size:                   75% !default;
+$badge-font-weight:                 $font-weight-bold !default;
+$badge-padding-y:                   .25em !default;
+$badge-padding-x:                   .4em !default;
+$badge-border-radius:               $border-radius !default;
+
+$badge-transition:                  $btn-transition !default;
+$badge-focus-width:                 $input-btn-focus-width !default;
+
+$badge-pill-padding-x:              .6em !default;
+// Use a higher than normal value to ensure completely rounded edges when
+// customizing padding or font-size on labels.
+$badge-pill-border-radius:          10rem !default;
+
+
+// Modals
+
+// Padding applied to the modal body
+$modal-inner-padding:               1rem !default;
+
+$modal-dialog-margin:               .5rem !default;
+$modal-dialog-margin-y-sm-up:       1.75rem !default;
+
+$modal-title-line-height:           $line-height-base !default;
+
+$modal-content-color:               null !default;
+$modal-content-bg:                  $white !default;
+$modal-content-border-color:        rgba($black, .2) !default;
+$modal-content-border-width:        $border-width !default;
+$modal-content-border-radius:       $border-radius-lg !default;
+$modal-content-box-shadow-xs:       0 .25rem .5rem rgba($black, .5) !default;
+$modal-content-box-shadow-sm-up:    0 .5rem 1rem rgba($black, .5) !default;
+
+$modal-backdrop-bg:                 $black !default;
+$modal-backdrop-opacity:            .5 !default;
+$modal-header-border-color:         $border-color !default;
+$modal-footer-border-color:         $modal-header-border-color !default;
+$modal-header-border-width:         $modal-content-border-width !default;
+$modal-footer-border-width:         $modal-header-border-width !default;
+$modal-header-padding-y:            1rem !default;
+$modal-header-padding-x:            1rem !default;
+$modal-header-padding:              $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
+
+$modal-xl:                          1140px !default;
+$modal-lg:                          800px !default;
+$modal-md:                          500px !default;
+$modal-sm:                          300px !default;
+
+$modal-fade-transform:              translate(0, -50px) !default;
+$modal-show-transform:              none !default;
+$modal-transition:                  transform .3s ease-out !default;
+
+
+// Alerts
+//
+// Define alert colors, border radius, and padding.
+
+$alert-padding-y:                   .75rem !default;
+$alert-padding-x:                   1.25rem !default;
+$alert-margin-bottom:               1rem !default;
+$alert-border-radius:               $border-radius !default;
+$alert-link-font-weight:            $font-weight-bold !default;
+$alert-border-width:                $border-width !default;
+
+$alert-bg-level:                    -10 !default;
+$alert-border-level:                -9 !default;
+$alert-color-level:                 6 !default;
+
+
+// Progress bars
+
+$progress-height:                   1rem !default;
+$progress-font-size:                $font-size-base * .75 !default;
+$progress-bg:                       $gray-200 !default;
+$progress-border-radius:            $border-radius !default;
+$progress-box-shadow:               inset 0 .1rem .1rem rgba($black, .1) !default;
+$progress-bar-color:                $white !default;
+$progress-bar-bg:                   theme-color("primary") !default;
+$progress-bar-animation-timing:     1s linear infinite !default;
+$progress-bar-transition:           width .6s ease !default;
+
+
+// List group
+
+$list-group-color:                  null !default;
+$list-group-bg:                     $white !default;
+$list-group-border-color:           rgba($black, .125) !default;
+$list-group-border-width:           $border-width !default;
+$list-group-border-radius:          $border-radius !default;
+
+$list-group-item-padding-y:         .75rem !default;
+$list-group-item-padding-x:         1.25rem !default;
+
+$list-group-hover-bg:               $gray-100 !default;
+$list-group-active-color:           $component-active-color !default;
+$list-group-active-bg:              $component-active-bg !default;
+$list-group-active-border-color:    $list-group-active-bg !default;
+
+$list-group-disabled-color:         $gray-600 !default;
+$list-group-disabled-bg:            $list-group-bg !default;
+
+$list-group-action-color:           $gray-700 !default;
+$list-group-action-hover-color:     $list-group-action-color !default;
+
+$list-group-action-active-color:    $body-color !default;
+$list-group-action-active-bg:       $gray-200 !default;
+
+
+// Image thumbnails
+
+$thumbnail-padding:                 .25rem !default;
+$thumbnail-bg:                      $body-bg !default;
+$thumbnail-border-width:            $border-width !default;
+$thumbnail-border-color:            $gray-300 !default;
+$thumbnail-border-radius:           $border-radius !default;
+$thumbnail-box-shadow:              0 1px 2px rgba($black, .075) !default;
+
+
+// Figures
+
+$figure-caption-font-size:          90% !default;
+$figure-caption-color:              $gray-600 !default;
+
+
+// Breadcrumbs
+
+$breadcrumb-padding-y:              .75rem !default;
+$breadcrumb-padding-x:              1rem !default;
+$breadcrumb-item-padding:           .5rem !default;
+
+$breadcrumb-margin-bottom:          1rem !default;
+
+$breadcrumb-bg:                     $gray-200 !default;
+$breadcrumb-divider-color:          $gray-600 !default;
+$breadcrumb-active-color:           $gray-600 !default;
+$breadcrumb-divider:                quote("/") !default;
+
+$breadcrumb-border-radius:          $border-radius !default;
+
+
+// Carousel
+
+$carousel-control-color:             $white !default;
+$carousel-control-width:             15% !default;
+$carousel-control-opacity:           .5 !default;
+$carousel-control-hover-opacity:     .9 !default;
+$carousel-control-transition:        opacity .15s ease !default;
+
+$carousel-indicator-width:           30px !default;
+$carousel-indicator-height:          3px !default;
+$carousel-indicator-hit-area-height: 10px !default;
+$carousel-indicator-spacer:          3px !default;
+$carousel-indicator-active-bg:       $white !default;
+$carousel-indicator-transition:      opacity .6s ease !default;
+
+$carousel-caption-width:             70% !default;
+$carousel-caption-color:             $white !default;
+
+$carousel-control-icon-width:        20px !default;
+
+$carousel-control-prev-icon-bg:      str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"), "#", "%23") !default;
+$carousel-control-next-icon-bg:      str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"), "#", "%23") !default;
+
+$carousel-transition-duration:       .6s !default;
+$carousel-transition:                transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
+
+
+// Spinners
+
+$spinner-width:         2rem !default;
+$spinner-height:        $spinner-width !default;
+$spinner-border-width:  .25em !default;
+
+$spinner-width-sm:        1rem !default;
+$spinner-height-sm:       $spinner-width-sm !default;
+$spinner-border-width-sm: .2em !default;
+
+
+// Close
+
+$close-font-size:                   $font-size-base * 1.5 !default;
+$close-font-weight:                 $font-weight-bold !default;
+$close-color:                       $black !default;
+$close-text-shadow:                 0 1px 0 $white !default;
+
+
+// Code
+
+$code-font-size:                    87.5% !default;
+$code-color:                        $pink !default;
+
+$kbd-padding-y:                     .2rem !default;
+$kbd-padding-x:                     .4rem !default;
+$kbd-font-size:                     $code-font-size !default;
+$kbd-color:                         $white !default;
+$kbd-bg:                            $gray-900 !default;
+
+$pre-color:                         $gray-900 !default;
+$pre-scrollable-max-height:         340px !default;
+
+
+// Utilities
+
+$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;
+$overflows: auto, hidden !default;
+$positions: static, relative, absolute, fixed, sticky !default;
+
+
+// Printing
+
+$print-page-size:                   a3 !default;
+$print-body-min-width:              map-get($grid-breakpoints, "lg") !default;

+ 29 - 0
apps/static/assets/scss/black-dashboard/bootstrap/bootstrap-grid.scss

@@ -0,0 +1,29 @@
+/*!
+ * Bootstrap Grid v4.3.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+html {
+  box-sizing: border-box;
+  -ms-overflow-style: scrollbar;
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: inherit;
+}
+
+@import "functions";
+@import "variables";
+
+@import "mixins/breakpoints";
+@import "mixins/grid-framework";
+@import "mixins/grid";
+
+@import "grid";
+@import "utilities/display";
+@import "utilities/flex";
+@import "utilities/spacing";

+ 12 - 0
apps/static/assets/scss/black-dashboard/bootstrap/bootstrap-reboot.scss

@@ -0,0 +1,12 @@
+/*!
+ * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "reboot";

+ 44 - 0
apps/static/assets/scss/black-dashboard/bootstrap/bootstrap.scss

@@ -0,0 +1,44 @@
+/*!
+ * Bootstrap v4.3.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "root";
+@import "reboot";
+@import "type";
+@import "images";
+@import "code";
+@import "grid";
+@import "tables";
+@import "forms";
+@import "buttons";
+@import "transitions";
+@import "dropdown";
+@import "button-group";
+@import "input-group";
+@import "custom-forms";
+@import "nav";
+@import "navbar";
+@import "card";
+@import "breadcrumb";
+@import "pagination";
+@import "badge";
+@import "jumbotron";
+@import "alert";
+@import "progress";
+@import "media";
+@import "list-group";
+@import "close";
+@import "toasts";
+@import "modal";
+@import "tooltip";
+@import "popover";
+@import "carousel";
+@import "spinners";
+@import "utilities";
+@import "print";

+ 13 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_alert.scss

@@ -0,0 +1,13 @@
+@mixin alert-variant($background, $border, $color) {
+  color: $color;
+  @include gradient-bg($background);
+  border-color: $border;
+
+  hr {
+    border-top-color: darken($border, 5%);
+  }
+
+  .alert-link {
+    color: darken($color, 10%);
+  }
+}

+ 21 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_background-variant.scss

@@ -0,0 +1,21 @@
+// stylelint-disable declaration-no-important
+
+// Contextual backgrounds
+
+@mixin bg-variant($parent, $color) {
+  #{$parent} {
+    background-color: $color !important;
+  }
+  a#{$parent},
+  button#{$parent} {
+    @include hover-focus {
+      background-color: darken($color, 10%) !important;
+    }
+  }
+}
+
+@mixin bg-gradient-variant($parent, $color) {
+  #{$parent} {
+    background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
+  }
+}

+ 17 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_badge.scss

@@ -0,0 +1,17 @@
+@mixin badge-variant($bg) {
+  color: color-yiq($bg);
+  background-color: $bg;
+
+  @at-root a#{&} {
+    @include hover-focus {
+      color: color-yiq($bg);
+      background-color: darken($bg, 10%);
+    }
+
+    &:focus,
+    &.focus {
+      outline: 0;
+      box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);
+    }
+  }
+}

+ 63 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_border-radius.scss

@@ -0,0 +1,63 @@
+// stylelint-disable property-blacklist
+// Single side border-radius
+
+@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
+  @if $enable-rounded {
+    border-radius: $radius;
+  }
+  @else if $fallback-border-radius != false {
+    border-radius: $fallback-border-radius;
+  }
+}
+
+@mixin border-top-radius($radius) {
+  @if $enable-rounded {
+    border-top-left-radius: $radius;
+    border-top-right-radius: $radius;
+  }
+}
+
+@mixin border-right-radius($radius) {
+  @if $enable-rounded {
+    border-top-right-radius: $radius;
+    border-bottom-right-radius: $radius;
+  }
+}
+
+@mixin border-bottom-radius($radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: $radius;
+    border-bottom-left-radius: $radius;
+  }
+}
+
+@mixin border-left-radius($radius) {
+  @if $enable-rounded {
+    border-top-left-radius: $radius;
+    border-bottom-left-radius: $radius;
+  }
+}
+
+@mixin border-top-left-radius($radius) {
+  @if $enable-rounded {
+    border-top-left-radius: $radius;
+  }
+}
+
+@mixin border-top-right-radius($radius) {
+  @if $enable-rounded {
+    border-top-right-radius: $radius;
+  }
+}
+
+@mixin border-bottom-right-radius($radius) {
+  @if $enable-rounded {
+    border-bottom-right-radius: $radius;
+  }
+}
+
+@mixin border-bottom-left-radius($radius) {
+  @if $enable-rounded {
+    border-bottom-left-radius: $radius;
+  }
+}

+ 20 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_box-shadow.scss

@@ -0,0 +1,20 @@
+@mixin box-shadow($shadow...) {
+  @if $enable-shadows {
+    $result: ();
+
+    @if (length($shadow) == 1) {
+      // We can pass `@include box-shadow(none);`
+      $result: $shadow;
+    } @else {
+      // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;`
+      @for $i from 1 through length($shadow) {
+        @if nth($shadow, $i) != "none" {
+          $result: append($result, nth($shadow, $i), "comma");
+        }
+      }
+    }
+    @if (length($result) > 0) {
+      box-shadow: $result;
+    }
+  }
+}

+ 123 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_breakpoints.scss

@@ -0,0 +1,123 @@
+// Breakpoint viewport sizes and media queries.
+//
+// Breakpoints are defined as a map of (name: minimum width), order from small to large:
+//
+//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)
+//
+// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
+
+// Name of the next breakpoint, or null for the last breakpoint.
+//
+//    >> breakpoint-next(sm)
+//    md
+//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    md
+//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))
+//    md
+@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
+  $n: index($breakpoint-names, $name);
+  @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
+}
+
+// Minimum breakpoint width. Null for the smallest (first) breakpoint.
+//
+//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    576px
+@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
+  $min: map-get($breakpoints, $name);
+  @return if($min != 0, $min, null);
+}
+
+// Maximum breakpoint width. Null for the largest (last) breakpoint.
+// The maximum value is calculated as the minimum of the next one less 0.02px
+// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.
+// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max
+// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.
+// See https://bugs.webkit.org/show_bug.cgi?id=178261
+//
+//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    767.98px
+@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
+  $next: breakpoint-next($name, $breakpoints);
+  @return if($next, breakpoint-min($next, $breakpoints) - .02, null);
+}
+
+// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.
+// Useful for making responsive utilities.
+//
+//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    ""  (Returns a blank string)
+//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+//    "-sm"
+@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
+  @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
+}
+
+// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
+// Makes the @content apply to the given breakpoint and wider.
+@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($name, $breakpoints);
+  @if $min {
+    @media (min-width: $min) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
+// Makes the @content apply to the given breakpoint and narrower.
+@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
+  $max: breakpoint-max($name, $breakpoints);
+  @if $max {
+    @media (max-width: $max) {
+      @content;
+    }
+  } @else {
+    @content;
+  }
+}
+
+// Media that spans multiple breakpoint widths.
+// Makes the @content apply between the min and max breakpoints
+@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($lower, $breakpoints);
+  $max: breakpoint-max($upper, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($lower, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($upper, $breakpoints) {
+      @content;
+    }
+  }
+}
+
+// Media between the breakpoint's minimum and maximum widths.
+// No minimum for the smallest breakpoint, and no maximum for the largest one.
+// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
+@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
+  $min: breakpoint-min($name, $breakpoints);
+  $max: breakpoint-max($name, $breakpoints);
+
+  @if $min != null and $max != null {
+    @media (min-width: $min) and (max-width: $max) {
+      @content;
+    }
+  } @else if $max == null {
+    @include media-breakpoint-up($name, $breakpoints) {
+      @content;
+    }
+  } @else if $min == null {
+    @include media-breakpoint-down($name, $breakpoints) {
+      @content;
+    }
+  }
+}

+ 107 - 0
apps/static/assets/scss/black-dashboard/bootstrap/mixins/_buttons.scss

@@ -0,0 +1,107 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {
+  color: color-yiq($background);
+  @include gradient-bg($background);
+  border-color: $border;
+  @include box-shadow($btn-box-shadow);
+
+  @include hover {
+    color: color-yiq($hover-background);
+    @include gradient-bg($hover-background);
+    border-color: $hover-border;
+  }
+
+  &:focus,
+  &.focus {
+    // Avoid using mixin so we can pass custom focus shadow properly
+    @if $enable-shadows {
+      box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+    } @else {
+      box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+    }
+  }
+
+  // Disabled comes first so active can properly restyle
+  &.disabled,
+  &:disabled {
+    color: color-yiq($background);
+    background-color: $background;
+    border-color: $border;
+    // Remove CSS gradients if they're enabled
+    @if $enable-gradients {
+      background-image: none;
+    }
+  }
+
+  &:not(:disabled):not(.disabled):active,
+  &:not(:disabled):not(.disabled).active,
+  .show > &.dropdown-toggle {
+    color: color-yiq($active-background);
+    background-color: $active-background;
+    @if $enable-gradients {
+      background-image: none; // Remove the gradient for the pressed/active state
+    }
+    border-color: $active-border;
+
+    &:focus {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      @if $enable-shadows and $btn-active-box-shadow != none {
+        box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+      } @else {
+        box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);
+      }
+    }
+  }
+}
+
+@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {
+  color: $color;
+  border-color: $color;
+
+  @include hover {
+    color: $color-hover;
+    background-color: $active-background;
+    border-color: $active-border;
+  }
+
+  &:focus,
+  &.focus {
+    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+  }
+
+  &.disabled,
+  &:disabled {
+    color: $color;
+    background-color: transparent;
+  }
+
+  &:not(:disabled):not(.disabled):active,
+  &:not(:disabled):not(.disabled).active,
+  .show > &.dropdown-toggle {
+    color: color-yiq($active-background);
+    background-color: $active-background;
+    border-color: $active-border;
+
+    &:focus {
+      // Avoid using mixin so we can pass custom focus shadow properly
+      @if $enable-shadows and $btn-active-box-shadow != none {
+        box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);
+      } @else {
+        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+      }
+    }
+  }
+}
+
+// Button sizes
+@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
+  padding: $padding-y $padding-x;
+  @include font-size($font-size);
+  line-height: $line-height;
+  // Manually declare to provide an override to the browser default
+  @include border-radius($border-radius, 0);
+}

Деякі файли не було показано, через те що забагато файлів було змінено