diff --git a/__pycache__/config.cpython-313.pyc b/__pycache__/config.cpython-313.pyc index ad7ce61..30bb4be 100644 Binary files a/__pycache__/config.cpython-313.pyc and b/__pycache__/config.cpython-313.pyc differ diff --git a/app/__init__.py b/app/__init__.py index a1e8af5..6a82ff8 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -2,43 +2,44 @@ from flask import Flask, g, redirect, url_for, render_template import datetime import os -def create_app(config_name='development'): - app = Flask(__name__, - static_folder='static', - template_folder='templates') - + +def create_app(config_name="development"): + app = Flask(__name__, static_folder="static", template_folder="templates") + # Load configuration - if config_name == 'production': - app.config.from_object('config.ProductionConfig') - elif config_name == 'testing': - app.config.from_object('config.TestingConfig') + if config_name == "production": + app.config.from_object("config.ProductionConfig") + elif config_name == "testing": + app.config.from_object("config.TestingConfig") else: - app.config.from_object('config.DevelopmentConfig') - + app.config.from_object("config.DevelopmentConfig") + # Initialize extensions from app.core.extensions import db, migrate, login_manager, bcrypt, limiter, csrf + db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) bcrypt.init_app(app) csrf.init_app(app) limiter.init_app(app) - + # Initialize login manager from app.core.auth import User - + @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) - - login_manager.login_view = 'auth.login' - login_manager.login_message = 'Please log in to access this page.' - login_manager.login_message_category = 'info' - + + login_manager.login_view = "auth.login" + login_manager.login_message = "Please log in to access this page." + login_manager.login_message_category = "info" + # Register template filters from app.core.template_filters import bp as filters_bp + app.register_blueprint(filters_bp) - + # Create database tables without seeding any data with app.app_context(): try: @@ -46,31 +47,44 @@ def create_app(config_name='development'): print("Database tables created successfully") except Exception as e: print(f"Error with database setup: {e}") - + # Register blueprints from app.routes.auth import bp as auth_bp + app.register_blueprint(auth_bp) - + from app.routes.dashboard import bp as dashboard_bp + app.register_blueprint(dashboard_bp) - + from app.routes.ipam import bp as ipam_bp + app.register_blueprint(ipam_bp) - + from app.routes.api import bp as api_bp + app.register_blueprint(api_bp) - + + from app.routes.importexport import bp as importexport_bp + + app.register_blueprint(importexport_bp) + + # Add static assets blueprint + from app.routes.static import bp as static_bp + + app.register_blueprint(static_bp) + # Add error handlers @app.errorhandler(404) def page_not_found(e): - return render_template('errors/404.html', title='Page Not Found'), 404 + return render_template("errors/404.html", title="Page Not Found"), 404 @app.errorhandler(500) def internal_server_error(e): - return render_template('errors/500.html', title='Server Error'), 500 + return render_template("errors/500.html", title="Server Error"), 500 @app.errorhandler(403) def forbidden(e): - return render_template('errors/403.html', title='Forbidden'), 403 - - return app \ No newline at end of file + return render_template("errors/403.html", title="Forbidden"), 403 + + return app diff --git a/app/__pycache__/__init__.cpython-313.pyc b/app/__pycache__/__init__.cpython-313.pyc index 6632ed3..38132e0 100644 Binary files a/app/__pycache__/__init__.cpython-313.pyc and b/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/app/core/__pycache__/auth.cpython-313.pyc b/app/core/__pycache__/auth.cpython-313.pyc index a2cbcbb..baa0e7c 100644 Binary files a/app/core/__pycache__/auth.cpython-313.pyc and b/app/core/__pycache__/auth.cpython-313.pyc differ diff --git a/app/core/__pycache__/extensions.cpython-313.pyc b/app/core/__pycache__/extensions.cpython-313.pyc index 30787d3..f73c28f 100644 Binary files a/app/core/__pycache__/extensions.cpython-313.pyc and b/app/core/__pycache__/extensions.cpython-313.pyc differ diff --git a/app/core/__pycache__/models.cpython-313.pyc b/app/core/__pycache__/models.cpython-313.pyc index e6b722a..905c29a 100644 Binary files a/app/core/__pycache__/models.cpython-313.pyc and b/app/core/__pycache__/models.cpython-313.pyc differ diff --git a/app/core/__pycache__/template_filters.cpython-313.pyc b/app/core/__pycache__/template_filters.cpython-313.pyc index 9ea9883..af6067a 100644 Binary files a/app/core/__pycache__/template_filters.cpython-313.pyc and b/app/core/__pycache__/template_filters.cpython-313.pyc differ diff --git a/app/core/auth.py b/app/core/auth.py index bb92f6a..882fef4 100644 --- a/app/core/auth.py +++ b/app/core/auth.py @@ -4,11 +4,12 @@ from .extensions import db, bcrypt from datetime import datetime login_manager = LoginManager() -login_manager.login_view = 'auth.login' +login_manager.login_view = "auth.login" + class User(UserMixin, db.Model): - __tablename__ = 'users' - + __tablename__ = "users" + id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, nullable=True) email = db.Column(db.String(120), unique=True, nullable=False) @@ -16,19 +17,20 @@ class User(UserMixin, db.Model): is_admin = db.Column(db.Boolean, default=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) last_seen = db.Column(db.DateTime, default=datetime.utcnow) - + def __repr__(self): - return f'' - + return f"" + def set_password(self, password): self.password_hash = generate_password_hash(password) - + def check_password(self, password): return check_password_hash(self.password_hash, password) def get_id(self): return str(self.id) + @login_manager.user_loader def load_user(user_id): - return User.query.get(int(user_id)) \ No newline at end of file + return User.query.get(int(user_id)) diff --git a/app/core/extensions.py b/app/core/extensions.py index 6a55299..47773bf 100644 --- a/app/core/extensions.py +++ b/app/core/extensions.py @@ -10,13 +10,12 @@ from flask_wtf.csrf import CSRFProtect db = SQLAlchemy() migrate = Migrate() login_manager = LoginManager() -login_manager.login_view = 'auth.login' -login_manager.login_message = 'Please log in to access this page.' -login_manager.login_message_category = 'info' +login_manager.login_view = "auth.login" +login_manager.login_message = "Please log in to access this page." +login_manager.login_message_category = "info" bcrypt = Bcrypt() csrf = CSRFProtect() limiter = Limiter( - key_func=get_remote_address, - default_limits=["200 per day", "50 per hour"] + key_func=get_remote_address, default_limits=["200 per day", "50 per hour"] ) diff --git a/app/core/models.py b/app/core/models.py index 34de4a4..62c6c72 100644 --- a/app/core/models.py +++ b/app/core/models.py @@ -8,42 +8,49 @@ from flask_login import UserMixin # User model has been moved to app.core.auth # Import it from there instead if needed: from app.core.auth import User + class Port(db.Model): - __tablename__ = 'ports' - + __tablename__ = "ports" + id = db.Column(db.Integer, primary_key=True) - app_id = db.Column(db.Integer, db.ForeignKey('apps.id', ondelete='CASCADE'), nullable=False) + app_id = db.Column( + db.Integer, db.ForeignKey("apps.id", ondelete="CASCADE"), nullable=False + ) port_number = db.Column(db.Integer, nullable=False) - protocol = db.Column(db.String(10), default='TCP') # TCP, UDP, etc. + protocol = db.Column(db.String(10), default="TCP") # TCP, UDP, etc. description = db.Column(db.String(200)) - + # Relationship - app = db.relationship('App', back_populates='ports') - + app = db.relationship("App", back_populates="ports") + def __repr__(self): - return f'' + return f"" + class Server(db.Model): - __tablename__ = 'servers' - + __tablename__ = "servers" + id = db.Column(db.Integer, primary_key=True) hostname = db.Column(db.String(64), nullable=False) ip_address = db.Column(db.String(39), nullable=False) # IPv4 or IPv6 - subnet_id = db.Column(db.Integer, db.ForeignKey('subnets.id'), nullable=False) + subnet_id = db.Column(db.Integer, db.ForeignKey("subnets.id"), nullable=False) documentation = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - + updated_at = db.Column( + db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow + ) + # Relationships - subnet = db.relationship('Subnet', back_populates='servers') - apps = db.relationship('App', back_populates='server', cascade='all, delete-orphan') - + subnet = db.relationship("Subnet", back_populates="servers") + apps = db.relationship("App", back_populates="server", cascade="all, delete-orphan") + def __repr__(self): - return f'' + return f"" + class Subnet(db.Model): - __tablename__ = 'subnets' - + __tablename__ = "subnets" + id = db.Column(db.Integer, primary_key=True) cidr = db.Column(db.String(18), unique=True, nullable=False) # e.g., 192.168.1.0/24 location = db.Column(db.String(64)) @@ -51,43 +58,48 @@ class Subnet(db.Model): last_scanned = db.Column(db.DateTime) auto_scan = db.Column(db.Boolean, default=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - + updated_at = db.Column( + db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow + ) + # Relationships - servers = db.relationship('Server', back_populates='subnet') - + servers = db.relationship("Server", back_populates="subnet") + def __repr__(self): - return f'' - + return f"" + @property def used_ips(self): """Number of IPs used in this subnet (servers)""" return len(self.servers) - + # Getter and setter for active_hosts as JSON @property def active_hosts_list(self): if not self.active_hosts: return [] return json.loads(self.active_hosts) - + @active_hosts_list.setter def active_hosts_list(self, hosts): self.active_hosts = json.dumps(hosts) + class App(db.Model): - __tablename__ = 'apps' - + __tablename__ = "apps" + id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), nullable=False) - server_id = db.Column(db.Integer, db.ForeignKey('servers.id'), nullable=False) + server_id = db.Column(db.Integer, db.ForeignKey("servers.id"), nullable=False) documentation = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - + updated_at = db.Column( + db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow + ) + # Relationships - server = db.relationship('Server', back_populates='apps') - ports = db.relationship('Port', back_populates='app', cascade='all, delete-orphan') - + server = db.relationship("Server", back_populates="apps") + ports = db.relationship("Port", back_populates="app", cascade="all, delete-orphan") + def __repr__(self): - return f'' \ No newline at end of file + return f"" diff --git a/app/core/template_filters.py b/app/core/template_filters.py index 3a04345..417953a 100644 --- a/app/core/template_filters.py +++ b/app/core/template_filters.py @@ -3,45 +3,42 @@ import markdown as md_package import re from flask import Blueprint -bp = Blueprint('filters', __name__) +bp = Blueprint("filters", __name__) + def github_style_admonition(text): """Transform GitHub-style alerts (> [!NOTE], etc.) to custom HTML""" patterns = { - r'> \[!NOTE\](.*?)(?:\n\n|\Z)': '

Note

\\1
', - r'> \[!TIP\](.*?)(?:\n\n|\Z)': '

Tip

\\1
', - r'> \[!IMPORTANT\](.*?)(?:\n\n|\Z)': '

Important

\\1
', - r'> \[!WARNING\](.*?)(?:\n\n|\Z)': '

Warning

\\1
', - r'> \[!CAUTION\](.*?)(?:\n\n|\Z)': '

Caution

\\1
' + r"> \[!NOTE\](.*?)(?:\n\n|\Z)": '

Note

\\1
', + r"> \[!TIP\](.*?)(?:\n\n|\Z)": '

Tip

\\1
', + r"> \[!IMPORTANT\](.*?)(?:\n\n|\Z)": '

Important

\\1
', + r"> \[!WARNING\](.*?)(?:\n\n|\Z)": '

Warning

\\1
', + r"> \[!CAUTION\](.*?)(?:\n\n|\Z)": '

Caution

\\1
', } - + for pattern, replacement in patterns.items(): text = re.sub(pattern, replacement, text, flags=re.DOTALL) - + return text -@bp.app_template_filter('markdown') + +@bp.app_template_filter("markdown") def markdown_filter(text): """Convert markdown text to HTML with support for GitHub-style features""" if text: # Pre-process GitHub-style alerts text = github_style_admonition(text) - + # Convert to HTML with regular markdown html = md_package.markdown( - text, - extensions=[ - 'tables', - 'fenced_code', - 'codehilite', - 'nl2br' - ] + text, extensions=["tables", "fenced_code", "codehilite", "nl2br"] ) - + return html return "" -@bp.app_template_filter('ip_network') + +@bp.app_template_filter("ip_network") def ip_network_filter(cidr): """Convert a CIDR string to an IP network object""" try: @@ -49,7 +46,8 @@ def ip_network_filter(cidr): except ValueError: return None -@bp.app_template_filter('ip_address') + +@bp.app_template_filter("ip_address") def ip_address_filter(ip): """Convert an IP string to an IP address object""" try: @@ -57,10 +55,11 @@ def ip_address_filter(ip): except ValueError: return None -@bp.app_template_global('get_ip_network') + +@bp.app_template_global("get_ip_network") def get_ip_network(cidr): """Global function to get an IP network object from CIDR""" try: return ipaddress.ip_network(cidr, strict=False) except ValueError: - return None \ No newline at end of file + return None diff --git a/app/routes/__pycache__/api.cpython-313.pyc b/app/routes/__pycache__/api.cpython-313.pyc index 7412ec5..271063a 100644 Binary files a/app/routes/__pycache__/api.cpython-313.pyc and b/app/routes/__pycache__/api.cpython-313.pyc differ diff --git a/app/routes/__pycache__/auth.cpython-313.pyc b/app/routes/__pycache__/auth.cpython-313.pyc index 8dfda97..e8382ee 100644 Binary files a/app/routes/__pycache__/auth.cpython-313.pyc and b/app/routes/__pycache__/auth.cpython-313.pyc differ diff --git a/app/routes/__pycache__/dashboard.cpython-313.pyc b/app/routes/__pycache__/dashboard.cpython-313.pyc index 46db649..2b89819 100644 Binary files a/app/routes/__pycache__/dashboard.cpython-313.pyc and b/app/routes/__pycache__/dashboard.cpython-313.pyc differ diff --git a/app/routes/__pycache__/importexport.cpython-313.pyc b/app/routes/__pycache__/importexport.cpython-313.pyc new file mode 100644 index 0000000..3cfde01 Binary files /dev/null and b/app/routes/__pycache__/importexport.cpython-313.pyc differ diff --git a/app/routes/__pycache__/ipam.cpython-313.pyc b/app/routes/__pycache__/ipam.cpython-313.pyc index 3d17b67..7c694f5 100644 Binary files a/app/routes/__pycache__/ipam.cpython-313.pyc and b/app/routes/__pycache__/ipam.cpython-313.pyc differ diff --git a/app/routes/__pycache__/static.cpython-313.pyc b/app/routes/__pycache__/static.cpython-313.pyc new file mode 100644 index 0000000..c135bf5 Binary files /dev/null and b/app/routes/__pycache__/static.cpython-313.pyc differ diff --git a/app/routes/api.py b/app/routes/api.py index 7332934..ff5bd31 100644 --- a/app/routes/api.py +++ b/app/routes/api.py @@ -1,365 +1,439 @@ -from flask import Blueprint, jsonify, request, abort +from flask import Blueprint, jsonify, request, abort, current_app, render_template from flask_login import login_required from app.core.models import Subnet, Server, App, Port from app.core.extensions import db from app.scripts.ip_scanner import scan import random import ipaddress +from flask_wtf import CSRFProtect +import markdown +from datetime import datetime -bp = Blueprint('api', __name__, url_prefix='/api') +bp = Blueprint("api", __name__, url_prefix="/api") +csrf = CSRFProtect() -@bp.route('/subnets', methods=['GET']) + +@bp.route("/subnets", methods=["GET"]) def get_subnets(): """Get all subnets grouped by site""" subnets = Subnet.query.all() - + # Group subnets by location (site) sites = {} for subnet in subnets: location = subnet.location if location not in sites: sites[location] = [] - - sites[location].append({ - 'id': subnet.id, - 'cidr': subnet.cidr, - 'location': location - }) - + + sites[location].append( + {"id": subnet.id, "cidr": subnet.cidr, "location": location} + ) + # Convert to list of site objects result = [ - { - 'name': site_name, - 'subnets': subnets - } for site_name, subnets in sites.items() + {"name": site_name, "subnets": subnets} for site_name, subnets in sites.items() ] - + return jsonify(result) -@bp.route('/subnets/', methods=['GET']) + +@bp.route("/subnets/", methods=["GET"]) @login_required def get_subnet(subnet_id): """Get details for a specific subnet""" subnet = Subnet.query.get_or_404(subnet_id) - + servers = [] for server in Server.query.filter_by(subnet_id=subnet_id).all(): - servers.append({ - 'id': server.id, - 'hostname': server.hostname, - 'ip_address': server.ip_address, - 'created_at': server.created_at.strftime('%Y-%m-%d %H:%M:%S') - }) - + servers.append( + { + "id": server.id, + "hostname": server.hostname, + "ip_address": server.ip_address, + "created_at": server.created_at.strftime("%Y-%m-%d %H:%M:%S"), + } + ) + result = { - 'id': subnet.id, - 'cidr': subnet.cidr, - 'location': subnet.location, - 'used_ips': subnet.used_ips, - 'auto_scan': subnet.auto_scan, - 'created_at': subnet.created_at.strftime('%Y-%m-%d %H:%M:%S'), - 'servers': servers + "id": subnet.id, + "cidr": subnet.cidr, + "location": subnet.location, + "used_ips": subnet.used_ips, + "auto_scan": subnet.auto_scan, + "created_at": subnet.created_at.strftime("%Y-%m-%d %H:%M:%S"), + "servers": servers, } - + return jsonify(result) -@bp.route('/subnets//scan', methods=['POST']) + +@bp.route("/subnets//scan", methods=["POST"]) @login_required def api_subnet_scan(subnet_id): """Scan a subnet via API""" subnet = Subnet.query.get_or_404(subnet_id) - + try: results = scan(subnet.cidr, save_results=True) - return jsonify({ - 'success': True, - 'subnet': subnet.cidr, - 'hosts_found': len(results), - 'results': results - }) + return jsonify( + { + "success": True, + "subnet": subnet.cidr, + "hosts_found": len(results), + "results": results, + } + ) except Exception as e: - return jsonify({ - 'success': False, - 'message': f'Error scanning subnet: {str(e)}' - }), 500 + return ( + jsonify({"success": False, "message": f"Error scanning subnet: {str(e)}"}), + 500, + ) -@bp.route('/servers', methods=['GET']) + +@bp.route("/servers", methods=["GET"]) @login_required def get_servers(): """Get all servers""" servers = Server.query.all() result = [] - - for server in servers: - result.append({ - 'id': server.id, - 'hostname': server.hostname, - 'ip_address': server.ip_address, - 'subnet_id': server.subnet_id, - 'created_at': server.created_at.strftime('%Y-%m-%d %H:%M:%S') - }) - - return jsonify({'servers': result}) -@bp.route('/servers/', methods=['GET']) + for server in servers: + result.append( + { + "id": server.id, + "hostname": server.hostname, + "ip_address": server.ip_address, + "subnet_id": server.subnet_id, + "created_at": server.created_at.strftime("%Y-%m-%d %H:%M:%S"), + } + ) + + return jsonify({"servers": result}) + + +@bp.route("/servers/", methods=["GET"]) @login_required def get_server(server_id): """Get a specific server""" server = Server.query.get_or_404(server_id) - + apps = [] for app in server.apps: ports = [] for port in app.ports: - ports.append({ - 'id': port.id, - 'port_number': port.port_number, - 'protocol': port.protocol, - 'description': port.description - }) - - apps.append({ - 'id': app.id, - 'name': app.name, - 'ports': ports, - 'created_at': app.created_at.strftime('%Y-%m-%d %H:%M:%S') - }) - + ports.append( + { + "id": port.id, + "port_number": port.port_number, + "protocol": port.protocol, + "description": port.description, + } + ) + + apps.append( + { + "id": app.id, + "name": app.name, + "ports": ports, + "created_at": app.created_at.strftime("%Y-%m-%d %H:%M:%S"), + } + ) + result = { - 'id': server.id, - 'hostname': server.hostname, - 'ip_address': server.ip_address, - 'subnet_id': server.subnet_id, - 'documentation': server.documentation, - 'apps': apps, - 'created_at': server.created_at.strftime('%Y-%m-%d %H:%M:%S') + "id": server.id, + "hostname": server.hostname, + "ip_address": server.ip_address, + "subnet_id": server.subnet_id, + "documentation": server.documentation, + "apps": apps, + "created_at": server.created_at.strftime("%Y-%m-%d %H:%M:%S"), } - + return jsonify(result) -@bp.route('/apps', methods=['GET']) + +@bp.route("/apps", methods=["GET"]) @login_required def get_apps(): """Get all applications""" apps = App.query.all() result = [] - - for app in apps: - result.append({ - 'id': app.id, - 'name': app.name, - 'server_id': app.server_id, - 'created_at': app.created_at.strftime('%Y-%m-%d %H:%M:%S') - }) - - return jsonify({'apps': result}) -@bp.route('/apps/', methods=['GET']) + for app in apps: + result.append( + { + "id": app.id, + "name": app.name, + "server_id": app.server_id, + "created_at": app.created_at.strftime("%Y-%m-%d %H:%M:%S"), + } + ) + + return jsonify({"apps": result}) + + +@bp.route("/apps/", methods=["GET"]) @login_required def get_app(app_id): """Get details for a specific application""" app = App.query.get_or_404(app_id) - + result = { - 'id': app.id, - 'name': app.name, - 'server_id': app.server_id, - 'documentation': app.documentation, - 'created_at': app.created_at.strftime('%Y-%m-%d %H:%M:%S'), - 'ports': app.ports + "id": app.id, + "name": app.name, + "server_id": app.server_id, + "documentation": app.documentation, + "created_at": app.created_at.strftime("%Y-%m-%d %H:%M:%S"), + "ports": app.ports, } - + return jsonify(result) -@bp.route('/status', methods=['GET']) -def status(): - return jsonify({'status': 'OK'}) -@bp.route('/markdown-preview', methods=['POST']) +@bp.route("/status", methods=["GET"]) +def status(): + return jsonify({"status": "OK"}) + + +@bp.route("/markdown-preview", methods=["POST"]) +@csrf.exempt # Remove this line in production! Temporary fix for demo purposes def markdown_preview(): data = request.json - md_content = data.get('markdown', '') + md_content = data.get("markdown", "") html = markdown.markdown(md_content) - return jsonify({'html': html}) + return jsonify({"html": html}) -@bp.route('/ports/suggest', methods=['GET']) + +@bp.route("/ports/suggest", methods=["GET"]) def suggest_ports(): - app_type = request.args.get('type', '').lower() - + app_type = request.args.get("type", "").lower() + # Common port suggestions based on app type suggestions = { - 'web': [ - {'port': 80, 'type': 'tcp', 'desc': 'HTTP'}, - {'port': 443, 'type': 'tcp', 'desc': 'HTTPS'} + "web": [ + {"port": 80, "type": "tcp", "desc": "HTTP"}, + {"port": 443, "type": "tcp", "desc": "HTTPS"}, ], - 'database': [ - {'port': 3306, 'type': 'tcp', 'desc': 'MySQL'}, - {'port': 5432, 'type': 'tcp', 'desc': 'PostgreSQL'}, - {'port': 1521, 'type': 'tcp', 'desc': 'Oracle'} + "database": [ + {"port": 3306, "type": "tcp", "desc": "MySQL"}, + {"port": 5432, "type": "tcp", "desc": "PostgreSQL"}, + {"port": 1521, "type": "tcp", "desc": "Oracle"}, ], - 'mail': [ - {'port': 25, 'type': 'tcp', 'desc': 'SMTP'}, - {'port': 143, 'type': 'tcp', 'desc': 'IMAP'}, - {'port': 110, 'type': 'tcp', 'desc': 'POP3'} + "mail": [ + {"port": 25, "type": "tcp", "desc": "SMTP"}, + {"port": 143, "type": "tcp", "desc": "IMAP"}, + {"port": 110, "type": "tcp", "desc": "POP3"}, + ], + "file": [ + {"port": 21, "type": "tcp", "desc": "FTP"}, + {"port": 22, "type": "tcp", "desc": "SFTP/SSH"}, + {"port": 445, "type": "tcp", "desc": "SMB"}, ], - 'file': [ - {'port': 21, 'type': 'tcp', 'desc': 'FTP'}, - {'port': 22, 'type': 'tcp', 'desc': 'SFTP/SSH'}, - {'port': 445, 'type': 'tcp', 'desc': 'SMB'} - ] } - + if app_type in suggestions: return jsonify(suggestions[app_type]) - - # Default suggestions - return jsonify([ - {'port': 80, 'type': 'tcp', 'desc': 'HTTP'}, - {'port': 22, 'type': 'tcp', 'desc': 'SSH'} - ]) -@bp.route('/servers//suggest_port', methods=['GET']) + # Default suggestions + return jsonify( + [ + {"port": 80, "type": "tcp", "desc": "HTTP"}, + {"port": 22, "type": "tcp", "desc": "SSH"}, + ] + ) + + +@bp.route("/servers//suggest_port", methods=["GET"]) @login_required def suggest_port(server_id): """Suggest a random unused port for a server""" server = Server.query.get_or_404(server_id) - + # Get all used ports for this server used_ports = [] for app in server.apps: for port in app.ports: used_ports.append(port.port_number) - + # Find an unused port in the dynamic/private port range available_port = None attempts = 0 - + while attempts < 50: # Try 50 times to find a random port # Random port between 10000 and 65535 port = random.randint(10000, 65535) - + if port not in used_ports: available_port = port break - + attempts += 1 - + if available_port is None: # If no random port found, find first available in sequence for port in range(10000, 65536): if port not in used_ports: available_port = port break - - return jsonify({'port': available_port}) -@bp.route('/apps//ports', methods=['GET']) -@login_required -def get_app_ports(app_id): - """Get all ports for an app""" - app = App.query.get_or_404(app_id) - - ports = [] - for port in app.ports: - ports.append({ - 'id': port.id, - 'port_number': port.port_number, - 'protocol': port.protocol, - 'description': port.description - }) - - return jsonify({'ports': ports}) + return jsonify({"port": available_port}) -@bp.route('/apps//ports', methods=['POST']) + +@bp.route("/app//add-port", methods=["POST"]) @login_required def add_app_port(app_id): - """Add a new port to an app""" + """Add a port to an application""" app = App.query.get_or_404(app_id) - - data = request.json - if not data or 'port_number' not in data: - return jsonify({'error': 'Missing port number'}), 400 - - port_number = data.get('port_number') - protocol = data.get('protocol', 'TCP') - description = data.get('description', '') - - # Check if port already exists for this app - existing_port = Port.query.filter_by(app_id=app_id, port_number=port_number).first() - if existing_port: - return jsonify({'error': 'Port already exists for this app'}), 400 - - new_port = Port( - app_id=app_id, - port_number=port_number, - protocol=protocol, - description=description - ) - - db.session.add(new_port) - db.session.commit() - - return jsonify({ - 'id': new_port.id, - 'port_number': new_port.port_number, - 'protocol': new_port.protocol, - 'description': new_port.description - }) -@bp.route('/ports/', methods=['DELETE']) + # Accept both JSON and form data + if request.is_json: + data = request.json + else: + data = request.form + + port_number = data.get("port") + protocol = data.get("protocol", "TCP") + description = data.get("description", "") + + if not port_number: + return jsonify({"success": False, "error": "Port number is required"}), 400 + + try: + port_number = int(port_number) + + # Check if port already exists for this app + existing_port = Port.query.filter_by(app_id=app_id, number=port_number).first() + if existing_port: + return ( + jsonify( + { + "success": False, + "error": "Port already exists for this application", + } + ), + 400, + ) + + # Create new port + port = Port( + number=port_number, + protocol=protocol, + description=description, + app_id=app_id, + ) + + db.session.add(port) + db.session.commit() + + return jsonify( + { + "success": True, + "message": f"Port {port_number} added to {app.name}", + "port": { + "id": port.id, + "number": port.number, + "protocol": port.protocol, + "description": port.description, + }, + } + ) + except ValueError: + return jsonify({"success": False, "error": "Invalid port number"}), 400 + except Exception as e: + db.session.rollback() + return jsonify({"success": False, "error": str(e)}), 500 + + +@bp.route("/app//ports", methods=["GET"]) +@login_required +def get_app_ports(app_id): + """Get all ports for an application""" + app = App.query.get_or_404(app_id) + + ports = Port.query.filter_by(app_id=app_id).all() + + result = { + "app_id": app_id, + "ports": [ + { + "id": port.id, + "number": port.number, + "protocol": port.protocol, + "description": port.description, + } + for port in ports + ], + } + + return jsonify(result) + + +@bp.route("/port//delete", methods=["POST"]) @login_required def delete_port(port_id): """Delete a port""" - port = Port.query.get_or_404(port_id) - - db.session.delete(port) - db.session.commit() - - return jsonify({'success': True}) + # Add CSRF validation + if request.is_json: # For AJAX requests + csrf_token = request.json.get("csrf_token") + if not csrf_token or not csrf.validate_csrf(csrf_token): + return jsonify({"success": False, "error": "CSRF validation failed"}), 403 -@bp.route('/subnets//servers', methods=['GET']) + port = Port.query.get_or_404(port_id) + + try: + db.session.delete(port) + db.session.commit() + return jsonify({"success": True, "message": f"Port {port.number} deleted"}) + except Exception as e: + db.session.rollback() + return jsonify({"success": False, "error": str(e)}), 500 + + +@bp.route("/subnets//servers", methods=["GET"]) def get_subnet_servers(subnet_id): """Get all servers for a specific subnet""" servers = Server.query.filter_by(subnet_id=subnet_id).all() - return jsonify([{ - 'id': server.id, - 'hostname': server.hostname, - 'ip_address': server.ip_address - } for server in servers]) + return jsonify( + [ + { + "id": server.id, + "hostname": server.hostname, + "ip_address": server.ip_address, + } + for server in servers + ] + ) -@bp.route('/server//ports', methods=['GET']) + +@bp.route("/server//ports", methods=["GET"]) @login_required def get_server_ports(server_id): """Get all used ports for a server""" server = Server.query.get_or_404(server_id) - + # Get all ports associated with this server ports = Port.query.filter_by(server_id=server_id).all() used_ports = [port.number for port in ports] - - return jsonify({ - 'server_id': server_id, - 'used_ports': used_ports - }) -@bp.route('/server//free-port', methods=['GET']) + return jsonify({"server_id": server_id, "used_ports": used_ports}) + + +@bp.route("/server//free-port", methods=["GET"]) @login_required def get_free_port(server_id): """Find a free port for a server""" server = Server.query.get_or_404(server_id) - + # Get all ports associated with this server - used_ports = [port.number for port in Port.query.filter_by(server_id=server_id).all()] - + used_ports = [ + port.number for port in Port.query.filter_by(server_id=server_id).all() + ] + # Find the first free port (starting from 8000) for port_number in range(8000, 9000): if port_number not in used_ports: - return jsonify({ - 'success': True, - 'port': port_number - }) - - return jsonify({ - 'success': False, - 'error': 'No free ports available in the range 8000-9000' - }) \ No newline at end of file + return jsonify({"success": True, "port": port_number}) + + return jsonify( + {"success": False, "error": "No free ports available in the range 8000-9000"} + ) diff --git a/app/routes/auth.py b/app/routes/auth.py index 5330ea2..8803b3c 100644 --- a/app/routes/auth.py +++ b/app/routes/auth.py @@ -3,75 +3,87 @@ from flask_login import login_user, logout_user, current_user, login_required from werkzeug.security import generate_password_hash, check_password_hash from app.core.extensions import db from app.core.auth import User +import re +from flask_wtf.csrf import CSRFProtect -bp = Blueprint('auth', __name__, url_prefix='/auth') +bp = Blueprint("auth", __name__, url_prefix="/auth") +csrf = CSRFProtect() -@bp.route('/login', methods=['GET', 'POST']) + +@bp.route("/login", methods=["GET", "POST"]) def login(): """User login""" if current_user.is_authenticated: - return redirect(url_for('dashboard.dashboard_home')) - - if request.method == 'POST': - email = request.form.get('email') - password = request.form.get('password') - remember = 'remember' in request.form - - user = User.query.filter_by(email=email).first() - - if not user or not user.check_password(password): - flash('Invalid email or password', 'danger') - return render_template('auth/login.html', title='Login') - - login_user(user, remember=remember) - - next_page = request.args.get('next') - if not next_page or not next_page.startswith('/'): - next_page = url_for('dashboard.dashboard_home') - - return redirect(next_page) - - return render_template('auth/login.html', title='Login') + return redirect(url_for("dashboard.dashboard_home")) -@bp.route('/register', methods=['GET', 'POST']) + if request.method == "POST": + email = request.form.get("email") + password = request.form.get("password") + remember = "remember" in request.form + + user = User.query.filter_by(email=email).first() + + if not user or not user.check_password(password): + flash("Invalid email or password", "danger") + return render_template("auth/login.html", title="Login") + + login_user(user, remember=remember) + + next_page = request.args.get("next") + if not next_page or not next_page.startswith("/"): + next_page = url_for("dashboard.dashboard_home") + + return redirect(next_page) + + return render_template("auth/login.html", title="Login") + + +@bp.route("/register", methods=["GET", "POST"]) +@csrf.exempt # Remove for production! Temporary allow registration without CSRF def register(): """User registration""" if current_user.is_authenticated: - return redirect(url_for('dashboard.dashboard_home')) - - if request.method == 'POST': - email = request.form.get('email') - password = request.form.get('password') - - # Validation - if not email or not password: - flash('Email and password are required', 'danger') - return render_template('auth/register.html', title='Register') - - if User.query.filter_by(email=email).first(): - flash('Email already registered', 'danger') - return render_template('auth/register.html', title='Register') - - # Create new user - user = User(email=email) - user.set_password(password) - - db.session.add(user) - db.session.commit() - - flash('Registration successful! You are now logged in.', 'success') - - # Auto-login after registration - login_user(user) - - return redirect(url_for('dashboard.dashboard_home')) - - return render_template('auth/register.html', title='Register') + return redirect(url_for("dashboard.dashboard_home")) -@bp.route('/logout') + if request.method == "POST": + email = request.form.get("email") + username = request.form.get("username") + password = request.form.get("password") + password_confirm = request.form.get("password_confirm") + + # Validate form data + error = None + if not email or not username or not password: + error = "All fields are required." + elif not re.match(r"[^@]+@[^@]+\.[^@]+", email): + error = "Please enter a valid email address." + elif password != password_confirm: + error = "Passwords do not match." + elif User.query.filter_by(email=email).first(): + error = "Email address already registered." + elif User.query.filter_by(username=username).first(): + error = "Username already taken." + + if error: + flash(error, "danger") + else: + # Create new user + new_user = User(email=email, username=username) + new_user.set_password(password) + + db.session.add(new_user) + db.session.commit() + + flash("Registration successful! You can now log in.", "success") + return redirect(url_for("auth.login")) + + return render_template("auth/register.html", title="Register") + + +@bp.route("/logout") @login_required def logout(): """User logout""" logout_user() - flash('You have been logged out', 'info') - return redirect(url_for('auth.login')) \ No newline at end of file + flash("You have been logged out", "info") + return redirect(url_for("auth.login")) diff --git a/app/routes/dashboard.py b/app/routes/dashboard.py index 9f3abf6..1800518 100644 --- a/app/routes/dashboard.py +++ b/app/routes/dashboard.py @@ -4,383 +4,384 @@ import markdown from app.core.models import Server, App, Subnet, Port from app.core.extensions import db, limiter from datetime import datetime +from app.utils.app_utils import validate_app_data -bp = Blueprint('dashboard', __name__, url_prefix='/dashboard') +bp = Blueprint("dashboard", __name__, url_prefix="/dashboard") -@bp.route('/') + +@bp.route("/") @login_required def dashboard_home(): """Main dashboard view showing server statistics""" server_count = Server.query.count() app_count = App.query.count() subnet_count = Subnet.query.count() - + # Get latest added servers latest_servers = Server.query.order_by(Server.created_at.desc()).limit(5).all() - + # Get subnets with usage stats subnets = Subnet.query.all() for subnet in subnets: - subnet.usage_percent = subnet.used_ips / 254 * 100 if subnet.cidr.endswith('/24') else 0 - + subnet.usage_percent = ( + subnet.used_ips / 254 * 100 if subnet.cidr.endswith("/24") else 0 + ) + return render_template( - 'dashboard/index.html', - title='Dashboard', + "dashboard/index.html", + title="Dashboard", server_count=server_count, app_count=app_count, subnet_count=subnet_count, latest_servers=latest_servers, subnets=subnets, - now=datetime.now() + now=datetime.now(), ) -@bp.route('/servers') + +@bp.route("/servers") @login_required def server_list(): """List all servers""" servers = Server.query.order_by(Server.hostname).all() - + return render_template( - 'dashboard/server_list.html', - title='Servers', + "dashboard/server_list.html", + title="Servers", servers=servers, - now=datetime.now() + now=datetime.now(), ) -@bp.route('/server/') + +@bp.route("/server/") @login_required def server_view(server_id): """View server details""" server = Server.query.get_or_404(server_id) apps = App.query.filter_by(server_id=server_id).all() - + return render_template( - 'dashboard/server_view.html', - title=f'Server - {server.hostname}', + "dashboard/server_view.html", + title=f"Server - {server.hostname}", server=server, apps=apps, - now=datetime.now() + now=datetime.now(), ) -@bp.route('/server/new', methods=['GET', 'POST']) + +@bp.route("/server/new", methods=["GET", "POST"]) @login_required def server_new(): """Create a new server""" subnets = Subnet.query.all() - - if request.method == 'POST': - hostname = request.form.get('hostname') - ip_address = request.form.get('ip_address') - subnet_id = request.form.get('subnet_id') - documentation = request.form.get('documentation', '') - + + if request.method == "POST": + hostname = request.form.get("hostname") + ip_address = request.form.get("ip_address") + subnet_id = request.form.get("subnet_id") + documentation = request.form.get("documentation", "") + # Basic validation if not hostname or not ip_address or not subnet_id: - flash('Please fill in all required fields', 'danger') + flash("Please fill in all required fields", "danger") return render_template( - 'dashboard/server_form.html', - title='New Server', + "dashboard/server_form.html", + title="New Server", subnets=subnets, - now=datetime.now() + now=datetime.now(), ) - + # Check if hostname or IP already exists if Server.query.filter_by(hostname=hostname).first(): - flash('Hostname already exists', 'danger') + flash("Hostname already exists", "danger") return render_template( - 'dashboard/server_form.html', - title='New Server', + "dashboard/server_form.html", + title="New Server", subnets=subnets, - now=datetime.now() + now=datetime.now(), ) - + if Server.query.filter_by(ip_address=ip_address).first(): - flash('IP address already exists', 'danger') + flash("IP address already exists", "danger") return render_template( - 'dashboard/server_form.html', - title='New Server', + "dashboard/server_form.html", + title="New Server", subnets=subnets, - now=datetime.now() + now=datetime.now(), ) - + # Create new server server = Server( hostname=hostname, ip_address=ip_address, subnet_id=subnet_id, - documentation=documentation + documentation=documentation, ) - + db.session.add(server) db.session.commit() - - flash('Server created successfully', 'success') - return redirect(url_for('dashboard.server_view', server_id=server.id)) - + + flash("Server created successfully", "success") + return redirect(url_for("dashboard.server_view", server_id=server.id)) + return render_template( - 'dashboard/server_form.html', - title='New Server', + "dashboard/server_form.html", + title="New Server", subnets=subnets, - now=datetime.now() + now=datetime.now(), ) -@bp.route('/server//edit', methods=['GET', 'POST']) + +@bp.route("/server//edit", methods=["GET", "POST"]) @login_required def server_edit(server_id): """Edit an existing server""" server = Server.query.get_or_404(server_id) subnets = Subnet.query.all() - - if request.method == 'POST': - hostname = request.form.get('hostname') - ip_address = request.form.get('ip_address') - subnet_id = request.form.get('subnet_id') - documentation = request.form.get('documentation', '') - + + if request.method == "POST": + hostname = request.form.get("hostname") + ip_address = request.form.get("ip_address") + subnet_id = request.form.get("subnet_id") + documentation = request.form.get("documentation", "") + if not hostname or not ip_address or not subnet_id: - flash('All fields are required', 'danger') + flash("All fields are required", "danger") return render_template( - 'dashboard/server_form.html', - title='Edit Server', + "dashboard/server_form.html", + title="Edit Server", server=server, - subnets=subnets + subnets=subnets, ) - + # Check if hostname changed and already exists - if hostname != server.hostname and Server.query.filter_by(hostname=hostname).first(): - flash('Hostname already exists', 'danger') + if ( + hostname != server.hostname + and Server.query.filter_by(hostname=hostname).first() + ): + flash("Hostname already exists", "danger") return render_template( - 'dashboard/server_form.html', - title='Edit Server', + "dashboard/server_form.html", + title="Edit Server", server=server, - subnets=subnets + subnets=subnets, ) - + # Check if IP changed and already exists - if ip_address != server.ip_address and Server.query.filter_by(ip_address=ip_address).first(): - flash('IP address already exists', 'danger') + if ( + ip_address != server.ip_address + and Server.query.filter_by(ip_address=ip_address).first() + ): + flash("IP address already exists", "danger") return render_template( - 'dashboard/server_form.html', - title='Edit Server', + "dashboard/server_form.html", + title="Edit Server", server=server, - subnets=subnets + subnets=subnets, ) - + # Update server server.hostname = hostname server.ip_address = ip_address server.subnet_id = subnet_id server.documentation = documentation - + db.session.commit() - - flash('Server updated successfully', 'success') - return redirect(url_for('dashboard.server_view', server_id=server.id)) - + + flash("Server updated successfully", "success") + return redirect(url_for("dashboard.server_view", server_id=server.id)) + # GET request - show form with current values return render_template( - 'dashboard/server_form.html', - title=f'Edit Server - {server.hostname}', + "dashboard/server_form.html", + title=f"Edit Server - {server.hostname}", server=server, - subnets=subnets + subnets=subnets, ) -@bp.route('/server//delete', methods=['POST']) + +@bp.route("/server//delete", methods=["POST"]) @login_required def server_delete(server_id): """Delete a server""" server = Server.query.get_or_404(server_id) - + # Delete all apps associated with this server App.query.filter_by(server_id=server_id).delete() - + # Delete the server db.session.delete(server) db.session.commit() - - flash('Server deleted successfully', 'success') - return redirect(url_for('dashboard.dashboard_home')) -@bp.route('/app/new', methods=['GET', 'POST']) + flash("Server deleted successfully", "success") + return redirect(url_for("dashboard.dashboard_home")) + + +@bp.route("/app/new", methods=["GET", "POST"]) @login_required def app_new(): - """Create a new application""" + """Create a new application with comprehensive error handling""" + # Get all servers for dropdown servers = Server.query.all() - - if request.method == 'POST': - name = request.form.get('name') - server_id = request.form.get('server_id') - documentation = request.form.get('documentation', '') - - # Get port data from form - port_numbers = request.form.getlist('port_numbers[]') - protocols = request.form.getlist('protocols[]') - port_descriptions = request.form.getlist('port_descriptions[]') - - # Basic validation - if not name or not server_id: - flash('Please fill in all required fields', 'danger') - return render_template( - 'dashboard/app_form.html', - title='New Application', - servers=servers - ) - - # Create new app - app = App( - name=name, - server_id=server_id, - documentation=documentation - ) - - db.session.add(app) - db.session.flush() # Get the app ID without committing - - # Add ports if provided + + if not servers: + flash("You need to create a server before adding applications", "warning") + return redirect(url_for("dashboard.server_new")) + + if request.method == "POST": + # Get form data + name = request.form.get("name", "").strip() + server_id = request.form.get("server_id") + documentation = request.form.get("documentation", "") + + # Process port data from form + port_data = [] + port_numbers = request.form.getlist("port_numbers[]") + protocols = request.form.getlist("protocols[]") + descriptions = request.form.getlist("port_descriptions[]") + for i in range(len(port_numbers)): if port_numbers[i] and port_numbers[i].strip(): - try: - port_num = int(port_numbers[i]) - - # Get protocol and description, handling index errors - protocol = protocols[i] if i < len(protocols) else 'TCP' - description = port_descriptions[i] if i < len(port_descriptions) else '' - - new_port = Port( - app_id=app.id, - port_number=port_num, - protocol=protocol, - description=description - ) - db.session.add(new_port) - except (ValueError, IndexError): - continue - - db.session.commit() - - flash('Application created successfully', 'success') - return redirect(url_for('dashboard.server_view', server_id=server_id)) - + protocol = protocols[i] if i < len(protocols) else "TCP" + description = descriptions[i] if i < len(descriptions) else "" + port_data.append((port_numbers[i], protocol, description)) + + # Save application + from app.utils.app_utils import save_app + + success, app, error = save_app(name, server_id, documentation, port_data) + + if success: + flash("Application created successfully", "success") + return redirect(url_for("dashboard.app_view", app_id=app.id)) + else: + flash(error, "danger") + + # For GET requests or failed POSTs return render_template( - 'dashboard/app_form.html', - title='New Application', - servers=servers + "dashboard/app_form.html", + title="Create New Application", + edit_mode=False, + dashboard_link=url_for("dashboard.dashboard_home"), + servers=servers, ) -@bp.route('/app/', methods=['GET']) + +@bp.route("/app/", methods=["GET"]) @login_required def app_view(app_id): """View a specific application""" app = App.query.get_or_404(app_id) server = Server.query.get(app.server_id) - + return render_template( - 'dashboard/app_view.html', - title=f'Application - {app.name}', + "dashboard/app_view.html", + title=f"Application - {app.name}", app=app, server=server, - now=datetime.now() + now=datetime.now(), ) -@bp.route('/app//edit', methods=['GET', 'POST']) + +@bp.route("/app//edit", methods=["GET", "POST"]) @login_required def app_edit(app_id): - """Edit an existing application""" + """Edit an existing application with comprehensive error handling""" + # Get the application and all servers app = App.query.get_or_404(app_id) servers = Server.query.all() - - if request.method == 'POST': - name = request.form.get('name') - server_id = request.form.get('server_id') - documentation = request.form.get('documentation', '') - - if not name or not server_id: - flash('All required fields must be filled', 'danger') - return render_template( - 'dashboard/app_form.html', - title='Edit Application', - app=app, - servers=servers + + if request.method == "POST": + # Get form data + name = request.form.get("name", "").strip() + server_id = request.form.get("server_id") + documentation = request.form.get("documentation", "") + + # Process port data from form + port_data = [] + port_numbers = request.form.getlist("port_numbers[]") + protocols = request.form.getlist("protocols[]") + descriptions = request.form.getlist("port_descriptions[]") + + for i in range(len(port_numbers)): + if port_numbers[i] and port_numbers[i].strip(): + protocol = protocols[i] if i < len(protocols) else "TCP" + description = descriptions[i] if i < len(descriptions) else "" + port_data.append((port_numbers[i], protocol, description)) + + # Replace local validation with shared function + valid, error = validate_app_data(name, server_id, existing_app_id=app_id) + + if valid: + # Update application + from app.utils.app_utils import save_app + + success, updated_app, error = save_app( + name, server_id, documentation, port_data, app_id ) - - # Check if name changed and already exists on the same server - existing_app = App.query.filter(App.name == name, - App.server_id == server_id, - App.id != app.id).first() - if existing_app: - flash('Application with this name already exists on the selected server', 'danger') - return render_template( - 'dashboard/app_form.html', - title='Edit Application', - app=app, - servers=servers - ) - - # Update application - app.name = name - app.server_id = server_id - app.documentation = documentation - - try: - db.session.commit() - flash('Application updated successfully', 'success') - return redirect(url_for('dashboard.app_view', app_id=app.id)) - except Exception as e: - db.session.rollback() - flash(f'Error updating application: {str(e)}', 'danger') - + + if success: + flash("Application updated successfully", "success") + return redirect(url_for("dashboard.app_view", app_id=app_id)) + else: + flash(error, "danger") + else: + flash(error, "danger") + + # For GET requests or failed POSTs return render_template( - 'dashboard/app_form.html', - title=f'Edit Application - {app.name}', + "dashboard/app_form.html", + title=f"Edit Application: {app.name}", + edit_mode=True, app=app, - servers=servers + dashboard_link=url_for("dashboard.dashboard_home"), + servers=servers, ) -@bp.route('/app//delete', methods=['POST']) + +@bp.route("/app//delete", methods=["POST"]) @login_required def app_delete(app_id): """Delete an application""" app = App.query.get_or_404(app_id) server_id = app.server_id - + db.session.delete(app) db.session.commit() - - flash('Application deleted successfully', 'success') - return redirect(url_for('dashboard.server_view', server_id=server_id)) -@bp.route('/settings', methods=['GET', 'POST']) + flash("Application deleted successfully", "success") + return redirect(url_for("dashboard.server_view", server_id=server_id)) + + +@bp.route("/settings", methods=["GET", "POST"]) @login_required def settings(): """User settings page""" - if request.method == 'POST': + if request.method == "POST": # Handle user settings update - current_password = request.form.get('current_password') - new_password = request.form.get('new_password') - confirm_password = request.form.get('confirm_password') - + current_password = request.form.get("current_password") + new_password = request.form.get("new_password") + confirm_password = request.form.get("confirm_password") + # Validate inputs if not current_password: - flash('Current password is required', 'danger') - return redirect(url_for('dashboard.settings')) - + flash("Current password is required", "danger") + return redirect(url_for("dashboard.settings")) + if new_password != confirm_password: - flash('New passwords do not match', 'danger') - return redirect(url_for('dashboard.settings')) - + flash("New passwords do not match", "danger") + return redirect(url_for("dashboard.settings")) + # Verify current password if not current_user.check_password(current_password): - flash('Current password is incorrect', 'danger') - return redirect(url_for('dashboard.settings')) - + flash("Current password is incorrect", "danger") + return redirect(url_for("dashboard.settings")) + # Update password current_user.set_password(new_password) db.session.commit() - - flash('Password updated successfully', 'success') - return redirect(url_for('dashboard.settings')) - - return render_template( - 'dashboard/settings.html', - title='User Settings' - ) \ No newline at end of file + + flash("Password updated successfully", "success") + return redirect(url_for("dashboard.settings")) + + return render_template("dashboard/settings.html", title="User Settings") diff --git a/app/routes/importexport.py b/app/routes/importexport.py index 1c3a1b7..9814895 100644 --- a/app/routes/importexport.py +++ b/app/routes/importexport.py @@ -5,100 +5,101 @@ import csv import io import datetime -bp = Blueprint('importexport', __name__, url_prefix='/import-export') +bp = Blueprint("importexport", __name__, url_prefix="/import-export") -MODEL_MAP = { - 'subnet': Subnet, - 'server': Server, - 'app': App -} +MODEL_MAP = {"subnet": Subnet, "server": Server, "app": App} -@bp.route('/export/', methods=['GET']) + +@bp.route("/export/", methods=["GET"]) def export_model(model_name): if model_name not in MODEL_MAP: - return jsonify({'error': 'Invalid model name'}), 400 - + return jsonify({"error": "Invalid model name"}), 400 + model = MODEL_MAP[model_name] instances = model.query.all() - + # Create a CSV file in memory output = io.StringIO() writer = csv.writer(output) - + # Get column names from model columns = [column.name for column in model.__table__.columns] writer.writerow(columns) - + # Write data for instance in instances: row = [getattr(instance, column) for column in columns] writer.writerow(row) - + # Create response - timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"{model_name}_{timestamp}.csv" - + response = make_response(output.getvalue()) - response.headers['Content-Disposition'] = f'attachment; filename={filename}' - response.headers['Content-type'] = 'text/csv' - + response.headers["Content-Disposition"] = f"attachment; filename={filename}" + response.headers["Content-type"] = "text/csv" + return response -@bp.route('/import/', methods=['GET', 'POST']) + +@bp.route("/import/", methods=["GET", "POST"]) def import_model(model_name): if model_name not in MODEL_MAP: - return jsonify({'error': 'Invalid model name'}), 400 - + return jsonify({"error": "Invalid model name"}), 400 + model = MODEL_MAP[model_name] - - if request.method == 'GET': + + if request.method == "GET": # Show import form - return render_template('import_form.html', model_name=model_name) - + return render_template("import_form.html", model_name=model_name) + # Process CSV upload - if 'file' not in request.files: - return jsonify({'error': 'No file part'}), 400 - - file = request.files['file'] - if file.filename == '': - return jsonify({'error': 'No selected file'}), 400 - - if not file.filename.endswith('.csv'): - return jsonify({'error': 'File must be CSV format'}), 400 - + if "file" not in request.files: + return jsonify({"error": "No file part"}), 400 + + file = request.files["file"] + if file.filename == "": + return jsonify({"error": "No selected file"}), 400 + + if not file.filename.endswith(".csv"): + return jsonify({"error": "File must be CSV format"}), 400 + try: # Read CSV stream = io.StringIO(file.stream.read().decode("UTF8"), newline=None) csv_reader = csv.reader(stream) - + # Get headers headers = next(csv_reader) - + # Validate required columns - required_columns = [col.name for col in model.__table__.columns - if not col.nullable and col.name != 'id'] - + required_columns = [ + col.name + for col in model.__table__.columns + if not col.nullable and col.name != "id" + ] + for col in required_columns: if col not in headers: - return jsonify({'error': f'Required column {col} missing'}), 400 - + return jsonify({"error": f"Required column {col} missing"}), 400 + # Process rows imported = 0 for row in csv_reader: data = dict(zip(headers, row)) - + # Remove id to create new record - if 'id' in data: - del data['id'] - + if "id" in data: + del data["id"] + # Create new instance instance = model(**data) db.session.add(instance) imported += 1 - + db.session.commit() - return jsonify({'success': f'Imported {imported} records successfully'}) - + return jsonify({"success": f"Imported {imported} records successfully"}) + except Exception as e: db.session.rollback() - return jsonify({'error': str(e)}), 500 \ No newline at end of file + return jsonify({"error": str(e)}), 500 diff --git a/app/routes/ipam.py b/app/routes/ipam.py index fcd585a..a188470 100644 --- a/app/routes/ipam.py +++ b/app/routes/ipam.py @@ -1,260 +1,267 @@ from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify from flask_login import login_required -from app.core.models import Subnet, Server +from app.core.models import Subnet, Server, App from app.core.extensions import db from app.scripts.ip_scanner import scan import ipaddress from datetime import datetime import json -bp = Blueprint('ipam', __name__, url_prefix='/ipam') +bp = Blueprint("ipam", __name__, url_prefix="/ipam") -@bp.route('/') + +@bp.route("/") @login_required def ipam_home(): """Main IPAM dashboard""" subnets = Subnet.query.all() - + # Calculate usage for each subnet for subnet in subnets: network = ipaddress.ip_network(subnet.cidr, strict=False) - max_hosts = network.num_addresses - 2 if network.prefixlen < 31 else network.num_addresses + max_hosts = ( + network.num_addresses - 2 + if network.prefixlen < 31 + else network.num_addresses + ) used_count = Server.query.filter_by(subnet_id=subnet.id).count() subnet.usage_percent = (used_count / max_hosts) * 100 if max_hosts > 0 else 0 - + return render_template( - 'ipam/index.html', - title='IPAM Dashboard', - subnets=subnets, - now=datetime.now() + "ipam/index.html", title="IPAM Dashboard", subnets=subnets, now=datetime.now() ) -@bp.route('/subnet/new', methods=['GET', 'POST']) + +@bp.route("/subnet/new", methods=["GET", "POST"]) @login_required def subnet_new(): """Create a new subnet""" - if request.method == 'POST': - cidr = request.form.get('cidr') - location = request.form.get('location') - auto_scan = request.form.get('auto_scan') == 'on' - + if request.method == "POST": + cidr = request.form.get("cidr") + location = request.form.get("location") + auto_scan = request.form.get("auto_scan") == "on" + # Basic validation if not cidr or not location: - flash('Please fill in all required fields', 'danger') - return render_template( - 'ipam/subnet_form.html', - title='New Subnet' - ) - + flash("Please fill in all required fields", "danger") + return render_template("ipam/subnet_form.html", title="New Subnet") + # Validate CIDR format try: ipaddress.ip_network(cidr, strict=False) except ValueError: - flash('Invalid CIDR format', 'danger') - return render_template( - 'ipam/subnet_form.html', - title='New Subnet' - ) - + flash("Invalid CIDR format", "danger") + return render_template("ipam/subnet_form.html", title="New Subnet") + # Check if CIDR already exists if Subnet.query.filter_by(cidr=cidr).first(): - flash('Subnet already exists', 'danger') - return render_template( - 'ipam/subnet_form.html', - title='New Subnet' - ) - + flash("Subnet already exists", "danger") + return render_template("ipam/subnet_form.html", title="New Subnet") + # Create new subnet with JSON string for active_hosts, not a Python list subnet = Subnet( cidr=cidr, location=location, active_hosts=json.dumps([]), # Convert empty list to JSON string last_scanned=None, - auto_scan=auto_scan + auto_scan=auto_scan, ) - + db.session.add(subnet) db.session.commit() - - flash('Subnet created successfully', 'success') - return redirect(url_for('ipam.subnet_view', subnet_id=subnet.id)) - - return render_template( - 'ipam/subnet_form.html', - title='New Subnet' - ) -@bp.route('/subnet/') + flash("Subnet created successfully", "success") + return redirect(url_for("ipam.subnet_view", subnet_id=subnet.id)) + + return render_template("ipam/subnet_form.html", title="New Subnet") + + +@bp.route("/subnet/") @login_required def subnet_view(subnet_id): - """View a specific subnet""" + """View a subnet and all its hosts""" subnet = Subnet.query.get_or_404(subnet_id) - - # Get all servers in this subnet + + # Get servers in this subnet servers = Server.query.filter_by(subnet_id=subnet_id).all() - - # Parse CIDR for display + + # Get applications in this subnet + subnet_apps = [] + for server in servers: + apps = App.query.filter_by(server_id=server.id).all() + subnet_apps.extend(apps) + + # Calculate usage statistics network = ipaddress.ip_network(subnet.cidr, strict=False) - subnet_info = { - 'network_address': str(network.network_address), - 'broadcast_address': str(network.broadcast_address), - 'netmask': str(network.netmask), - 'num_addresses': network.num_addresses, - 'host_range': f"{str(network.network_address + 1)} - {str(network.broadcast_address - 1)}" if network.prefixlen < 31 else subnet.cidr - } - + total_ips = network.num_addresses - 2 # Subtract network and broadcast addresses + used_ips = Server.query.filter_by(subnet_id=subnet_id).count() + return render_template( - 'ipam/subnet_view.html', - title=subnet.cidr, + "ipam/subnet_view.html", + title=f"Subnet {subnet.cidr}", subnet=subnet, - subnet_info=subnet_info, servers=servers, - now=datetime.now() + subnet_apps=subnet_apps, + total_ips=total_ips, + used_ips=used_ips, ) -@bp.route('/subnet//edit', methods=['GET', 'POST']) + +@bp.route("/subnet//edit", methods=["GET", "POST"]) @login_required def subnet_edit(subnet_id): """Edit a subnet""" subnet = Subnet.query.get_or_404(subnet_id) - - if request.method == 'POST': - cidr = request.form.get('cidr') - location = request.form.get('location') - auto_scan = request.form.get('auto_scan') == 'on' - + + if request.method == "POST": + cidr = request.form.get("cidr") + location = request.form.get("location") + auto_scan = request.form.get("auto_scan") == "on" + # Validate inputs if not all([cidr, location]): - flash('All fields are required', 'danger') - return render_template('ipam/subnet_form.html', - title='Edit Subnet', - subnet=subnet, - edit_mode=True) - + flash("All fields are required", "danger") + return render_template( + "ipam/subnet_form.html", + title="Edit Subnet", + subnet=subnet, + edit_mode=True, + ) + # Validate CIDR format try: ipaddress.ip_network(cidr, strict=False) except ValueError: - flash('Invalid CIDR format', 'danger') - return render_template('ipam/subnet_form.html', - title='Edit Subnet', - subnet=subnet, - edit_mode=True) - + flash("Invalid CIDR format", "danger") + return render_template( + "ipam/subnet_form.html", + title="Edit Subnet", + subnet=subnet, + edit_mode=True, + ) + # Update subnet subnet.cidr = cidr subnet.location = location subnet.auto_scan = auto_scan - + try: db.session.commit() - flash(f'Subnet {cidr} has been updated', 'success') - return redirect(url_for('ipam.subnet_view', subnet_id=subnet.id)) + flash(f"Subnet {cidr} has been updated", "success") + return redirect(url_for("ipam.subnet_view", subnet_id=subnet.id)) except Exception as e: db.session.rollback() - flash(f'Error updating subnet: {str(e)}', 'danger') - - return render_template('ipam/subnet_form.html', - title='Edit Subnet', - subnet=subnet, - edit_mode=True) + flash(f"Error updating subnet: {str(e)}", "danger") -@bp.route('/subnet//delete', methods=['POST']) + return render_template( + "ipam/subnet_form.html", title="Edit Subnet", subnet=subnet, edit_mode=True + ) + + +@bp.route("/subnet//delete", methods=["POST"]) @login_required def subnet_delete(subnet_id): """Delete a subnet""" subnet = Subnet.query.get_or_404(subnet_id) - + # Check if subnet has servers servers_count = Server.query.filter_by(subnet_id=subnet_id).count() if servers_count > 0: - flash(f'Cannot delete subnet {subnet.cidr}. It has {servers_count} servers assigned.', 'danger') - return redirect(url_for('ipam.subnet_view', subnet_id=subnet_id)) - + flash( + f"Cannot delete subnet {subnet.cidr}. It has {servers_count} servers assigned.", + "danger", + ) + return redirect(url_for("ipam.subnet_view", subnet_id=subnet_id)) + db.session.delete(subnet) db.session.commit() - - flash(f'Subnet {subnet.cidr} has been deleted', 'success') - return redirect(url_for('ipam.ipam_home')) -@bp.route('/subnet//scan', methods=['POST']) + flash(f"Subnet {subnet.cidr} has been deleted", "success") + return redirect(url_for("ipam.ipam_home")) + + +@bp.route("/subnet//scan", methods=["POST"]) @login_required def subnet_scan(subnet_id): """Manually scan a subnet""" subnet = Subnet.query.get_or_404(subnet_id) - + try: # Call the scan function with manual_trigger=True scan(subnet, manual_trigger=True) db.session.commit() - flash(f'Scan completed for subnet {subnet.cidr}', 'success') + flash(f"Scan completed for subnet {subnet.cidr}", "success") except Exception as e: db.session.rollback() - flash(f'Error scanning subnet: {str(e)}', 'danger') - - return redirect(url_for('ipam.subnet_view', subnet_id=subnet_id)) + flash(f"Error scanning subnet: {str(e)}", "danger") -@bp.route('/subnet//force-delete', methods=['POST']) + return redirect(url_for("ipam.subnet_view", subnet_id=subnet_id)) + + +@bp.route("/subnet//force-delete", methods=["POST"]) @login_required def subnet_force_delete(subnet_id): """Force delete a subnet and all its related servers and applications""" subnet = Subnet.query.get_or_404(subnet_id) - + try: # Get all servers to be deleted for reporting servers = Server.query.filter_by(subnet_id=subnet_id).all() server_count = len(servers) - + # This will cascade delete all related servers and their applications db.session.delete(subnet) db.session.commit() - - flash(f'Subnet {subnet.cidr} and {server_count} related servers were deleted successfully', 'success') - return redirect(url_for('dashboard.ipam_home')) + + flash( + f"Subnet {subnet.cidr} and {server_count} related servers were deleted successfully", + "success", + ) + return redirect(url_for("dashboard.ipam_home")) except Exception as e: db.session.rollback() - flash(f'Error deleting subnet: {str(e)}', 'danger') - return redirect(url_for('dashboard.subnet_view', subnet_id=subnet_id)) + flash(f"Error deleting subnet: {str(e)}", "danger") + return redirect(url_for("dashboard.subnet_view", subnet_id=subnet_id)) -@bp.route('/subnet/create-ajax', methods=['POST']) + +@bp.route("/subnet/create-ajax", methods=["POST"]) @login_required def subnet_create_ajax(): """Create a subnet via AJAX""" data = request.json if not data: - return jsonify({'success': False, 'error': 'No data provided'}) - - cidr = data.get('cidr') - location = data.get('location') - auto_scan = data.get('auto_scan', False) - + return jsonify({"success": False, "error": "No data provided"}) + + cidr = data.get("cidr") + location = data.get("location") + auto_scan = data.get("auto_scan", False) + if not cidr or not location: - return jsonify({'success': False, 'error': 'CIDR and location are required'}) - + return jsonify({"success": False, "error": "CIDR and location are required"}) + # Validate CIDR try: network = ipaddress.ip_network(cidr, strict=False) except ValueError as e: - return jsonify({'success': False, 'error': f'Invalid CIDR: {str(e)}'}) - + return jsonify({"success": False, "error": f"Invalid CIDR: {str(e)}"}) + # Create subnet subnet = Subnet( - cidr=cidr, - location=location, - auto_scan=auto_scan, - active_hosts=json.dumps([]) + cidr=cidr, location=location, auto_scan=auto_scan, active_hosts=json.dumps([]) ) - + try: db.session.add(subnet) db.session.commit() - - return jsonify({ - 'success': True, - 'subnet_id': subnet.id, - 'cidr': subnet.cidr, - 'location': subnet.location - }) + + return jsonify( + { + "success": True, + "subnet_id": subnet.id, + "cidr": subnet.cidr, + "location": subnet.location, + } + ) except Exception as e: db.session.rollback() - return jsonify({'success': False, 'error': str(e)}) \ No newline at end of file + return jsonify({"success": False, "error": str(e)}) diff --git a/app/routes/static.py b/app/routes/static.py new file mode 100644 index 0000000..02a2a14 --- /dev/null +++ b/app/routes/static.py @@ -0,0 +1,96 @@ +from flask import Blueprint, send_from_directory, current_app +import os + +bp = Blueprint("static_assets", __name__) + + +@bp.route("/static/libs/tabler-icons/tabler-icons.min.css") +def tabler_icons(): + """Serve tabler-icons CSS from node_modules or download if missing""" + icons_path = os.path.join(current_app.static_folder, "libs", "tabler-icons") + + # Create directory if it doesn't exist + if not os.path.exists(icons_path): + os.makedirs(icons_path) + + css_file = os.path.join(icons_path, "tabler-icons.min.css") + + # If file doesn't exist, download from CDN + if not os.path.exists(css_file): + import requests + + try: + cdn_url = "https://cdn.jsdelivr.net/npm/@tabler/icons@latest/iconfont/tabler-icons.min.css" + response = requests.get(cdn_url) + if response.status_code == 200: + with open(css_file, "wb") as f: + f.write(response.content) + print(f"Downloaded tabler-icons.min.css from CDN") + else: + print(f"Failed to download tabler-icons CSS: {response.status_code}") + except Exception as e: + print(f"Error downloading tabler-icons CSS: {e}") + + return send_from_directory(icons_path, "tabler-icons.min.css") + + +@bp.route("/static/css/tabler.min.css") +def tabler_css(): + """Serve tabler CSS from static folder or download if missing""" + css_path = os.path.join(current_app.static_folder, "css") + + # Create directory if it doesn't exist + if not os.path.exists(css_path): + os.makedirs(css_path) + + css_file = os.path.join(css_path, "tabler.min.css") + + # If file doesn't exist, download from CDN + if not os.path.exists(css_file): + import requests + + try: + cdn_url = "https://cdn.jsdelivr.net/npm/@tabler/core@latest/dist/css/tabler.min.css" + response = requests.get(cdn_url) + if response.status_code == 200: + with open(css_file, "wb") as f: + f.write(response.content) + print(f"Downloaded tabler.min.css from CDN") + else: + print(f"Failed to download tabler CSS: {response.status_code}") + except Exception as e: + print(f"Error downloading tabler CSS: {e}") + + return send_from_directory(css_path, "tabler.min.css") + + +@bp.route("/static/img/favicon.png") +def favicon(): + """Serve favicon from static folder or create a default one if missing""" + img_path = os.path.join(current_app.static_folder, "img") + + # Create directory if it doesn't exist + if not os.path.exists(img_path): + os.makedirs(img_path) + + favicon_file = os.path.join(img_path, "favicon.png") + + # If file doesn't exist, create a simple one + if not os.path.exists(favicon_file): + # Try to download a default favicon + import requests + + try: + # Using a simple placeholder favicon + cdn_url = "https://www.google.com/favicon.ico" + response = requests.get(cdn_url) + if response.status_code == 200: + with open(favicon_file, "wb") as f: + f.write(response.content) + print(f"Created default favicon.png") + else: + print(f"Failed to download favicon: {response.status_code}") + except Exception as e: + print(f"Error creating favicon: {e}") + + return send_from_directory(img_path, "favicon.png") diff --git a/app/scripts/__pycache__/ip_scanner.cpython-313.pyc b/app/scripts/__pycache__/ip_scanner.cpython-313.pyc index 4977cae..202d100 100644 Binary files a/app/scripts/__pycache__/ip_scanner.cpython-313.pyc and b/app/scripts/__pycache__/ip_scanner.cpython-313.pyc differ diff --git a/app/scripts/db_seed.py b/app/scripts/db_seed.py index 6dcc278..5aef175 100644 --- a/app/scripts/db_seed.py +++ b/app/scripts/db_seed.py @@ -3,51 +3,52 @@ from app.core.models import Subnet, Server, App, Port from app.core.auth import User # Import User from auth module import json + def seed_database(): """Add sample data to the database""" # Create a default subnet if none exists if Subnet.query.count() == 0: subnet = Subnet( - cidr='192.168.1.0/24', - location='Office', + cidr="192.168.1.0/24", + location="Office", auto_scan=True, - active_hosts=json.dumps([]) + active_hosts=json.dumps([]), ) db.session.add(subnet) - + # Create a sample server server = Server( - hostname='server1', - ip_address='192.168.1.10', + hostname="server1", + ip_address="192.168.1.10", subnet=subnet, - documentation='# Server 1\n\nThis is a sample server.' + documentation="# Server 1\n\nThis is a sample server.", ) db.session.add(server) - + # Create a sample app app = App( - name='Web App', - server=server, - documentation='# Welcome to Web App\n\nThis is a sample application.' + name="Web App", + server=server, + documentation="# Welcome to Web App\n\nThis is a sample application.", ) db.session.add(app) - + # Add some ports ports = [ - Port(app=app, port_number=80, protocol='TCP', description='HTTP'), - Port(app=app, port_number=443, protocol='TCP', description='HTTPS') + Port(app=app, port_number=80, protocol="TCP", description="HTTP"), + Port(app=app, port_number=443, protocol="TCP", description="HTTPS"), ] db.session.add_all(ports) - + # Create a default user if none exists if User.query.count() == 0: - admin = User(username='admin', email='admin@example.com', is_admin=True) - admin.set_password('admin') + admin = User(username="admin", email="admin@example.com", is_admin=True) + admin.set_password("admin") db.session.add(admin) - + try: db.session.commit() print("Database seeded successfully") except Exception as e: db.session.rollback() - print(f"Error seeding database: {e}") \ No newline at end of file + print(f"Error seeding database: {e}") diff --git a/app/scripts/ip_scanner.py b/app/scripts/ip_scanner.py index b3f8cc2..450f09e 100644 --- a/app/scripts/ip_scanner.py +++ b/app/scripts/ip_scanner.py @@ -11,10 +11,11 @@ import concurrent.futures from datetime import datetime import platform + def scan(subnet, manual_trigger=False): """ Scan a subnet for active hosts - + Args: subnet: The subnet object to scan manual_trigger: If False, only scan if the subnet hasn't been scanned recently @@ -22,50 +23,56 @@ def scan(subnet, manual_trigger=False): # Skip if not auto scan and not manually triggered if not subnet.auto_scan and not manual_trigger: return False - + active_hosts = [] - + try: # Parse the CIDR notation network = ipaddress.ip_network(subnet.cidr, strict=False) - + # For each address in this network, ping it for ip in network.hosts(): if ping(str(ip)): active_hosts.append(str(ip)) - + # Update subnet with scan results subnet.active_hosts = json.dumps(active_hosts) subnet.last_scanned = datetime.utcnow() - + return True except Exception as e: print(f"Error scanning subnet {subnet.cidr}: {str(e)}") return False + def scan_worker(ip_list, results, index): """Worker function for threading""" for ip in ip_list: if ping(ip): hostname = get_hostname(ip) - results[index].append({ - 'ip': str(ip), - 'hostname': hostname if hostname else str(ip), - 'status': 'up' - }) + results[index].append( + { + "ip": str(ip), + "hostname": hostname if hostname else str(ip), + "status": "up", + } + ) + def ping(host): """ Returns True if host responds to a ping request """ # Ping parameters based on OS - param = '-n' if platform.system().lower() == 'windows' else '-c' + param = "-n" if platform.system().lower() == "windows" else "-c" # Build the command - command = ['ping', param, '1', '-w', '1', host] - + command = ["ping", param, "1", "-w", "1", host] + try: # Run the command and capture output - output = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=2) + output = subprocess.run( + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=2 + ) # Return True if ping was successful return output.returncode == 0 except subprocess.TimeoutExpired: @@ -73,6 +80,7 @@ def ping(host): except Exception: return False + def get_hostname(ip): """Try to get the hostname for an IP address""" try: @@ -81,43 +89,53 @@ def get_hostname(ip): except (socket.herror, socket.gaierror): return None + def is_host_active_ping(ip): """Simple ICMP ping test (platform dependent)""" import platform import subprocess - - param = '-n' if platform.system().lower() == 'windows' else '-c' - command = ['ping', param, '1', '-w', '1', ip] - + + param = "-n" if platform.system().lower() == "windows" else "-c" + command = ["ping", param, "1", "-w", "1", ip] + try: - return subprocess.call(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0 + return ( + subprocess.call( + command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL + ) + == 0 + ) except: return False + def save_scan_results(cidr, results): """Save scan results to the database""" from flask import current_app - + # Need to be in application context - if not hasattr(current_app, 'app_context'): + if not hasattr(current_app, "app_context"): print("Not in Flask application context, cannot save results") return - + try: # Find subnet by CIDR subnet = Subnet.query.filter_by(cidr=cidr).first() if not subnet: print(f"Subnet {cidr} not found in database") return - + # Get existing servers in this subnet - existing_servers = {server.ip_address: server for server in Server.query.filter_by(subnet_id=subnet.id).all()} - + existing_servers = { + server.ip_address: server + for server in Server.query.filter_by(subnet_id=subnet.id).all() + } + # Process scan results for host in results: - ip = host['ip'] - hostname = host['hostname'] - + ip = host["ip"] + hostname = host["hostname"] + # Check if server already exists if ip in existing_servers: # Update hostname if it was previously unknown @@ -130,37 +148,34 @@ def save_scan_results(cidr, results): hostname=hostname, ip_address=ip, subnet_id=subnet.id, - documentation=f"# {hostname}\n\nAutomatically discovered by network scan on {time.strftime('%Y-%m-%d %H:%M:%S')}" + documentation=f"# {hostname}\n\nAutomatically discovered by network scan on {time.strftime('%Y-%m-%d %H:%M:%S')}", ) db.session.add(server) - + db.session.commit() print(f"Saved scan results for {cidr}") - + except Exception as e: db.session.rollback() print(f"Error saving scan results: {e}") + def schedule_subnet_scans(): """Schedule automatic scans for subnets marked as auto_scan""" from flask import current_app - + with current_app.app_context(): try: # Find all subnets with auto_scan enabled subnets = Subnet.query.filter_by(auto_scan=True).all() - + for subnet in subnets: # Start a thread for each subnet - thread = threading.Thread( - target=scan, - args=(subnet,), - daemon=True - ) + thread = threading.Thread(target=scan, args=(subnet,), daemon=True) thread.start() - + # Sleep briefly to avoid overloading time.sleep(1) - + except Exception as e: - print(f"Error scheduling subnet scans: {e}") \ No newline at end of file + print(f"Error scheduling subnet scans: {e}") diff --git a/app/static/css/tabler.min.css b/app/static/css/tabler.min.css new file mode 100644 index 0000000..066d6f8 --- /dev/null +++ b/app/static/css/tabler.min.css @@ -0,0 +1,9 @@ +@charset "UTF-8"; +/*! + * Tabler v1.0.0 (https://tabler.io) + * Copyright 2018-2025 The Tabler Authors + * Copyright 2018-2025 codecalm.net Paweł Kuna + * Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE) + */ +:root,[data-bs-theme=light]{--tblr-blue:#066fd1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-black:#000000;--tblr-white:#ffffff;--tblr-gray:#49566c;--tblr-gray-dark:#182433;--tblr-gray-100:#eef3f6;--tblr-gray-200:#dce1e7;--tblr-gray-300:#b8c4d4;--tblr-gray-400:#8a97ab;--tblr-gray-500:#6c7a91;--tblr-gray-600:#49566c;--tblr-gray-700:#3a4859;--tblr-gray-800:#182433;--tblr-gray-900:#040a11;--tblr-primary:#066fd1;--tblr-secondary:#6c7a91;--tblr-success:#2fb344;--tblr-info:#4299e1;--tblr-warning:#f76707;--tblr-danger:#d63939;--tblr-light:#f6f8fb;--tblr-dark:#182433;--tblr-muted:#6c7a91;--tblr-blue:#066fd1;--tblr-azure:#4299e1;--tblr-indigo:#4263eb;--tblr-purple:#ae3ec9;--tblr-pink:#d6336c;--tblr-red:#d63939;--tblr-orange:#f76707;--tblr-yellow:#f59f00;--tblr-lime:#74b816;--tblr-green:#2fb344;--tblr-teal:#0ca678;--tblr-cyan:#17a2b8;--tblr-x:#000000;--tblr-facebook:#1877f2;--tblr-twitter:#1da1f2;--tblr-linkedin:#0a66c2;--tblr-google:#dc4e41;--tblr-youtube:#ff0000;--tblr-vimeo:#1ab7ea;--tblr-dribbble:#ea4c89;--tblr-github:#181717;--tblr-instagram:#e4405f;--tblr-pinterest:#bd081c;--tblr-vk:#6383a8;--tblr-rss:#ffa500;--tblr-flickr:#0063dc;--tblr-bitbucket:#0052cc;--tblr-tabler:#066fd1;--tblr-primary-rgb:6,111,209;--tblr-secondary-rgb:108,122,145;--tblr-success-rgb:47,179,68;--tblr-info-rgb:66,153,225;--tblr-warning-rgb:247,103,7;--tblr-danger-rgb:214,57,57;--tblr-light-rgb:246,248,251;--tblr-dark-rgb:24,36,51;--tblr-muted-rgb:108,122,145;--tblr-blue-rgb:6,111,209;--tblr-azure-rgb:66,153,225;--tblr-indigo-rgb:66,99,235;--tblr-purple-rgb:174,62,201;--tblr-pink-rgb:214,51,108;--tblr-red-rgb:214,57,57;--tblr-orange-rgb:247,103,7;--tblr-yellow-rgb:245,159,0;--tblr-lime-rgb:116,184,22;--tblr-green-rgb:47,179,68;--tblr-teal-rgb:12,166,120;--tblr-cyan-rgb:23,162,184;--tblr-x-rgb:0,0,0;--tblr-facebook-rgb:24,119,242;--tblr-twitter-rgb:29,161,242;--tblr-linkedin-rgb:10,102,194;--tblr-google-rgb:220,78,65;--tblr-youtube-rgb:255,0,0;--tblr-vimeo-rgb:26,183,234;--tblr-dribbble-rgb:234,76,137;--tblr-github-rgb:24,23,23;--tblr-instagram-rgb:228,64,95;--tblr-pinterest-rgb:189,8,28;--tblr-vk-rgb:99,131,168;--tblr-rss-rgb:255,165,0;--tblr-flickr-rgb:0,99,220;--tblr-bitbucket-rgb:0,82,204;--tblr-tabler-rgb:6,111,209;--tblr-primary-text-emphasis:#022c54;--tblr-secondary-text-emphasis:#2b313a;--tblr-success-text-emphasis:#13481b;--tblr-info-text-emphasis:#1a3d5a;--tblr-warning-text-emphasis:#632903;--tblr-danger-text-emphasis:#561717;--tblr-light-text-emphasis:#3a4859;--tblr-dark-text-emphasis:#3a4859;--tblr-primary-bg-subtle:#cde2f6;--tblr-secondary-bg-subtle:#e2e4e9;--tblr-success-bg-subtle:#d5f0da;--tblr-info-bg-subtle:#d9ebf9;--tblr-warning-bg-subtle:#fde1cd;--tblr-danger-bg-subtle:#f7d7d7;--tblr-light-bg-subtle:#f7f9fb;--tblr-dark-bg-subtle:#8a97ab;--tblr-primary-border-subtle:#9bc5ed;--tblr-secondary-border-subtle:#c4cad3;--tblr-success-border-subtle:#ace1b4;--tblr-info-border-subtle:#b3d6f3;--tblr-warning-border-subtle:#fcc29c;--tblr-danger-border-subtle:#efb0b0;--tblr-light-border-subtle:#dce1e7;--tblr-dark-border-subtle:#6c7a91;--tblr-white-rgb:255,255,255;--tblr-black-rgb:0,0,0;--tblr-font-sans-serif:"Inter Var",Inter,-apple-system,BlinkMacSystemFont,San Francisco,Segoe UI,Roboto,Helvetica Neue,sans-serif;--tblr-font-monospace:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;--tblr-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--tblr-body-font-family:var(--tblr-font-sans-serif);--tblr-body-font-size:0.875rem;--tblr-body-font-weight:400;--tblr-body-line-height:1.4285714286;--tblr-body-color:#182433;--tblr-body-color-rgb:24,36,51;--tblr-body-bg:#f6f8fb;--tblr-body-bg-rgb:246,248,251;--tblr-emphasis-color:#3a4859;--tblr-emphasis-color-rgb:58,72,89;--tblr-secondary-color:rgba(24, 36, 51, 0.75);--tblr-secondary-color-rgb:24,36,51;--tblr-secondary-bg:#dce1e7;--tblr-secondary-bg-rgb:220,225,231;--tblr-tertiary-color:rgba(24, 36, 51, 0.5);--tblr-tertiary-color-rgb:24,36,51;--tblr-tertiary-bg:#eef3f6;--tblr-tertiary-bg-rgb:238,243,246;--tblr-heading-color:inherit;--tblr-link-color:#066fd1;--tblr-link-color-rgb:6,111,209;--tblr-link-decoration:none;--tblr-link-hover-color:#0559a7;--tblr-link-hover-color-rgb:5,89,167;--tblr-link-hover-decoration:underline;--tblr-code-color:var(--tblr-gray-600);--tblr-highlight-color:#182433;--tblr-highlight-bg:#fdeccc;--tblr-border-width:1px;--tblr-border-style:solid;--tblr-border-color:#dce1e7;--tblr-border-color-translucent:rgba(4, 32, 69, 0.1);--tblr-border-radius:6px;--tblr-border-radius-sm:4px;--tblr-border-radius-lg:8px;--tblr-border-radius-xl:1rem;--tblr-border-radius-xxl:2rem;--tblr-border-radius-2xl:var(--tblr-border-radius-xxl);--tblr-border-radius-pill:100rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--tblr-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--tblr-box-shadow-inset:0 0 transparent;--tblr-focus-ring-width:0.25rem;--tblr-focus-ring-opacity:0.25;--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), 0.25);--tblr-form-valid-color:#2fb344;--tblr-form-valid-border-color:#2fb344;--tblr-form-invalid-color:#d63939;--tblr-form-invalid-border-color:#d63939}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{color-scheme:dark;--tblr-body-color:#dce1e7;--tblr-body-color-rgb:220,225,231;--tblr-body-bg:#040a11;--tblr-body-bg-rgb:4,10,17;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-secondary-color:rgba(220, 225, 231, 0.75);--tblr-secondary-color-rgb:220,225,231;--tblr-secondary-bg:#182433;--tblr-secondary-bg-rgb:24,36,51;--tblr-tertiary-color:rgba(220, 225, 231, 0.5);--tblr-tertiary-color-rgb:220,225,231;--tblr-tertiary-bg:#0e1722;--tblr-tertiary-bg-rgb:14,23,34;--tblr-primary-text-emphasis:#6aa9e3;--tblr-secondary-text-emphasis:#a7afbd;--tblr-success-text-emphasis:#82d18f;--tblr-info-text-emphasis:#8ec2ed;--tblr-warning-text-emphasis:#faa46a;--tblr-danger-text-emphasis:#e68888;--tblr-light-text-emphasis:#eef3f6;--tblr-dark-text-emphasis:#b8c4d4;--tblr-primary-bg-subtle:#01162a;--tblr-secondary-bg-subtle:#16181d;--tblr-success-bg-subtle:#09240e;--tblr-info-bg-subtle:#0d1f2d;--tblr-warning-bg-subtle:#311501;--tblr-danger-bg-subtle:#2b0b0b;--tblr-light-bg-subtle:#182433;--tblr-dark-bg-subtle:#0c121a;--tblr-primary-border-subtle:#04437d;--tblr-secondary-border-subtle:#414957;--tblr-success-border-subtle:#1c6b29;--tblr-info-border-subtle:#285c87;--tblr-warning-border-subtle:#943e04;--tblr-danger-border-subtle:#802222;--tblr-light-border-subtle:#3a4859;--tblr-dark-border-subtle:#182433;--tblr-heading-color:inherit;--tblr-link-color:#6aa9e3;--tblr-link-hover-color:#88bae9;--tblr-link-color-rgb:106,169,227;--tblr-link-hover-color-rgb:136,186,233;--tblr-code-color:var(--tblr-gray-300);--tblr-highlight-color:#dce1e7;--tblr-highlight-bg:#624000;--tblr-border-color:#25384f;--tblr-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-form-valid-color:#82d18f;--tblr-form-valid-border-color:#82d18f;--tblr-form-invalid-color:#e68888;--tblr-form-invalid-border-color:#e68888}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--tblr-body-font-family);font-size:var(--tblr-body-font-size);font-weight:var(--tblr-body-font-weight);line-height:var(--tblr-body-line-height);color:var(--tblr-body-color);text-align:var(--tblr-body-text-align);background-color:var(--tblr-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.hr,hr{margin:2rem 0;color:inherit;border:0;border-top:var(--tblr-border-width) solid;opacity:.16}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--tblr-spacer);font-weight:var(--tblr-font-weight-bold);line-height:1.2;color:var(--tblr-heading-color)}.h1,h1{font-size:1.5rem}.h2,h2{font-size:1.25rem}.h3,h3{font-size:1rem}.h4,h4{font-size:.875rem}.h5,h5{font-size:.75rem}.h6,h6{font-size:.625rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--tblr-highlight-color);background-color:var(--tblr-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,1));text-decoration:none}a:hover{--tblr-link-color-rgb:var(--tblr-link-hover-color-rgb);text-decoration:underline}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--tblr-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.85714285em;color:var(--tblr-light)}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.85714285em;color:var(--tblr-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.25rem .5rem;font-size:var(--tblr-font-size-h5);color:var(--tblr-text-secondary-dark);background-color:var(--tblr-code-bg);border-radius:4px}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:var(--tblr-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:.875rem;font-weight:var(--tblr-font-weight-normal)}.display-1{font-size:5rem;font-weight:300;line-height:1.2}.display-2{font-size:4.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}.display-5{font-size:3rem;font-weight:300;line-height:1.2}.display-6{font-size:2rem;font-weight:300;line-height:1.2}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:.875rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#49566c}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--tblr-body-bg);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--tblr-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--tblr-breakpoint-xs:0;--tblr-breakpoint-sm:576px;--tblr-breakpoint-md:768px;--tblr-breakpoint-lg:992px;--tblr-breakpoint-xl:1200px;--tblr-breakpoint-xxl:1400px}.row{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--tblr-gutter-y));margin-right:calc(-.5 * var(--tblr-gutter-x));margin-left:calc(-.5 * var(--tblr-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-top:var(--tblr-gutter-y)}.grid{display:grid;grid-template-rows:repeat(var(--tblr-rows,1),1fr);grid-template-columns:repeat(var(--tblr-columns,12),1fr);gap:var(--tblr-gap,var(--tblr-page-padding))}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media (min-width:576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media (min-width:768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media (min-width:992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media (min-width:1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media (min-width:1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--tblr-gutter-x:0}.g-0,.gy-0{--tblr-gutter-y:0}.g-1,.gx-1{--tblr-gutter-x:0.25rem}.g-1,.gy-1{--tblr-gutter-y:0.25rem}.g-2,.gx-2{--tblr-gutter-x:0.5rem}.g-2,.gy-2{--tblr-gutter-y:0.5rem}.g-3,.gx-3{--tblr-gutter-x:1rem}.g-3,.gy-3{--tblr-gutter-y:1rem}.g-4,.gx-4{--tblr-gutter-x:1.5rem}.g-4,.gy-4{--tblr-gutter-y:1.5rem}.g-5,.gx-5{--tblr-gutter-x:2rem}.g-5,.gy-5{--tblr-gutter-y:2rem}.g-6,.gx-6{--tblr-gutter-x:2.5rem}.g-6,.gy-6{--tblr-gutter-y:2.5rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--tblr-gutter-x:0}.g-sm-0,.gy-sm-0{--tblr-gutter-y:0}.g-sm-1,.gx-sm-1{--tblr-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--tblr-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--tblr-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--tblr-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--tblr-gutter-x:1rem}.g-sm-3,.gy-sm-3{--tblr-gutter-y:1rem}.g-sm-4,.gx-sm-4{--tblr-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--tblr-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--tblr-gutter-x:2rem}.g-sm-5,.gy-sm-5{--tblr-gutter-y:2rem}.g-sm-6,.gx-sm-6{--tblr-gutter-x:2.5rem}.g-sm-6,.gy-sm-6{--tblr-gutter-y:2.5rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--tblr-gutter-x:0}.g-md-0,.gy-md-0{--tblr-gutter-y:0}.g-md-1,.gx-md-1{--tblr-gutter-x:0.25rem}.g-md-1,.gy-md-1{--tblr-gutter-y:0.25rem}.g-md-2,.gx-md-2{--tblr-gutter-x:0.5rem}.g-md-2,.gy-md-2{--tblr-gutter-y:0.5rem}.g-md-3,.gx-md-3{--tblr-gutter-x:1rem}.g-md-3,.gy-md-3{--tblr-gutter-y:1rem}.g-md-4,.gx-md-4{--tblr-gutter-x:1.5rem}.g-md-4,.gy-md-4{--tblr-gutter-y:1.5rem}.g-md-5,.gx-md-5{--tblr-gutter-x:2rem}.g-md-5,.gy-md-5{--tblr-gutter-y:2rem}.g-md-6,.gx-md-6{--tblr-gutter-x:2.5rem}.g-md-6,.gy-md-6{--tblr-gutter-y:2.5rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--tblr-gutter-x:0}.g-lg-0,.gy-lg-0{--tblr-gutter-y:0}.g-lg-1,.gx-lg-1{--tblr-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--tblr-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--tblr-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--tblr-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--tblr-gutter-x:1rem}.g-lg-3,.gy-lg-3{--tblr-gutter-y:1rem}.g-lg-4,.gx-lg-4{--tblr-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--tblr-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--tblr-gutter-x:2rem}.g-lg-5,.gy-lg-5{--tblr-gutter-y:2rem}.g-lg-6,.gx-lg-6{--tblr-gutter-x:2.5rem}.g-lg-6,.gy-lg-6{--tblr-gutter-y:2.5rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--tblr-gutter-x:0}.g-xl-0,.gy-xl-0{--tblr-gutter-y:0}.g-xl-1,.gx-xl-1{--tblr-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--tblr-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--tblr-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--tblr-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--tblr-gutter-x:1rem}.g-xl-3,.gy-xl-3{--tblr-gutter-y:1rem}.g-xl-4,.gx-xl-4{--tblr-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--tblr-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--tblr-gutter-x:2rem}.g-xl-5,.gy-xl-5{--tblr-gutter-y:2rem}.g-xl-6,.gx-xl-6{--tblr-gutter-x:2.5rem}.g-xl-6,.gy-xl-6{--tblr-gutter-y:2.5rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--tblr-gutter-x:0}.g-xxl-0,.gy-xxl-0{--tblr-gutter-y:0}.g-xxl-1,.gx-xxl-1{--tblr-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--tblr-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--tblr-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--tblr-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--tblr-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--tblr-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--tblr-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--tblr-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--tblr-gutter-x:2rem}.g-xxl-5,.gy-xxl-5{--tblr-gutter-y:2rem}.g-xxl-6,.gx-xxl-6{--tblr-gutter-x:2.5rem}.g-xxl-6,.gy-xxl-6{--tblr-gutter-y:2.5rem}}.markdown>table,.table{--tblr-table-color-type:initial;--tblr-table-bg-type:initial;--tblr-table-color-state:initial;--tblr-table-bg-state:initial;--tblr-table-color:inherit;--tblr-table-bg:transparent;--tblr-table-border-color:var(--tblr-border-color-translucent);--tblr-table-accent-bg:transparent;--tblr-table-striped-color:inherit;--tblr-table-striped-bg:var(--tblr-bg-surface-tertiary);--tblr-table-active-color:inherit;--tblr-table-active-bg:var(--tblr-active-bg);--tblr-table-hover-color:inherit;--tblr-table-hover-bg:rgba(var(--tblr-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--tblr-table-border-color)}.markdown>table>:not(caption)>*>*,.table>:not(caption)>*>*{padding:.75rem .75rem;color:var(--tblr-table-color-state,var(--tblr-table-color-type,var(--tblr-table-color)));background-color:var(--tblr-table-bg);border-bottom-width:var(--tblr-border-width);box-shadow:inset 0 0 0 9999px var(--tblr-table-bg-state,var(--tblr-table-bg-type,var(--tblr-table-accent-bg)))}.markdown>table>tbody,.table>tbody{vertical-align:inherit}.markdown>table>thead,.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--tblr-border-width) * 2) solid var(--tblr-border-color-translucent)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.markdown>table>:not(caption)>*,.table-bordered>:not(caption)>*{border-width:var(--tblr-border-width) 0}.markdown>table>:not(caption)>*>*,.table-bordered>:not(caption)>*>*{border-width:0 var(--tblr-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(2n)>*{--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--tblr-table-color-type:var(--tblr-table-striped-color);--tblr-table-bg-type:var(--tblr-table-striped-bg)}.table-active{--tblr-table-color-state:var(--tblr-table-active-color);--tblr-table-bg-state:var(--tblr-table-active-bg)}.table-hover>tbody>tr:hover>*{--tblr-table-color-state:var(--tblr-table-hover-color);--tblr-table-bg-state:var(--tblr-table-hover-bg)}.table-primary{--tblr-table-color:#182433;--tblr-table-bg:#cde2f6;--tblr-table-border-color:#a9bccf;--tblr-table-striped-bg:#c4d9ec;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#bbcfe3;--tblr-table-active-color:#f6f8fb;--tblr-table-hover-bg:#bfd4e7;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-secondary{--tblr-table-color:#182433;--tblr-table-bg:#e2e4e9;--tblr-table-border-color:#babec5;--tblr-table-striped-bg:#d8dae0;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#ced1d7;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#d3d6db;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-success{--tblr-table-color:#182433;--tblr-table-bg:#d5f0da;--tblr-table-border-color:#afc7b9;--tblr-table-striped-bg:#cce6d2;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c2dcc9;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#c7e1cd;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-info{--tblr-table-color:#182433;--tblr-table-bg:#d9ebf9;--tblr-table-border-color:#b2c3d1;--tblr-table-striped-bg:#cfe1ef;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#c6d7e5;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#cbdcea;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-warning{--tblr-table-color:#182433;--tblr-table-bg:#fde1cd;--tblr-table-border-color:#cfbbae;--tblr-table-striped-bg:#f2d8c5;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e6cebe;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#ecd3c1;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-danger{--tblr-table-color:#182433;--tblr-table-bg:#f7d7d7;--tblr-table-border-color:#cab3b6;--tblr-table-striped-bg:#eccecf;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e1c5c7;--tblr-table-active-color:#f6f8fb;--tblr-table-hover-bg:#e6cacb;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-light{--tblr-table-color:#182433;--tblr-table-bg:#f6f8fb;--tblr-table-border-color:#caced3;--tblr-table-striped-bg:#ebedf1;--tblr-table-striped-color:#182433;--tblr-table-active-bg:#e0e3e7;--tblr-table-active-color:#182433;--tblr-table-hover-bg:#e5e8ec;--tblr-table-hover-color:#182433;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-dark{--tblr-table-color:#f6f8fb;--tblr-table-bg:#182433;--tblr-table-border-color:#444e5b;--tblr-table-striped-bg:#232f3d;--tblr-table-striped-color:#f6f8fb;--tblr-table-active-bg:#2e3947;--tblr-table-active-color:#f6f8fb;--tblr-table-hover-bg:#293442;--tblr-table-hover-color:#f6f8fb;color:var(--tblr-table-color);border-color:var(--tblr-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-size:.875rem;font-weight:var(--tblr-font-weight-medium)}.col-form-label{padding-top:calc(.4375rem + var(--tblr-border-width));padding-bottom:calc(.4375rem + var(--tblr-border-width));margin-bottom:0;font-size:inherit;font-weight:var(--tblr-font-weight-medium);line-height:1.4285714286}.col-form-label-lg{padding-top:calc(.6875rem + var(--tblr-border-width));padding-bottom:calc(.6875rem + var(--tblr-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.0625rem + var(--tblr-border-width));padding-bottom:calc(.0625rem + var(--tblr-border-width));font-size:.75rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--tblr-secondary-color)}.form-control{display:block;width:100%;padding:.4375rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-clip:padding-box;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--tblr-body-color);background-color:var(--tblr-bg-forms);border-color:#83b7e8;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.4285714286em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:#8a97ab;opacity:1}.form-control::placeholder{color:#8a97ab;opacity:1}.form-control:disabled{background-color:var(--tblr-bg-surface-secondary);opacity:1}.form-control::file-selector-button{padding:.4375rem .75rem;margin:-.4375rem -.75rem;margin-inline-end:.75rem;color:var(--tblr-body-color);background-color:var(--tblr-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--tblr-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.4375rem 0;margin-bottom:0;line-height:1.4285714286;color:var(--tblr-body-color);background-color:transparent;border:solid transparent;border-width:var(--tblr-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.4285714286em + .125rem + calc(var(--tblr-border-width) * 2));padding:.0625rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-control-sm::file-selector-button{padding:.0625rem .25rem;margin:-.0625rem -.25rem;margin-inline-end:.25rem}.form-control-lg{min-height:calc(1.4285714286em + 1.375rem + calc(var(--tblr-border-width) * 2));padding:.6875rem 1.5rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.form-control-lg::file-selector-button{padding:.6875rem 1.5rem;margin:-.6875rem -1.5rem;margin-inline-end:1.5rem}textarea.form-control{min-height:calc(1.4285714286em + .875rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.4285714286em + .125rem + calc(var(--tblr-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.4285714286em + 1.375rem + calc(var(--tblr-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.4285714286em + .875rem + calc(var(--tblr-border-width) * 2));padding:.4375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--tblr-border-radius)}.form-control-color.form-control-sm{height:calc(1.4285714286em + .125rem + calc(var(--tblr-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.4285714286em + 1.375rem + calc(var(--tblr-border-width) * 2))}.form-select{--tblr-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%238a97ab' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.4375rem 2.25rem .4375rem .75rem;font-family:var(--tblr-font-sans-serif);font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-bg-forms);background-image:var(--tblr-form-select-bg-img),var(--tblr-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-box-shadow-input);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#83b7e8;outline:0;box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--tblr-bg-surface-secondary)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--tblr-body-color)}.form-select-sm{padding-top:.0625rem;padding-bottom:.0625rem;padding-left:.25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.form-select-lg{padding-top:.6875rem;padding-bottom:.6875rem;padding-left:1.5rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}[data-bs-theme=dark] .form-select,body[data-bs-theme=dark] [data-bs-theme=light] .form-select{--tblr-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dce1e7' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.25rem;padding-left:2rem;margin-bottom:.75rem}.form-check .form-check-input{float:left;margin-left:-2rem}.form-check-reverse{padding-right:2rem;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-2rem;margin-left:0}.form-check-input{--tblr-form-check-bg:var(--tblr-bg-forms);flex-shrink:0;width:1.25rem;height:1.25rem;margin-top:.0892857143rem;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--tblr-form-check-bg);background-image:var(--tblr-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:var(--tblr-border-radius)}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#83b7e8;outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-check-input:checked{background-color:var(--tblr-primary);border-color:var(--tblr-border-color-translucent)}.form-check-input:checked[type=checkbox]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:var(--tblr-primary);border-color:var(--tblr-primary);--tblr-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.7}.form-switch{padding-left:2.5rem}.form-switch .form-check-input{--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23dce1e7'/%3e%3c/svg%3e");width:2rem;margin-left:-2.5rem;background-image:var(--tblr-form-switch-bg);background-position:left center;border-radius:2rem;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2383b7e8'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5rem;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5rem;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.4}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--tblr-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.25rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f8fb,0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.375rem;-webkit-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b4d4f1}.form-range::-webkit-slider-runnable-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:var(--tblr-box-shadow-inset)}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:var(--tblr-primary);border:2px var(--tblr-border-style) #fff;border-radius:1rem;box-shadow:0 .1rem .25rem rgba(0,0,0,.1);-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b4d4f1}.form-range::-moz-range-track{width:100%;height:.25rem;color:transparent;cursor:pointer;background-color:var(--tblr-border-color);border-color:transparent;border-radius:1rem;box-shadow:var(--tblr-box-shadow-inset)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--tblr-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--tblr-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--tblr-border-width) * 2));min-height:calc(3.5rem + calc(var(--tblr-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--tblr-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--tblr-bg-forms);border-radius:var(--tblr-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--tblr-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--tblr-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#49566c}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--tblr-bg-surface-secondary)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.4375rem .75rem;font-size:.875rem;font-weight:400;line-height:1.4285714286;color:var(--tblr-gray-500);text-align:center;white-space:nowrap;background-color:var(--tblr-bg-surface-secondary);border:var(--tblr-border-width) solid var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.6875rem 1.5rem;font-size:1.25rem;border-radius:var(--tblr-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.0625rem .25rem;font-size:.75rem;border-radius:var(--tblr-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--tblr-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--tblr-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-1) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-success);border-radius:var(--tblr-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--tblr-form-valid-border-color);padding-right:calc(1.4285714286em + .875rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.3571428572em + .21875rem) center;background-size:calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.4285714286em + .875rem);background-position:top calc(.3571428572em + .21875rem) right calc(.3571428572em + .21875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--tblr-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%232fb344' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--tblr-form-valid-border-color);box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.4285714286em + .875rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--tblr-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--tblr-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--tblr-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--tblr-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:var(--tblr-spacer-1) var(--tblr-spacer-2);margin-top:.1rem;font-size:.765625rem;color:#fff;background-color:var(--tblr-danger);border-radius:var(--tblr-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--tblr-form-invalid-border-color);padding-right:calc(1.4285714286em + .875rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.3571428572em + .21875rem) center;background-size:calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.4285714286em + .875rem);background-position:top calc(.3571428572em + .21875rem) right calc(.3571428572em + .21875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--tblr-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23d63939' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cline x1='18' y1='6' x2='6' y2='18'%3e%3c/line%3e%3cline x1='6' y1='6' x2='18' y2='18'%3e%3c/line%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.7142857143em + .4375rem) calc(.7142857143em + .4375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--tblr-form-invalid-border-color);box-shadow:var(--tblr-box-shadow-input),0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.4285714286em + .875rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--tblr-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--tblr-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--tblr-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--tblr-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--tblr-btn-padding-x:1rem;--tblr-btn-padding-y:0.4375rem;--tblr-btn-font-family:var(--tblr-font-sans-serif);--tblr-btn-font-size:0.875rem;--tblr-btn-font-weight:var(--tblr-font-weight-medium);--tblr-btn-line-height:1.4285714286;--tblr-btn-color:var(--tblr-body-color);--tblr-btn-bg:transparent;--tblr-btn-border-width:var(--tblr-border-width);--tblr-btn-border-color:transparent;--tblr-btn-border-radius:var(--tblr-border-radius);--tblr-btn-hover-border-color:transparent;--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-disabled-opacity:0.4;--tblr-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--tblr-btn-padding-y) var(--tblr-btn-padding-x);font-family:var(--tblr-btn-font-family);font-size:var(--tblr-btn-font-size);font-weight:var(--tblr-btn-font-weight);line-height:var(--tblr-btn-line-height);color:var(--tblr-btn-color);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--tblr-btn-border-width) solid var(--tblr-btn-border-color);border-radius:var(--tblr-btn-border-radius);background-color:var(--tblr-btn-bg);box-shadow:var(--tblr-btn-box-shadow);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--tblr-btn-hover-color);text-decoration:none;background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--tblr-btn-color);background-color:var(--tblr-btn-bg);border-color:var(--tblr-btn-border-color)}.btn:focus-visible{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--tblr-btn-hover-border-color);outline:0;box-shadow:var(--tblr-btn-box-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--tblr-btn-active-color);background-color:var(--tblr-btn-active-bg);border-color:var(--tblr-btn-active-border-color);box-shadow:var(--tblr-btn-active-shadow)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--tblr-btn-active-shadow),var(--tblr-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--tblr-btn-disabled-color);pointer-events:none;background-color:var(--tblr-btn-disabled-bg);border-color:var(--tblr-btn-disabled-border-color);opacity:var(--tblr-btn-disabled-opacity);box-shadow:none}.btn-link{--tblr-btn-font-weight:400;--tblr-btn-color:var(--tblr-link-color);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-link-hover-color);--tblr-btn-hover-border-color:transparent;--tblr-btn-active-color:var(--tblr-link-hover-color);--tblr-btn-active-border-color:transparent;--tblr-btn-disabled-color:#49566c;--tblr-btn-disabled-border-color:transparent;--tblr-btn-box-shadow:0 0 0 #000;--tblr-btn-focus-shadow-rgb:42,132,215;text-decoration:none}.btn-link:focus-visible,.btn-link:hover{text-decoration:underline}.btn-link:focus-visible{color:var(--tblr-btn-color)}.btn-link:hover{color:var(--tblr-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--tblr-btn-padding-y:0.6875rem;--tblr-btn-padding-x:1.5rem;--tblr-btn-font-size:1.25rem;--tblr-btn-border-radius:var(--tblr-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--tblr-btn-padding-y:0.0625rem;--tblr-btn-padding-x:0.25rem;--tblr-btn-font-size:0.75rem;--tblr-btn-border-radius:var(--tblr-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.dropdown-menu{--tblr-dropdown-zindex:1000;--tblr-dropdown-min-width:11rem;--tblr-dropdown-padding-x:0;--tblr-dropdown-padding-y:0.25rem;--tblr-dropdown-spacer:1px;--tblr-dropdown-font-size:0.875rem;--tblr-dropdown-color:var(--tblr-body-color);--tblr-dropdown-bg:var(--tblr-bg-surface);--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-border-radius:var(--tblr-border-radius);--tblr-dropdown-border-width:var(--tblr-border-width);--tblr-dropdown-inner-border-radius:calc(var(--tblr-border-radius) - var(--tblr-border-width));--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-divider-margin-y:var(--tblr-spacer-2);--tblr-dropdown-box-shadow:var(--tblr-box-shadow-dropdown);--tblr-dropdown-link-color:inherit;--tblr-dropdown-link-hover-color:inherit;--tblr-dropdown-link-hover-bg:rgba(var(--tblr-secondary-rgb), 0.08);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:var(--tblr-tertiary-color);--tblr-dropdown-item-padding-x:0.75rem;--tblr-dropdown-item-padding-y:0.5rem;--tblr-dropdown-header-color:#49566c;--tblr-dropdown-header-padding-x:0.75rem;--tblr-dropdown-header-padding-y:0.25rem;position:absolute;z-index:var(--tblr-dropdown-zindex);display:none;min-width:var(--tblr-dropdown-min-width);padding:var(--tblr-dropdown-padding-y) var(--tblr-dropdown-padding-x);margin:0;font-size:var(--tblr-dropdown-font-size);color:var(--tblr-dropdown-color);text-align:left;list-style:none;background-color:var(--tblr-dropdown-bg);background-clip:padding-box;border:var(--tblr-dropdown-border-width) solid var(--tblr-dropdown-border-color);border-radius:var(--tblr-dropdown-border-radius);box-shadow:var(--tblr-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--tblr-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--tblr-dropdown-spacer)}.dropup .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(135deg)}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--tblr-dropdown-spacer)}.dropend .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-135deg)}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--tblr-dropdown-spacer)}.dropstart .dropdown-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(45deg)}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--tblr-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--tblr-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--tblr-dropdown-link-color);text-align:inherit;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--tblr-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--tblr-dropdown-link-hover-color);text-decoration:none;background-color:var(--tblr-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--tblr-dropdown-link-active-color);text-decoration:none;background-color:var(--tblr-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--tblr-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--tblr-dropdown-header-padding-y) var(--tblr-dropdown-header-padding-x);margin-bottom:0;font-size:.765625rem;color:var(--tblr-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--tblr-dropdown-item-padding-y) var(--tblr-dropdown-item-padding-x);color:var(--tblr-dropdown-link-color)}.dropdown-menu-dark{--tblr-dropdown-color:#b8c4d4;--tblr-dropdown-bg:#182433;--tblr-dropdown-border-color:var(--tblr-border-color-translucent);--tblr-dropdown-box-shadow: ;--tblr-dropdown-link-color:#b8c4d4;--tblr-dropdown-link-hover-color:#ffffff;--tblr-dropdown-divider-bg:var(--tblr-border-color-translucent);--tblr-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--tblr-dropdown-link-active-color:var(--tblr-primary);--tblr-dropdown-link-active-bg:var(--tblr-active-bg);--tblr-dropdown-link-disabled-color:#6c7a91;--tblr-dropdown-header-color:#6c7a91}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--tblr-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--tblr-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.1875rem;padding-left:.1875rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group.show .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.show .dropdown-toggle.btn-link{box-shadow:none}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--tblr-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--tblr-nav-link-padding-x:0.75rem;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-font-weight: ;--tblr-nav-link-color:var(--tblr-gray-500);--tblr-nav-link-hover-color:var(--tblr-link-hover-color);--tblr-nav-link-disabled-color:var(--tblr-disabled-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--tblr-nav-link-padding-y) var(--tblr-nav-link-padding-x);font-size:var(--tblr-nav-link-font-size);font-weight:var(--tblr-nav-link-font-weight);color:var(--tblr-nav-link-color);background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--tblr-nav-link-hover-color);text-decoration:none}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.nav-link.disabled,.nav-link:disabled{color:var(--tblr-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--tblr-nav-tabs-border-width:var(--tblr-border-width);--tblr-nav-tabs-border-color:var(--tblr-border-color);--tblr-nav-tabs-border-radius:var(--tblr-border-radius);--tblr-nav-tabs-link-hover-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);--tblr-nav-tabs-link-active-color:var(--tblr-body-color);--tblr-nav-tabs-link-active-bg:var(--tblr-body-bg);--tblr-nav-tabs-link-active-border-color:var(--tblr-border-color) var(--tblr-border-color) var(--tblr-border-color);border-bottom:var(--tblr-nav-tabs-border-width) solid var(--tblr-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--tblr-nav-tabs-border-width));border:var(--tblr-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--tblr-nav-tabs-border-radius);border-top-right-radius:var(--tblr-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--tblr-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--tblr-nav-tabs-link-active-color);background-color:var(--tblr-nav-tabs-link-active-bg);border-color:var(--tblr-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--tblr-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--tblr-nav-pills-border-radius:var(--tblr-border-radius);--tblr-nav-pills-link-active-color:var(--tblr-primary);--tblr-nav-pills-link-active-bg:var(--tblr-active-bg)}.nav-pills .nav-link{border-radius:var(--tblr-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--tblr-nav-pills-link-active-color);background-color:var(--tblr-nav-pills-link-active-bg)}.nav-underline{--tblr-nav-underline-gap:1rem;--tblr-nav-underline-border-width:0.125rem;--tblr-nav-underline-link-active-color:var(--tblr-emphasis-color);gap:var(--tblr-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--tblr-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:600;color:var(--tblr-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--tblr-navbar-padding-x:0;--tblr-navbar-padding-y:0.25rem;--tblr-navbar-color:var(--tblr-secondary);--tblr-navbar-hover-color:var(--tblr-body-color);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:var(--tblr-body-color);--tblr-navbar-brand-padding-y:0.5rem;--tblr-navbar-brand-margin-end:1rem;--tblr-navbar-brand-font-size:1.25rem;--tblr-navbar-brand-color:var(--tblr-body-color);--tblr-navbar-brand-hover-color:var(--tblr-body-color);--tblr-navbar-nav-link-padding-x:0.75rem;--tblr-navbar-toggler-padding-y:0;--tblr-navbar-toggler-padding-x:0;--tblr-navbar-toggler-font-size:1rem;--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 36, 51, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--tblr-navbar-toggler-border-color:rgba(var(--tblr-emphasis-color-rgb), 0.15);--tblr-navbar-toggler-border-radius:var(--tblr-border-radius);--tblr-navbar-toggler-focus-width:0;--tblr-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--tblr-navbar-padding-y) var(--tblr-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--tblr-navbar-brand-padding-y);padding-bottom:var(--tblr-navbar-brand-padding-y);margin-right:var(--tblr-navbar-brand-margin-end);font-size:var(--tblr-navbar-brand-font-size);color:var(--tblr-navbar-brand-color);white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--tblr-navbar-brand-hover-color);text-decoration:none}.navbar-nav{--tblr-nav-link-padding-x:0;--tblr-nav-link-padding-y:0.5rem;--tblr-nav-link-font-weight: ;--tblr-nav-link-color:var(--tblr-navbar-color);--tblr-nav-link-hover-color:var(--tblr-navbar-hover-color);--tblr-nav-link-disabled-color:var(--tblr-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--tblr-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--tblr-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--tblr-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--tblr-navbar-toggler-padding-y) var(--tblr-navbar-toggler-padding-x);font-size:var(--tblr-navbar-toggler-font-size);line-height:1;color:var(--tblr-navbar-color);background-color:transparent;border:var(--tblr-border-width) solid var(--tblr-navbar-toggler-border-color);border-radius:var(--tblr-navbar-toggler-border-radius);transition:var(--tblr-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--tblr-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--tblr-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--tblr-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--tblr-navbar-nav-link-padding-x);padding-left:var(--tblr-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;box-shadow:none;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark],body[data-bs-theme=dark] .navbar[data-bs-theme=light]{--tblr-navbar-color:rgba(255, 255, 255, 0.7);--tblr-navbar-hover-color:rgba(255, 255, 255, 0.75);--tblr-navbar-disabled-color:var(--tblr-disabled-color);--tblr-navbar-active-color:#ffffff;--tblr-navbar-brand-color:#ffffff;--tblr-navbar-brand-hover-color:#ffffff;--tblr-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon,body[data-bs-theme=dark] [data-bs-theme=light] .navbar-toggler-icon{--tblr-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.7%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--tblr-card-spacer-y:1rem;--tblr-card-spacer-x:1.25rem;--tblr-card-title-spacer-y:1.25rem;--tblr-card-title-color: ;--tblr-card-subtitle-color: ;--tblr-card-border-width:var(--tblr-border-width);--tblr-card-border-color:var(--tblr-border-color-translucent);--tblr-card-border-radius:var(--tblr-border-radius-lg);--tblr-card-box-shadow:var(--tblr-box-shadow-card);--tblr-card-inner-border-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));--tblr-card-cap-padding-y:1rem;--tblr-card-cap-padding-x:1.25rem;--tblr-card-cap-bg:var(--tblr-bg-surface-tertiary);--tblr-card-cap-color:inherit;--tblr-card-height: ;--tblr-card-color:inherit;--tblr-card-bg:var(--tblr-bg-surface);--tblr-card-img-overlay-padding:1rem;--tblr-card-group-margin:1.5rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--tblr-card-height);color:var(--tblr-body-color);word-wrap:break-word;background-color:var(--tblr-card-bg);background-clip:border-box;border:var(--tblr-card-border-width) solid var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius);box-shadow:var(--tblr-card-box-shadow)}.card>.hr,.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--tblr-card-spacer-y) var(--tblr-card-spacer-x);color:var(--tblr-card-color)}.card-title{margin-bottom:var(--tblr-card-title-spacer-y);color:var(--tblr-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--tblr-card-title-spacer-y));margin-bottom:0;color:var(--tblr-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:var(--tblr-card-spacer-x)}.card-header{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);margin-bottom:0;color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-bottom:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-header:first-child{border-radius:var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius) 0 0}.card-footer{padding:var(--tblr-card-cap-padding-y) var(--tblr-card-cap-padding-x);color:var(--tblr-card-cap-color);background-color:var(--tblr-card-cap-bg);border-top:var(--tblr-card-border-width) solid var(--tblr-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--tblr-card-inner-border-radius) var(--tblr-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-bottom:calc(-1 * var(--tblr-card-cap-padding-y));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--tblr-card-bg);border-bottom-color:var(--tblr-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--tblr-card-cap-padding-x));margin-left:calc(-.5 * var(--tblr-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--tblr-card-img-overlay-padding);border-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--tblr-card-inner-border-radius);border-top-right-radius:var(--tblr-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--tblr-card-inner-border-radius);border-bottom-left-radius:var(--tblr-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--tblr-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.breadcrumb{--tblr-breadcrumb-padding-x:0;--tblr-breadcrumb-padding-y:0;--tblr-breadcrumb-margin-bottom:1rem;--tblr-breadcrumb-bg: ;--tblr-breadcrumb-border-radius: ;--tblr-breadcrumb-divider-color:var(--tblr-gray-500);--tblr-breadcrumb-item-padding-x:0.5rem;--tblr-breadcrumb-item-active-color:inherit;display:flex;flex-wrap:wrap;padding:var(--tblr-breadcrumb-padding-y) var(--tblr-breadcrumb-padding-x);margin-bottom:var(--tblr-breadcrumb-margin-bottom);font-size:var(--tblr-breadcrumb-font-size);list-style:none;background-color:var(--tblr-breadcrumb-bg);border-radius:var(--tblr-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--tblr-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--tblr-breadcrumb-item-padding-x);color:var(--tblr-breadcrumb-divider-color);content:var(--tblr-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--tblr-breadcrumb-item-active-color)}.pagination{--tblr-pagination-padding-x:0.25rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.875rem;--tblr-pagination-color:var(--tblr-gray-500);--tblr-pagination-bg:transparent;--tblr-pagination-border-width:0;--tblr-pagination-border-color:var(--tblr-border-color);--tblr-pagination-border-radius:var(--tblr-border-radius);--tblr-pagination-hover-color:var(--tblr-link-hover-color);--tblr-pagination-hover-bg:var(--tblr-tertiary-bg);--tblr-pagination-hover-border-color:var(--tblr-border-color);--tblr-pagination-focus-color:var(--tblr-link-hover-color);--tblr-pagination-focus-bg:var(--tblr-secondary-bg);--tblr-pagination-focus-box-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-pagination-active-color:#ffffff;--tblr-pagination-active-bg:var(--tblr-primary);--tblr-pagination-active-border-color:var(--tblr-primary);--tblr-pagination-disabled-color:var(--tblr-disabled-color);--tblr-pagination-disabled-bg:transparent;--tblr-pagination-disabled-border-color:var(--tblr-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--tblr-pagination-padding-y) var(--tblr-pagination-padding-x);font-size:var(--tblr-pagination-font-size);color:var(--tblr-pagination-color);background-color:var(--tblr-pagination-bg);border:var(--tblr-pagination-border-width) solid var(--tblr-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--tblr-pagination-hover-color);text-decoration:none;background-color:var(--tblr-pagination-hover-bg);border-color:var(--tblr-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--tblr-pagination-focus-color);background-color:var(--tblr-pagination-focus-bg);outline:0;box-shadow:var(--tblr-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--tblr-pagination-active-color);background-color:var(--tblr-pagination-active-bg);border-color:var(--tblr-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--tblr-pagination-disabled-color);pointer-events:none;background-color:var(--tblr-pagination-disabled-bg);border-color:var(--tblr-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--tblr-pagination-border-radius);border-bottom-left-radius:var(--tblr-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--tblr-pagination-border-radius);border-bottom-right-radius:var(--tblr-pagination-border-radius)}.pagination-lg{--tblr-pagination-padding-x:1.5rem;--tblr-pagination-padding-y:0.75rem;--tblr-pagination-font-size:1.09375rem;--tblr-pagination-border-radius:var(--tblr-border-radius-lg)}.pagination-sm{--tblr-pagination-padding-x:0.5rem;--tblr-pagination-padding-y:0.25rem;--tblr-pagination-font-size:0.765625rem;--tblr-pagination-border-radius:var(--tblr-border-radius-sm)}@keyframes progress-bar-stripes{0%{background-position-x:0.5rem}}.progress,.progress-stacked{--tblr-progress-height:0.5rem;--tblr-progress-font-size:0.65625rem;--tblr-progress-bg:var(--tblr-border-color);--tblr-progress-border-radius:var(--tblr-border-radius);--tblr-progress-box-shadow:var(--tblr-box-shadow-inset);--tblr-progress-bar-color:#ffffff;--tblr-progress-bar-bg:var(--tblr-primary);--tblr-progress-bar-transition:width 0.6s ease;display:flex;height:var(--tblr-progress-height);overflow:hidden;font-size:var(--tblr-progress-font-size);background-color:var(--tblr-progress-bg);border-radius:var(--tblr-progress-border-radius);box-shadow:var(--tblr-progress-box-shadow)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--tblr-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--tblr-progress-bar-bg);transition:var(--tblr-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--tblr-progress-height) var(--tblr-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--tblr-list-group-color:var(--tblr-body-color);--tblr-list-group-bg:inherit;--tblr-list-group-border-color:var(--tblr-border-color);--tblr-list-group-border-width:var(--tblr-border-width);--tblr-list-group-border-radius:var(--tblr-border-radius);--tblr-list-group-item-padding-x:1.25rem;--tblr-list-group-item-padding-y:1rem;--tblr-list-group-action-color:inherit;--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:rgba(var(--tblr-secondary-rgb), 0.08);--tblr-list-group-action-active-color:var(--tblr-body-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-bg);--tblr-list-group-disabled-color:var(--tblr-secondary-color);--tblr-list-group-disabled-bg:inherit;--tblr-list-group-active-color:inherit;--tblr-list-group-active-bg:var(--tblr-active-bg);--tblr-list-group-active-border-color:var(--tblr-border-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--tblr-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--tblr-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--tblr-list-group-action-hover-color);text-decoration:none;background-color:var(--tblr-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--tblr-list-group-action-active-color);background-color:var(--tblr-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--tblr-list-group-item-padding-y) var(--tblr-list-group-item-padding-x);color:var(--tblr-list-group-color);background-color:var(--tblr-list-group-bg);border:var(--tblr-list-group-border-width) solid var(--tblr-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--tblr-list-group-disabled-color);pointer-events:none;background-color:var(--tblr-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--tblr-list-group-active-color);background-color:var(--tblr-list-group-active-bg);border-color:var(--tblr-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--tblr-list-group-border-width));border-top-width:var(--tblr-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--tblr-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--tblr-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--tblr-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--tblr-list-group-border-width));border-left-width:var(--tblr-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--tblr-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--tblr-list-group-color:var(--tblr-primary-text-emphasis);--tblr-list-group-bg:var(--tblr-primary-bg-subtle);--tblr-list-group-border-color:var(--tblr-primary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-primary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-primary-border-subtle);--tblr-list-group-active-color:var(--tblr-primary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-primary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-primary-text-emphasis)}.list-group-item-secondary{--tblr-list-group-color:var(--tblr-secondary-text-emphasis);--tblr-list-group-bg:var(--tblr-secondary-bg-subtle);--tblr-list-group-border-color:var(--tblr-secondary-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-secondary-border-subtle);--tblr-list-group-active-color:var(--tblr-secondary-bg-subtle);--tblr-list-group-active-bg:var(--tblr-secondary-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-secondary-text-emphasis)}.list-group-item-success{--tblr-list-group-color:var(--tblr-success-text-emphasis);--tblr-list-group-bg:var(--tblr-success-bg-subtle);--tblr-list-group-border-color:var(--tblr-success-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-success-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-success-border-subtle);--tblr-list-group-active-color:var(--tblr-success-bg-subtle);--tblr-list-group-active-bg:var(--tblr-success-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-success-text-emphasis)}.list-group-item-info{--tblr-list-group-color:var(--tblr-info-text-emphasis);--tblr-list-group-bg:var(--tblr-info-bg-subtle);--tblr-list-group-border-color:var(--tblr-info-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-info-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-info-border-subtle);--tblr-list-group-active-color:var(--tblr-info-bg-subtle);--tblr-list-group-active-bg:var(--tblr-info-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-info-text-emphasis)}.list-group-item-warning{--tblr-list-group-color:var(--tblr-warning-text-emphasis);--tblr-list-group-bg:var(--tblr-warning-bg-subtle);--tblr-list-group-border-color:var(--tblr-warning-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-warning-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-warning-border-subtle);--tblr-list-group-active-color:var(--tblr-warning-bg-subtle);--tblr-list-group-active-bg:var(--tblr-warning-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-warning-text-emphasis)}.list-group-item-danger{--tblr-list-group-color:var(--tblr-danger-text-emphasis);--tblr-list-group-bg:var(--tblr-danger-bg-subtle);--tblr-list-group-border-color:var(--tblr-danger-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-danger-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-danger-border-subtle);--tblr-list-group-active-color:var(--tblr-danger-bg-subtle);--tblr-list-group-active-bg:var(--tblr-danger-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-danger-text-emphasis)}.list-group-item-light{--tblr-list-group-color:var(--tblr-light-text-emphasis);--tblr-list-group-bg:var(--tblr-light-bg-subtle);--tblr-list-group-border-color:var(--tblr-light-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-light-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-light-border-subtle);--tblr-list-group-active-color:var(--tblr-light-bg-subtle);--tblr-list-group-active-bg:var(--tblr-light-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-light-text-emphasis)}.list-group-item-dark{--tblr-list-group-color:var(--tblr-dark-text-emphasis);--tblr-list-group-bg:var(--tblr-dark-bg-subtle);--tblr-list-group-border-color:var(--tblr-dark-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dark-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dark-border-subtle);--tblr-list-group-active-color:var(--tblr-dark-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dark-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dark-text-emphasis)}.list-group-item-muted{--tblr-list-group-color:var(--tblr-muted-text-emphasis);--tblr-list-group-bg:var(--tblr-muted-bg-subtle);--tblr-list-group-border-color:var(--tblr-muted-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-muted-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-muted-border-subtle);--tblr-list-group-active-color:var(--tblr-muted-bg-subtle);--tblr-list-group-active-bg:var(--tblr-muted-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-muted-text-emphasis)}.list-group-item-blue{--tblr-list-group-color:var(--tblr-blue-text-emphasis);--tblr-list-group-bg:var(--tblr-blue-bg-subtle);--tblr-list-group-border-color:var(--tblr-blue-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-blue-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-blue-border-subtle);--tblr-list-group-active-color:var(--tblr-blue-bg-subtle);--tblr-list-group-active-bg:var(--tblr-blue-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-blue-text-emphasis)}.list-group-item-azure{--tblr-list-group-color:var(--tblr-azure-text-emphasis);--tblr-list-group-bg:var(--tblr-azure-bg-subtle);--tblr-list-group-border-color:var(--tblr-azure-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-azure-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-azure-border-subtle);--tblr-list-group-active-color:var(--tblr-azure-bg-subtle);--tblr-list-group-active-bg:var(--tblr-azure-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-azure-text-emphasis)}.list-group-item-indigo{--tblr-list-group-color:var(--tblr-indigo-text-emphasis);--tblr-list-group-bg:var(--tblr-indigo-bg-subtle);--tblr-list-group-border-color:var(--tblr-indigo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-indigo-border-subtle);--tblr-list-group-active-color:var(--tblr-indigo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-indigo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-indigo-text-emphasis)}.list-group-item-purple{--tblr-list-group-color:var(--tblr-purple-text-emphasis);--tblr-list-group-bg:var(--tblr-purple-bg-subtle);--tblr-list-group-border-color:var(--tblr-purple-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-purple-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-purple-border-subtle);--tblr-list-group-active-color:var(--tblr-purple-bg-subtle);--tblr-list-group-active-bg:var(--tblr-purple-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-purple-text-emphasis)}.list-group-item-pink{--tblr-list-group-color:var(--tblr-pink-text-emphasis);--tblr-list-group-bg:var(--tblr-pink-bg-subtle);--tblr-list-group-border-color:var(--tblr-pink-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pink-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pink-border-subtle);--tblr-list-group-active-color:var(--tblr-pink-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pink-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pink-text-emphasis)}.list-group-item-red{--tblr-list-group-color:var(--tblr-red-text-emphasis);--tblr-list-group-bg:var(--tblr-red-bg-subtle);--tblr-list-group-border-color:var(--tblr-red-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-red-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-red-border-subtle);--tblr-list-group-active-color:var(--tblr-red-bg-subtle);--tblr-list-group-active-bg:var(--tblr-red-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-red-text-emphasis)}.list-group-item-orange{--tblr-list-group-color:var(--tblr-orange-text-emphasis);--tblr-list-group-bg:var(--tblr-orange-bg-subtle);--tblr-list-group-border-color:var(--tblr-orange-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-orange-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-orange-border-subtle);--tblr-list-group-active-color:var(--tblr-orange-bg-subtle);--tblr-list-group-active-bg:var(--tblr-orange-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-orange-text-emphasis)}.list-group-item-yellow{--tblr-list-group-color:var(--tblr-yellow-text-emphasis);--tblr-list-group-bg:var(--tblr-yellow-bg-subtle);--tblr-list-group-border-color:var(--tblr-yellow-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-yellow-border-subtle);--tblr-list-group-active-color:var(--tblr-yellow-bg-subtle);--tblr-list-group-active-bg:var(--tblr-yellow-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-yellow-text-emphasis)}.list-group-item-lime{--tblr-list-group-color:var(--tblr-lime-text-emphasis);--tblr-list-group-bg:var(--tblr-lime-bg-subtle);--tblr-list-group-border-color:var(--tblr-lime-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-lime-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-lime-border-subtle);--tblr-list-group-active-color:var(--tblr-lime-bg-subtle);--tblr-list-group-active-bg:var(--tblr-lime-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-lime-text-emphasis)}.list-group-item-green{--tblr-list-group-color:var(--tblr-green-text-emphasis);--tblr-list-group-bg:var(--tblr-green-bg-subtle);--tblr-list-group-border-color:var(--tblr-green-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-green-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-green-border-subtle);--tblr-list-group-active-color:var(--tblr-green-bg-subtle);--tblr-list-group-active-bg:var(--tblr-green-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-green-text-emphasis)}.list-group-item-teal{--tblr-list-group-color:var(--tblr-teal-text-emphasis);--tblr-list-group-bg:var(--tblr-teal-bg-subtle);--tblr-list-group-border-color:var(--tblr-teal-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-teal-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-teal-border-subtle);--tblr-list-group-active-color:var(--tblr-teal-bg-subtle);--tblr-list-group-active-bg:var(--tblr-teal-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-teal-text-emphasis)}.list-group-item-cyan{--tblr-list-group-color:var(--tblr-cyan-text-emphasis);--tblr-list-group-bg:var(--tblr-cyan-bg-subtle);--tblr-list-group-border-color:var(--tblr-cyan-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-cyan-border-subtle);--tblr-list-group-active-color:var(--tblr-cyan-bg-subtle);--tblr-list-group-active-bg:var(--tblr-cyan-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-cyan-text-emphasis)}.list-group-item-x{--tblr-list-group-color:var(--tblr-x-text-emphasis);--tblr-list-group-bg:var(--tblr-x-bg-subtle);--tblr-list-group-border-color:var(--tblr-x-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-x-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-x-border-subtle);--tblr-list-group-active-color:var(--tblr-x-bg-subtle);--tblr-list-group-active-bg:var(--tblr-x-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-x-text-emphasis)}.list-group-item-facebook{--tblr-list-group-color:var(--tblr-facebook-text-emphasis);--tblr-list-group-bg:var(--tblr-facebook-bg-subtle);--tblr-list-group-border-color:var(--tblr-facebook-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-facebook-border-subtle);--tblr-list-group-active-color:var(--tblr-facebook-bg-subtle);--tblr-list-group-active-bg:var(--tblr-facebook-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-facebook-text-emphasis)}.list-group-item-twitter{--tblr-list-group-color:var(--tblr-twitter-text-emphasis);--tblr-list-group-bg:var(--tblr-twitter-bg-subtle);--tblr-list-group-border-color:var(--tblr-twitter-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-twitter-border-subtle);--tblr-list-group-active-color:var(--tblr-twitter-bg-subtle);--tblr-list-group-active-bg:var(--tblr-twitter-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-twitter-text-emphasis)}.list-group-item-linkedin{--tblr-list-group-color:var(--tblr-linkedin-text-emphasis);--tblr-list-group-bg:var(--tblr-linkedin-bg-subtle);--tblr-list-group-border-color:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-linkedin-border-subtle);--tblr-list-group-active-color:var(--tblr-linkedin-bg-subtle);--tblr-list-group-active-bg:var(--tblr-linkedin-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-linkedin-text-emphasis)}.list-group-item-google{--tblr-list-group-color:var(--tblr-google-text-emphasis);--tblr-list-group-bg:var(--tblr-google-bg-subtle);--tblr-list-group-border-color:var(--tblr-google-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-google-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-google-border-subtle);--tblr-list-group-active-color:var(--tblr-google-bg-subtle);--tblr-list-group-active-bg:var(--tblr-google-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-google-text-emphasis)}.list-group-item-youtube{--tblr-list-group-color:var(--tblr-youtube-text-emphasis);--tblr-list-group-bg:var(--tblr-youtube-bg-subtle);--tblr-list-group-border-color:var(--tblr-youtube-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-youtube-border-subtle);--tblr-list-group-active-color:var(--tblr-youtube-bg-subtle);--tblr-list-group-active-bg:var(--tblr-youtube-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-youtube-text-emphasis)}.list-group-item-vimeo{--tblr-list-group-color:var(--tblr-vimeo-text-emphasis);--tblr-list-group-bg:var(--tblr-vimeo-bg-subtle);--tblr-list-group-border-color:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vimeo-border-subtle);--tblr-list-group-active-color:var(--tblr-vimeo-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vimeo-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vimeo-text-emphasis)}.list-group-item-dribbble{--tblr-list-group-color:var(--tblr-dribbble-text-emphasis);--tblr-list-group-bg:var(--tblr-dribbble-bg-subtle);--tblr-list-group-border-color:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-dribbble-border-subtle);--tblr-list-group-active-color:var(--tblr-dribbble-bg-subtle);--tblr-list-group-active-bg:var(--tblr-dribbble-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-dribbble-text-emphasis)}.list-group-item-github{--tblr-list-group-color:var(--tblr-github-text-emphasis);--tblr-list-group-bg:var(--tblr-github-bg-subtle);--tblr-list-group-border-color:var(--tblr-github-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-github-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-github-border-subtle);--tblr-list-group-active-color:var(--tblr-github-bg-subtle);--tblr-list-group-active-bg:var(--tblr-github-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-github-text-emphasis)}.list-group-item-instagram{--tblr-list-group-color:var(--tblr-instagram-text-emphasis);--tblr-list-group-bg:var(--tblr-instagram-bg-subtle);--tblr-list-group-border-color:var(--tblr-instagram-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-instagram-border-subtle);--tblr-list-group-active-color:var(--tblr-instagram-bg-subtle);--tblr-list-group-active-bg:var(--tblr-instagram-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-instagram-text-emphasis)}.list-group-item-pinterest{--tblr-list-group-color:var(--tblr-pinterest-text-emphasis);--tblr-list-group-bg:var(--tblr-pinterest-bg-subtle);--tblr-list-group-border-color:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-pinterest-border-subtle);--tblr-list-group-active-color:var(--tblr-pinterest-bg-subtle);--tblr-list-group-active-bg:var(--tblr-pinterest-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-pinterest-text-emphasis)}.list-group-item-vk{--tblr-list-group-color:var(--tblr-vk-text-emphasis);--tblr-list-group-bg:var(--tblr-vk-bg-subtle);--tblr-list-group-border-color:var(--tblr-vk-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-vk-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-vk-border-subtle);--tblr-list-group-active-color:var(--tblr-vk-bg-subtle);--tblr-list-group-active-bg:var(--tblr-vk-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-vk-text-emphasis)}.list-group-item-rss{--tblr-list-group-color:var(--tblr-rss-text-emphasis);--tblr-list-group-bg:var(--tblr-rss-bg-subtle);--tblr-list-group-border-color:var(--tblr-rss-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-rss-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-rss-border-subtle);--tblr-list-group-active-color:var(--tblr-rss-bg-subtle);--tblr-list-group-active-bg:var(--tblr-rss-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-rss-text-emphasis)}.list-group-item-flickr{--tblr-list-group-color:var(--tblr-flickr-text-emphasis);--tblr-list-group-bg:var(--tblr-flickr-bg-subtle);--tblr-list-group-border-color:var(--tblr-flickr-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-flickr-border-subtle);--tblr-list-group-active-color:var(--tblr-flickr-bg-subtle);--tblr-list-group-active-bg:var(--tblr-flickr-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-flickr-text-emphasis)}.list-group-item-bitbucket{--tblr-list-group-color:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-bg:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-border-color:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-bitbucket-border-subtle);--tblr-list-group-active-color:var(--tblr-bitbucket-bg-subtle);--tblr-list-group-active-bg:var(--tblr-bitbucket-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-bitbucket-text-emphasis)}.list-group-item-tabler{--tblr-list-group-color:var(--tblr-tabler-text-emphasis);--tblr-list-group-bg:var(--tblr-tabler-bg-subtle);--tblr-list-group-border-color:var(--tblr-tabler-border-subtle);--tblr-list-group-action-hover-color:var(--tblr-emphasis-color);--tblr-list-group-action-hover-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-action-active-color:var(--tblr-emphasis-color);--tblr-list-group-action-active-bg:var(--tblr-tabler-border-subtle);--tblr-list-group-active-color:var(--tblr-tabler-bg-subtle);--tblr-list-group-active-bg:var(--tblr-tabler-text-emphasis);--tblr-list-group-active-border-color:var(--tblr-tabler-text-emphasis)}.btn-close{--tblr-btn-close-color:#182433;--tblr-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182433'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--tblr-btn-close-opacity:0.4;--tblr-btn-close-hover-opacity:0.75;--tblr-btn-close-focus-shadow:0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25);--tblr-btn-close-focus-opacity:1;--tblr-btn-close-disabled-opacity:0.25;--tblr-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--tblr-btn-close-color);background:transparent var(--tblr-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:6px;opacity:var(--tblr-btn-close-opacity)}.btn-close:hover{color:var(--tblr-btn-close-color);text-decoration:none;opacity:var(--tblr-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--tblr-btn-close-focus-shadow);opacity:var(--tblr-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--tblr-btn-close-disabled-opacity)}.btn-close-white{filter:var(--tblr-btn-close-white-filter)}[data-bs-theme=dark] .btn-close,body[data-bs-theme=dark] [data-bs-theme=light] .btn-close{filter:var(--tblr-btn-close-white-filter)}.toast{--tblr-toast-zindex:1090;--tblr-toast-padding-x:0.75rem;--tblr-toast-padding-y:0.5rem;--tblr-toast-spacing:calc(var(--tblr-page-padding) * 2);--tblr-toast-max-width:350px;--tblr-toast-font-size:0.875rem;--tblr-toast-color: ;--tblr-toast-bg:var(--tblr-bg-surface);--tblr-toast-border-width:var(--tblr-border-width);--tblr-toast-border-color:var(--tblr-border-color);--tblr-toast-border-radius:var(--tblr-border-radius);--tblr-toast-box-shadow:var(--tblr-box-shadow);--tblr-toast-header-color:var(--tblr-gray-500);--tblr-toast-header-bg:rgba(var(--tblr-body-bg-rgb), 0.85);--tblr-toast-header-border-color:var(--tblr-border-color);width:var(--tblr-toast-max-width);max-width:100%;font-size:var(--tblr-toast-font-size);color:var(--tblr-toast-color);pointer-events:auto;background-color:var(--tblr-toast-bg);background-clip:padding-box;border:var(--tblr-toast-border-width) solid var(--tblr-toast-border-color);box-shadow:var(--tblr-toast-box-shadow);border-radius:var(--tblr-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--tblr-toast-zindex:1090;position:absolute;z-index:var(--tblr-toast-zindex);width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--tblr-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--tblr-toast-padding-y) var(--tblr-toast-padding-x);color:var(--tblr-toast-header-color);background-color:var(--tblr-toast-header-bg);background-clip:padding-box;border-bottom:var(--tblr-toast-border-width) solid var(--tblr-toast-header-border-color);border-top-left-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width));border-top-right-radius:calc(var(--tblr-toast-border-radius) - var(--tblr-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--tblr-toast-padding-x));margin-left:var(--tblr-toast-padding-x)}.toast-body{padding:var(--tblr-toast-padding-x);word-wrap:break-word}.modal{--tblr-modal-zindex:1055;--tblr-modal-width:540px;--tblr-modal-padding:1.5rem;--tblr-modal-margin:0.5rem;--tblr-modal-color: ;--tblr-modal-bg:var(--tblr-bg-surface);--tblr-modal-border-color:transparent;--tblr-modal-border-width:var(--tblr-border-width);--tblr-modal-border-radius:var(--tblr-border-radius-lg);--tblr-modal-box-shadow:var(--tblr-box-shadow-sm);--tblr-modal-inner-border-radius:calc(var(--tblr-modal-border-radius) - 1px);--tblr-modal-header-padding-x:1.5rem;--tblr-modal-header-padding-y:1.5rem;--tblr-modal-header-padding:1.5rem;--tblr-modal-header-border-color:var(--tblr-border-color);--tblr-modal-header-border-width:var(--tblr-border-width);--tblr-modal-title-line-height:1.4285714286;--tblr-modal-footer-gap:0.75rem;--tblr-modal-footer-bg:var(--tblr-bg-surface-tertiary);--tblr-modal-footer-border-color:var(--tblr-border-color);--tblr-modal-footer-border-width:var(--tblr-border-width);position:fixed;top:0;left:0;z-index:var(--tblr-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--tblr-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-1rem)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--tblr-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--tblr-modal-color);pointer-events:auto;background-color:var(--tblr-modal-bg);background-clip:padding-box;border:var(--tblr-modal-border-width) solid var(--tblr-modal-border-color);border-radius:var(--tblr-modal-border-radius);box-shadow:var(--tblr-modal-box-shadow);outline:0}.modal-backdrop{--tblr-backdrop-zindex:1050;--tblr-backdrop-bg:#182433;--tblr-backdrop-opacity:0.24;position:fixed;top:0;left:0;z-index:var(--tblr-backdrop-zindex);width:100vw;height:100vh;background-color:var(--tblr-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--tblr-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--tblr-modal-header-padding);border-bottom:var(--tblr-modal-header-border-width) solid var(--tblr-modal-header-border-color);border-top-left-radius:var(--tblr-modal-inner-border-radius);border-top-right-radius:var(--tblr-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--tblr-modal-header-padding-y) * .5) calc(var(--tblr-modal-header-padding-x) * .5);margin:calc(-.5 * var(--tblr-modal-header-padding-y)) calc(-.5 * var(--tblr-modal-header-padding-x)) calc(-.5 * var(--tblr-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--tblr-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--tblr-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--tblr-modal-padding) - var(--tblr-modal-footer-gap) * .5);background-color:var(--tblr-modal-footer-bg);border-top:var(--tblr-modal-footer-border-width) solid var(--tblr-modal-footer-border-color);border-bottom-right-radius:var(--tblr-modal-inner-border-radius);border-bottom-left-radius:var(--tblr-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--tblr-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--tblr-modal-margin:1.75rem;--tblr-modal-box-shadow:var(--tblr-box-shadow)}.modal-dialog{max-width:var(--tblr-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--tblr-modal-width:380px}}@media (min-width:992px){.modal-lg,.modal-xl{--tblr-modal-width:720px}}@media (min-width:1200px){.modal-xl{--tblr-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--tblr-tooltip-zindex:1080;--tblr-tooltip-max-width:200px;--tblr-tooltip-padding-x:var(--tblr-spacer-2);--tblr-tooltip-padding-y:var(--tblr-spacer-1);--tblr-tooltip-margin: ;--tblr-tooltip-font-size:0.765625rem;--tblr-tooltip-color:var(--tblr-light);--tblr-tooltip-bg:var(--tblr-bg-surface-dark);--tblr-tooltip-border-radius:var(--tblr-border-radius);--tblr-tooltip-opacity:0.9;--tblr-tooltip-arrow-width:0.8rem;--tblr-tooltip-arrow-height:0.4rem;z-index:var(--tblr-tooltip-zindex);display:block;margin:var(--tblr-tooltip-margin);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--tblr-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--tblr-tooltip-arrow-width);height:var(--tblr-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-top-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height) calc(var(--tblr-tooltip-arrow-width) * .5) 0;border-right-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--tblr-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-bottom-color:var(--tblr-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--tblr-tooltip-arrow-height));width:var(--tblr-tooltip-arrow-height);height:var(--tblr-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--tblr-tooltip-arrow-width) * .5) 0 calc(var(--tblr-tooltip-arrow-width) * .5) var(--tblr-tooltip-arrow-height);border-left-color:var(--tblr-tooltip-bg)}.tooltip-inner{max-width:var(--tblr-tooltip-max-width);padding:var(--tblr-tooltip-padding-y) var(--tblr-tooltip-padding-x);color:var(--tblr-tooltip-color);text-align:center;background-color:var(--tblr-tooltip-bg);border-radius:var(--tblr-tooltip-border-radius)}.popover{--tblr-popover-zindex:1070;--tblr-popover-max-width:276px;--tblr-popover-font-size:0.765625rem;--tblr-popover-bg:var(--tblr-bg-surface);--tblr-popover-border-width:var(--tblr-border-width);--tblr-popover-border-color:var(--tblr-border-color);--tblr-popover-border-radius:var(--tblr-border-radius-lg);--tblr-popover-inner-border-radius:calc(var(--tblr-border-radius-lg) - var(--tblr-border-width));--tblr-popover-box-shadow:var(--tblr-box-shadow-lg);--tblr-popover-header-padding-x:1rem;--tblr-popover-header-padding-y:0.5rem;--tblr-popover-header-font-size:0.875rem;--tblr-popover-header-color:inherit;--tblr-popover-header-bg:transparent;--tblr-popover-body-padding-x:0.5rem;--tblr-popover-body-padding-y:0.5rem;--tblr-popover-body-color:inherit;--tblr-popover-arrow-width:1rem;--tblr-popover-arrow-height:0.5rem;--tblr-popover-arrow-border:var(--tblr-popover-border-color);z-index:var(--tblr-popover-zindex);display:block;max-width:var(--tblr-popover-max-width);font-family:var(--tblr-font-sans-serif);font-style:normal;font-weight:400;line-height:1.4285714286;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--tblr-popover-font-size);word-wrap:break-word;background-color:var(--tblr-popover-bg);background-clip:padding-box;border:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-radius:var(--tblr-popover-border-radius);box-shadow:var(--tblr-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--tblr-popover-arrow-width);height:var(--tblr-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--tblr-popover-border-width);border-top-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height) calc(var(--tblr-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--tblr-popover-border-width);border-right-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--tblr-popover-border-width);border-bottom-color:var(--tblr-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--tblr-popover-arrow-width);margin-left:calc(-.5 * var(--tblr-popover-arrow-width));content:"";border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--tblr-popover-arrow-height)) - var(--tblr-popover-border-width));width:var(--tblr-popover-arrow-height);height:var(--tblr-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--tblr-popover-arrow-width) * .5) 0 calc(var(--tblr-popover-arrow-width) * .5) var(--tblr-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--tblr-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--tblr-popover-border-width);border-left-color:var(--tblr-popover-bg)}.popover-header{padding:var(--tblr-popover-header-padding-y) var(--tblr-popover-header-padding-x);margin-bottom:0;font-size:var(--tblr-popover-header-font-size);color:var(--tblr-popover-header-color);background-color:var(--tblr-popover-header-bg);border-bottom:var(--tblr-popover-border-width) solid var(--tblr-popover-border-color);border-top-left-radius:var(--tblr-popover-inner-border-radius);border-top-right-radius:var(--tblr-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--tblr-popover-body-padding-y) var(--tblr-popover-body-padding-x);color:var(--tblr-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:1.5rem;height:1.5rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='15 18 9 12 15 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='9 18 15 12 9 6'%3e%3c/polyline%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--tblr-spinner-width);height:var(--tblr-spinner-height);vertical-align:var(--tblr-spinner-vertical-align);border-radius:50%;animation:var(--tblr-spinner-animation-speed) linear infinite var(--tblr-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-border-width:2px;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-border;border:var(--tblr-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem;--tblr-spinner-border-width:1px}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--tblr-spinner-width:1.5rem;--tblr-spinner-height:1.5rem;--tblr-spinner-vertical-align:-0.125em;--tblr-spinner-animation-speed:0.75s;--tblr-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--tblr-spinner-width:1rem;--tblr-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--tblr-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--tblr-offcanvas-zindex:1045;--tblr-offcanvas-width:400px;--tblr-offcanvas-height:30vh;--tblr-offcanvas-padding-x:1.5rem;--tblr-offcanvas-padding-y:1.5rem;--tblr-offcanvas-color:var(--tblr-body-color);--tblr-offcanvas-bg:var(--tblr-bg-surface);--tblr-offcanvas-border-width:var(--tblr-border-width);--tblr-offcanvas-border-color:var(--tblr-border-color);--tblr-offcanvas-box-shadow:var(--tblr-box-shadow-sm);--tblr-offcanvas-transition:transform 0.3s ease-in-out;--tblr-offcanvas-title-line-height:1.4285714286}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--tblr-offcanvas-height:auto;--tblr-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--tblr-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--tblr-offcanvas-color);visibility:hidden;background-color:var(--tblr-offcanvas-bg);background-clip:padding-box;outline:0;box-shadow:var(--tblr-offcanvas-box-shadow);transition:var(--tblr-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--tblr-offcanvas-width);border-right:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--tblr-offcanvas-width);border-left:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-bottom:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--tblr-offcanvas-height);max-height:100%;border-top:var(--tblr-offcanvas-border-width) solid var(--tblr-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#182433}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.24}.offcanvas-header{display:flex;align-items:center;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--tblr-offcanvas-padding-y) * .5) calc(var(--tblr-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--tblr-offcanvas-padding-y)) calc(-.5 * var(--tblr-offcanvas-padding-x)) calc(-.5 * var(--tblr-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--tblr-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--tblr-offcanvas-padding-y) var(--tblr-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.2}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.1}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000000 55%,rgba(0,0,0,0.9) 75%,#000000 95%);mask-image:linear-gradient(130deg,#000000 55%,rgba(0,0,0,0.9) 75%,#000000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#f6f8fb!important;background-color:RGBA(var(--tblr-primary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-secondary{color:#f6f8fb!important;background-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-success{color:#f6f8fb!important;background-color:RGBA(var(--tblr-success-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-info{color:#f6f8fb!important;background-color:RGBA(var(--tblr-info-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-warning{color:#f6f8fb!important;background-color:RGBA(var(--tblr-warning-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-danger{color:#f6f8fb!important;background-color:RGBA(var(--tblr-danger-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-light{color:#182433!important;background-color:RGBA(var(--tblr-light-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dark{color:#f6f8fb!important;background-color:RGBA(var(--tblr-dark-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-muted{color:#f6f8fb!important;background-color:RGBA(var(--tblr-muted-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-blue{color:#f6f8fb!important;background-color:RGBA(var(--tblr-blue-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-azure{color:#f6f8fb!important;background-color:RGBA(var(--tblr-azure-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-indigo{color:#f6f8fb!important;background-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-purple{color:#f6f8fb!important;background-color:RGBA(var(--tblr-purple-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pink{color:#f6f8fb!important;background-color:RGBA(var(--tblr-pink-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-red{color:#f6f8fb!important;background-color:RGBA(var(--tblr-red-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-orange{color:#f6f8fb!important;background-color:RGBA(var(--tblr-orange-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-yellow{color:#f6f8fb!important;background-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-lime{color:#f6f8fb!important;background-color:RGBA(var(--tblr-lime-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-green{color:#f6f8fb!important;background-color:RGBA(var(--tblr-green-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-teal{color:#f6f8fb!important;background-color:RGBA(var(--tblr-teal-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-cyan{color:#f6f8fb!important;background-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-x{color:#f6f8fb!important;background-color:RGBA(var(--tblr-x-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-facebook{color:#f6f8fb!important;background-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-twitter{color:#f6f8fb!important;background-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-linkedin{color:#f6f8fb!important;background-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-google{color:#f6f8fb!important;background-color:RGBA(var(--tblr-google-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-youtube{color:#f6f8fb!important;background-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vimeo{color:#f6f8fb!important;background-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-dribbble{color:#f6f8fb!important;background-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-github{color:#f6f8fb!important;background-color:RGBA(var(--tblr-github-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-instagram{color:#f6f8fb!important;background-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-pinterest{color:#f6f8fb!important;background-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-vk{color:#f6f8fb!important;background-color:RGBA(var(--tblr-vk-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-rss{color:#f6f8fb!important;background-color:RGBA(var(--tblr-rss-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-flickr{color:#f6f8fb!important;background-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-bitbucket{color:#f6f8fb!important;background-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity,1))!important}.text-bg-tabler{color:#f6f8fb!important;background-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-bg-opacity,1))!important}.link-primary{color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(5,89,167,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(5,89,167,var(--tblr-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,98,116,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(86,98,116,var(--tblr-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--tblr-success-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-success-rgb),var(--tblr-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--tblr-info-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-info-rgb),var(--tblr-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--tblr-light-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-light-rgb),var(--tblr-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(248,249,252,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(248,249,252,var(--tblr-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(19,29,41,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(19,29,41,var(--tblr-link-underline-opacity,1))!important}.link-muted{color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity,1))!important}.link-muted:focus,.link-muted:hover{color:RGBA(86,98,116,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(86,98,116,var(--tblr-link-underline-opacity,1))!important}.link-blue{color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity,1))!important}.link-blue:focus,.link-blue:hover{color:RGBA(5,89,167,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(5,89,167,var(--tblr-link-underline-opacity,1))!important}.link-azure{color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity,1))!important}.link-azure:focus,.link-azure:hover{color:RGBA(53,122,180,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(53,122,180,var(--tblr-link-underline-opacity,1))!important}.link-indigo{color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-indigo:focus,.link-indigo:hover{color:RGBA(53,79,188,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(53,79,188,var(--tblr-link-underline-opacity,1))!important}.link-purple{color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity,1))!important}.link-purple:focus,.link-purple:hover{color:RGBA(139,50,161,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(139,50,161,var(--tblr-link-underline-opacity,1))!important}.link-pink{color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pink:focus,.link-pink:hover{color:RGBA(171,41,86,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(171,41,86,var(--tblr-link-underline-opacity,1))!important}.link-red{color:RGBA(var(--tblr-red-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-red-rgb),var(--tblr-link-underline-opacity,1))!important}.link-red:focus,.link-red:hover{color:RGBA(171,46,46,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(171,46,46,var(--tblr-link-underline-opacity,1))!important}.link-orange{color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity,1))!important}.link-orange:focus,.link-orange:hover{color:RGBA(198,82,6,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(198,82,6,var(--tblr-link-underline-opacity,1))!important}.link-yellow{color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity,1))!important}.link-yellow:focus,.link-yellow:hover{color:RGBA(196,127,0,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(196,127,0,var(--tblr-link-underline-opacity,1))!important}.link-lime{color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity,1))!important}.link-lime:focus,.link-lime:hover{color:RGBA(93,147,18,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(93,147,18,var(--tblr-link-underline-opacity,1))!important}.link-green{color:RGBA(var(--tblr-green-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-green-rgb),var(--tblr-link-underline-opacity,1))!important}.link-green:focus,.link-green:hover{color:RGBA(38,143,54,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(38,143,54,var(--tblr-link-underline-opacity,1))!important}.link-teal{color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity,1))!important}.link-teal:focus,.link-teal:hover{color:RGBA(10,133,96,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(10,133,96,var(--tblr-link-underline-opacity,1))!important}.link-cyan{color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity,1))!important}.link-cyan:focus,.link-cyan:hover{color:RGBA(18,130,147,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(18,130,147,var(--tblr-link-underline-opacity,1))!important}.link-x{color:RGBA(var(--tblr-x-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-x-rgb),var(--tblr-link-underline-opacity,1))!important}.link-x:focus,.link-x:hover{color:RGBA(0,0,0,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(0,0,0,var(--tblr-link-underline-opacity,1))!important}.link-facebook{color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity,1))!important}.link-facebook:focus,.link-facebook:hover{color:RGBA(19,95,194,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(19,95,194,var(--tblr-link-underline-opacity,1))!important}.link-twitter{color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity,1))!important}.link-twitter:focus,.link-twitter:hover{color:RGBA(23,129,194,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(23,129,194,var(--tblr-link-underline-opacity,1))!important}.link-linkedin{color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity,1))!important}.link-linkedin:focus,.link-linkedin:hover{color:RGBA(8,82,155,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(8,82,155,var(--tblr-link-underline-opacity,1))!important}.link-google{color:RGBA(var(--tblr-google-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-google-rgb),var(--tblr-link-underline-opacity,1))!important}.link-google:focus,.link-google:hover{color:RGBA(176,62,52,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(176,62,52,var(--tblr-link-underline-opacity,1))!important}.link-youtube{color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity,1))!important}.link-youtube:focus,.link-youtube:hover{color:RGBA(204,0,0,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(204,0,0,var(--tblr-link-underline-opacity,1))!important}.link-vimeo{color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vimeo:focus,.link-vimeo:hover{color:RGBA(21,146,187,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(21,146,187,var(--tblr-link-underline-opacity,1))!important}.link-dribbble{color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity,1))!important}.link-dribbble:focus,.link-dribbble:hover{color:RGBA(187,61,110,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(187,61,110,var(--tblr-link-underline-opacity,1))!important}.link-github{color:RGBA(var(--tblr-github-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-github-rgb),var(--tblr-link-underline-opacity,1))!important}.link-github:focus,.link-github:hover{color:RGBA(19,18,18,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(19,18,18,var(--tblr-link-underline-opacity,1))!important}.link-instagram{color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity,1))!important}.link-instagram:focus,.link-instagram:hover{color:RGBA(182,51,76,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(182,51,76,var(--tblr-link-underline-opacity,1))!important}.link-pinterest{color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity,1))!important}.link-pinterest:focus,.link-pinterest:hover{color:RGBA(151,6,22,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(151,6,22,var(--tblr-link-underline-opacity,1))!important}.link-vk{color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity,1))!important}.link-vk:focus,.link-vk:hover{color:RGBA(79,105,134,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(79,105,134,var(--tblr-link-underline-opacity,1))!important}.link-rss{color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity,1))!important}.link-rss:focus,.link-rss:hover{color:RGBA(204,132,0,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(204,132,0,var(--tblr-link-underline-opacity,1))!important}.link-flickr{color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity,1))!important}.link-flickr:focus,.link-flickr:hover{color:RGBA(0,79,176,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(0,79,176,var(--tblr-link-underline-opacity,1))!important}.link-bitbucket{color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity,1))!important}.link-bitbucket:focus,.link-bitbucket:hover{color:RGBA(0,66,163,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(0,66,163,var(--tblr-link-underline-opacity,1))!important}.link-tabler{color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity,1))!important}.link-tabler:focus,.link-tabler:hover{color:RGBA(5,89,167,var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(5,89,167,var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,1))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-opacity,.75))!important;text-decoration-color:RGBA(var(--tblr-emphasis-color-rgb),var(--tblr-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--tblr-focus-ring-x,0) var(--tblr-focus-ring-y,0) var(--tblr-focus-ring-blur,0) var(--tblr-focus-ring-width) var(--tblr-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-opacity,0.5));text-underline-offset:0.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--tblr-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--tblr-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--tblr-aspect-ratio:100%}.ratio-2x1{--tblr-aspect-ratio:50%}.ratio-1x2{--tblr-aspect-ratio:200%}.ratio-3x1{--tblr-aspect-ratio:33.3333333333%}.ratio-1x3{--tblr-aspect-ratio:300%}.ratio-4x1{--tblr-aspect-ratio:25%}.ratio-1x4{--tblr-aspect-ratio:400%}.ratio-4x3{--tblr-aspect-ratio:75%}.ratio-3x4{--tblr-aspect-ratio:133.3333333333%}.ratio-16x9{--tblr-aspect-ratio:56.25%}.ratio-9x16{--tblr-aspect-ratio:177.7777777778%}.ratio-21x9{--tblr-aspect-ratio:42.8571428571%}.ratio-9x21{--tblr-aspect-ratio:233.3333333333%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--tblr-border-width);min-height:1em;background-color:currentcolor;opacity:.16}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--tblr-box-shadow)!important}.shadow-sm{box-shadow:var(--tblr-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--tblr-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--tblr-focus-ring-color:rgba(var(--tblr-primary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-secondary{--tblr-focus-ring-color:rgba(var(--tblr-secondary-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-success{--tblr-focus-ring-color:rgba(var(--tblr-success-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-info{--tblr-focus-ring-color:rgba(var(--tblr-info-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-warning{--tblr-focus-ring-color:rgba(var(--tblr-warning-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-danger{--tblr-focus-ring-color:rgba(var(--tblr-danger-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-light{--tblr-focus-ring-color:rgba(var(--tblr-light-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dark{--tblr-focus-ring-color:rgba(var(--tblr-dark-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-muted{--tblr-focus-ring-color:rgba(var(--tblr-muted-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-blue{--tblr-focus-ring-color:rgba(var(--tblr-blue-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-azure{--tblr-focus-ring-color:rgba(var(--tblr-azure-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-indigo{--tblr-focus-ring-color:rgba(var(--tblr-indigo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-purple{--tblr-focus-ring-color:rgba(var(--tblr-purple-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pink{--tblr-focus-ring-color:rgba(var(--tblr-pink-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-red{--tblr-focus-ring-color:rgba(var(--tblr-red-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-orange{--tblr-focus-ring-color:rgba(var(--tblr-orange-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-yellow{--tblr-focus-ring-color:rgba(var(--tblr-yellow-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-lime{--tblr-focus-ring-color:rgba(var(--tblr-lime-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-green{--tblr-focus-ring-color:rgba(var(--tblr-green-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-teal{--tblr-focus-ring-color:rgba(var(--tblr-teal-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-cyan{--tblr-focus-ring-color:rgba(var(--tblr-cyan-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-x{--tblr-focus-ring-color:rgba(var(--tblr-x-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-facebook{--tblr-focus-ring-color:rgba(var(--tblr-facebook-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-twitter{--tblr-focus-ring-color:rgba(var(--tblr-twitter-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-linkedin{--tblr-focus-ring-color:rgba(var(--tblr-linkedin-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-google{--tblr-focus-ring-color:rgba(var(--tblr-google-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-youtube{--tblr-focus-ring-color:rgba(var(--tblr-youtube-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vimeo{--tblr-focus-ring-color:rgba(var(--tblr-vimeo-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-dribbble{--tblr-focus-ring-color:rgba(var(--tblr-dribbble-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-github{--tblr-focus-ring-color:rgba(var(--tblr-github-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-instagram{--tblr-focus-ring-color:rgba(var(--tblr-instagram-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-pinterest{--tblr-focus-ring-color:rgba(var(--tblr-pinterest-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-vk{--tblr-focus-ring-color:rgba(var(--tblr-vk-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-rss{--tblr-focus-ring-color:rgba(var(--tblr-rss-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-flickr{--tblr-focus-ring-color:rgba(var(--tblr-flickr-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-bitbucket{--tblr-focus-ring-color:rgba(var(--tblr-bitbucket-rgb), var(--tblr-focus-ring-opacity))}.focus-ring-tabler{--tblr-focus-ring-color:rgba(var(--tblr-tabler-rgb), var(--tblr-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-wide{border:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-0{border:0!important}.border-top{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-top-wide{border-top:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-end-wide{border-right:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-bottom-wide{border-bottom:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-start-wide{border-left:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-start-0{border-left:0!important}.border-red{--tblr-border-opacity:1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.border-green{--tblr-border-opacity:1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.border-primary-subtle{border-color:var(--tblr-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--tblr-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--tblr-success-border-subtle)!important}.border-info-subtle{border-color:var(--tblr-info-border-subtle)!important}.border-warning-subtle{border-color:var(--tblr-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--tblr-danger-border-subtle)!important}.border-light-subtle{border-color:var(--tblr-light-border-subtle)!important}.border-dark-subtle{border-color:var(--tblr-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--tblr-border-opacity:0.1}.border-opacity-25{--tblr-border-opacity:0.25}.border-opacity-50{--tblr-border-opacity:0.5}.border-opacity-75{--tblr-border-opacity:0.75}.border-opacity-100{--tblr-border-opacity:1}.w-0{width:0!important}.w-1{width:.25rem!important}.w-2{width:.5rem!important}.w-3{width:1rem!important}.w-4{width:1.5rem!important}.w-5{width:2rem!important}.w-6{width:2.5rem!important}.w-25{width:25%!important}.w-33{width:33.33333%!important}.w-50{width:50%!important}.w-66{width:66.66666%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-0{height:0!important}.h-1{height:.25rem!important}.h-2{height:.5rem!important}.h-3{height:1rem!important}.h-4{height:1.5rem!important}.h-5{height:2rem!important}.h-6{height:2.5rem!important}.h-25{height:25%!important}.h-33{height:33.33333%!important}.h-50{height:50%!important}.h-66{height:66.66666%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:2rem!important}.m-6{margin:2.5rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:2rem!important;margin-left:2rem!important}.mx-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:2rem!important}.mt-6{margin-top:2.5rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:2rem!important}.me-6{margin-right:2.5rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:2rem!important}.mb-6{margin-bottom:2.5rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:2rem!important}.ms-6{margin-left:2.5rem!important}.ms-auto{margin-left:auto!important}.m-n1{margin:-.25rem!important}.m-n2{margin:-.5rem!important}.m-n3{margin:-1rem!important}.m-n4{margin:-1.5rem!important}.m-n5{margin:-2rem!important}.m-n6{margin:-2.5rem!important}.mx-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-n1{margin-top:-.25rem!important}.mt-n2{margin-top:-.5rem!important}.mt-n3{margin-top:-1rem!important}.mt-n4{margin-top:-1.5rem!important}.mt-n5{margin-top:-2rem!important}.mt-n6{margin-top:-2.5rem!important}.me-n1{margin-right:-.25rem!important}.me-n2{margin-right:-.5rem!important}.me-n3{margin-right:-1rem!important}.me-n4{margin-right:-1.5rem!important}.me-n5{margin-right:-2rem!important}.me-n6{margin-right:-2.5rem!important}.mb-n1{margin-bottom:-.25rem!important}.mb-n2{margin-bottom:-.5rem!important}.mb-n3{margin-bottom:-1rem!important}.mb-n4{margin-bottom:-1.5rem!important}.mb-n5{margin-bottom:-2rem!important}.mb-n6{margin-bottom:-2.5rem!important}.ms-n1{margin-left:-.25rem!important}.ms-n2{margin-left:-.5rem!important}.ms-n3{margin-left:-1rem!important}.ms-n4{margin-left:-1.5rem!important}.ms-n5{margin-left:-2rem!important}.ms-n6{margin-left:-2.5rem!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:2rem!important}.p-6{padding:2.5rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:2rem!important;padding-left:2rem!important}.px-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:2rem!important}.pt-6{padding-top:2.5rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:2rem!important}.pe-6{padding-right:2.5rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:2rem!important}.pb-6{padding-bottom:2.5rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:2rem!important}.ps-6{padding-left:2.5rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:2rem!important}.gap-6{gap:2.5rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:2rem!important}.row-gap-6{row-gap:2.5rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-6{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.font-monospace{font-family:var(--tblr-font-monospace)!important}.fs-1{font-size:1.5rem!important}.fs-2{font-size:1.25rem!important}.fs-3{font-size:1rem!important}.fs-4{font-size:.875rem!important}.fs-5{font-size:.75rem!important}.fs-6{font-size:.625rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.1428571429!important}.lh-base{line-height:1.4285714286!important}.lh-lg{line-height:1.7142857143!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-muted{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-x{--tblr-text-opacity:1;color:rgba(var(--tblr-x-rgb),var(--tblr-text-opacity))!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-black{--tblr-text-opacity:1;color:rgba(var(--tblr-black-rgb),var(--tblr-text-opacity))!important}.text-white{--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important}.text-body{--tblr-text-opacity:1;color:rgba(var(--tblr-body-color-rgb),var(--tblr-text-opacity))!important}.text-black-50{--tblr-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--tblr-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--tblr-text-opacity:1;color:var(--tblr-secondary-color)!important}.text-body-tertiary{--tblr-text-opacity:1;color:var(--tblr-tertiary-color)!important}.text-body-emphasis{--tblr-text-opacity:1;color:var(--tblr-emphasis-color)!important}.text-reset{--tblr-text-opacity:1;color:inherit!important}.text-opacity-25{--tblr-text-opacity:0.25}.text-opacity-50{--tblr-text-opacity:0.5}.text-opacity-75{--tblr-text-opacity:0.75}.text-opacity-100{--tblr-text-opacity:1}.text-primary-emphasis{color:var(--tblr-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--tblr-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--tblr-success-text-emphasis)!important}.text-info-emphasis{color:var(--tblr-info-text-emphasis)!important}.text-warning-emphasis{color:var(--tblr-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--tblr-danger-text-emphasis)!important}.text-light-emphasis{color:var(--tblr-light-text-emphasis)!important}.text-dark-emphasis{color:var(--tblr-dark-text-emphasis)!important}.link-opacity-10{--tblr-link-opacity:0.1}.link-opacity-10-hover:hover{--tblr-link-opacity:0.1}.link-opacity-25{--tblr-link-opacity:0.25}.link-opacity-25-hover:hover{--tblr-link-opacity:0.25}.link-opacity-50{--tblr-link-opacity:0.5}.link-opacity-50-hover:hover{--tblr-link-opacity:0.5}.link-opacity-75{--tblr-link-opacity:0.75}.link-opacity-75-hover:hover{--tblr-link-opacity:0.75}.link-opacity-100{--tblr-link-opacity:1}.link-opacity-100-hover:hover{--tblr-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-primary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-secondary{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-secondary-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-success{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-success-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-info{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-info-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-warning{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-warning-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-danger{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-danger-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-light{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-light-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dark{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-dark-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-muted{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-muted-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-blue{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-blue-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-azure{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-azure-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-indigo{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-indigo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-purple{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-purple-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pink{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-pink-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-red{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-red-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-orange{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-orange-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-yellow{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-yellow-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-lime{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-lime-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-green{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-green-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-teal{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-teal-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-cyan{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-cyan-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-x{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-x-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-facebook{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-facebook-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-twitter{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-twitter-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-linkedin{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-google{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-google-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-youtube{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-youtube-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vimeo{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-dribbble{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-github{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-github-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-instagram{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-instagram-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-pinterest{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-vk{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-vk-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-rss{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-rss-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-flickr{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-flickr-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-bitbucket{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-link-underline-opacity))!important}.link-underline-tabler{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-tabler-rgb),var(--tblr-link-underline-opacity))!important}.link-underline{--tblr-link-underline-opacity:1;text-decoration-color:rgba(var(--tblr-link-color-rgb),var(--tblr-link-underline-opacity,1))!important}.link-underline-opacity-0{--tblr-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--tblr-link-underline-opacity:0}.link-underline-opacity-10{--tblr-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--tblr-link-underline-opacity:0.1}.link-underline-opacity-25{--tblr-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--tblr-link-underline-opacity:0.25}.link-underline-opacity-50{--tblr-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--tblr-link-underline-opacity:0.5}.link-underline-opacity-75{--tblr-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--tblr-link-underline-opacity:0.75}.link-underline-opacity-100{--tblr-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--tblr-link-underline-opacity:1}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-x{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-x-rgb),var(--tblr-bg-opacity))!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-black{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-black-rgb),var(--tblr-bg-opacity))!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-body{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-body-bg-rgb),var(--tblr-bg-opacity))!important}.bg-transparent{--tblr-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-body-tertiary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tertiary-bg-rgb),var(--tblr-bg-opacity))!important}.bg-opacity-10{--tblr-bg-opacity:0.1}.bg-opacity-25{--tblr-bg-opacity:0.25}.bg-opacity-50{--tblr-bg-opacity:0.5}.bg-opacity-75{--tblr-bg-opacity:0.75}.bg-opacity-100{--tblr-bg-opacity:1}.bg-primary-subtle{background-color:var(--tblr-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--tblr-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--tblr-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--tblr-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--tblr-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--tblr-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--tblr-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--tblr-dark-bg-subtle)!important}.bg-gradient{background-image:var(--tblr-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--tblr-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--tblr-border-radius-sm)!important}.rounded-2{border-radius:var(--tblr-border-radius)!important}.rounded-3{border-radius:var(--tblr-border-radius-lg)!important}.rounded-4{border-radius:var(--tblr-border-radius-xl)!important}.rounded-5{border-radius:var(--tblr-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--tblr-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--tblr-border-radius-sm)!important;border-top-right-radius:var(--tblr-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--tblr-border-radius)!important;border-top-right-radius:var(--tblr-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--tblr-border-radius-lg)!important;border-top-right-radius:var(--tblr-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--tblr-border-radius-xl)!important;border-top-right-radius:var(--tblr-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--tblr-border-radius-xxl)!important;border-top-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--tblr-border-radius-pill)!important;border-top-right-radius:var(--tblr-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-right-radius:var(--tblr-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--tblr-border-radius)!important;border-bottom-right-radius:var(--tblr-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-right-radius:var(--tblr-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-right-radius:var(--tblr-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-right-radius:var(--tblr-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-right-radius:var(--tblr-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--tblr-border-radius-sm)!important;border-bottom-left-radius:var(--tblr-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--tblr-border-radius)!important;border-bottom-left-radius:var(--tblr-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--tblr-border-radius-lg)!important;border-bottom-left-radius:var(--tblr-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--tblr-border-radius-xl)!important;border-bottom-left-radius:var(--tblr-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--tblr-border-radius-xxl)!important;border-bottom-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--tblr-border-radius-pill)!important;border-bottom-left-radius:var(--tblr-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--tblr-border-radius-sm)!important;border-top-left-radius:var(--tblr-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--tblr-border-radius)!important;border-top-left-radius:var(--tblr-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--tblr-border-radius-lg)!important;border-top-left-radius:var(--tblr-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--tblr-border-radius-xl)!important;border-top-left-radius:var(--tblr-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--tblr-border-radius-xxl)!important;border-top-left-radius:var(--tblr-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--tblr-border-radius-pill)!important;border-top-left-radius:var(--tblr-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}.object-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-scale-down{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-none{-o-object-fit:none!important;object-fit:none!important}.cursor-auto{cursor:auto!important}.cursor-pointer{cursor:pointer!important}.cursor-move{cursor:move!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-zoom-in{cursor:zoom-in!important}.cursor-zoom-out{cursor:zoom-out!important}.cursor-default{cursor:default!important}.cursor-none{cursor:none!important}.cursor-help{cursor:help!important}.cursor-progress{cursor:progress!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-v-text{cursor:vertical-text!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-crosshair{cursor:crosshair!important}.border-x{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-right:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-x-wide{border-left:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-right:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-x-0{border-left:0!important;border-right:0!important}.border-y{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-y-wide{border-top:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important;border-bottom:2px var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.border-y-0{border-top:0!important;border-bottom:0!important}.columns-2{-moz-columns:2!important;columns:2!important}.columns-3{-moz-columns:3!important;columns:3!important}.columns-4{-moz-columns:4!important;columns:4!important}.bg-pattern-transparent{background:url('data:image/svg+xml;charset=UTF-8,') repeat center/16px 16px!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:2rem!important}.m-sm-6{margin:2.5rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:2rem!important;margin-left:2rem!important}.mx-sm-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-sm-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:2rem!important}.mt-sm-6{margin-top:2.5rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:2rem!important}.me-sm-6{margin-right:2.5rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:2rem!important}.mb-sm-6{margin-bottom:2.5rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:2rem!important}.ms-sm-6{margin-left:2.5rem!important}.ms-sm-auto{margin-left:auto!important}.m-sm-n1{margin:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.m-sm-n3{margin:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.m-sm-n5{margin:-2rem!important}.m-sm-n6{margin:-2.5rem!important}.mx-sm-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-sm-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-sm-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-sm-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-sm-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-sm-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-sm-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-sm-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-sm-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-sm-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-sm-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-sm-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-sm-n1{margin-top:-.25rem!important}.mt-sm-n2{margin-top:-.5rem!important}.mt-sm-n3{margin-top:-1rem!important}.mt-sm-n4{margin-top:-1.5rem!important}.mt-sm-n5{margin-top:-2rem!important}.mt-sm-n6{margin-top:-2.5rem!important}.me-sm-n1{margin-right:-.25rem!important}.me-sm-n2{margin-right:-.5rem!important}.me-sm-n3{margin-right:-1rem!important}.me-sm-n4{margin-right:-1.5rem!important}.me-sm-n5{margin-right:-2rem!important}.me-sm-n6{margin-right:-2.5rem!important}.mb-sm-n1{margin-bottom:-.25rem!important}.mb-sm-n2{margin-bottom:-.5rem!important}.mb-sm-n3{margin-bottom:-1rem!important}.mb-sm-n4{margin-bottom:-1.5rem!important}.mb-sm-n5{margin-bottom:-2rem!important}.mb-sm-n6{margin-bottom:-2.5rem!important}.ms-sm-n1{margin-left:-.25rem!important}.ms-sm-n2{margin-left:-.5rem!important}.ms-sm-n3{margin-left:-1rem!important}.ms-sm-n4{margin-left:-1.5rem!important}.ms-sm-n5{margin-left:-2rem!important}.ms-sm-n6{margin-left:-2.5rem!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:2rem!important}.p-sm-6{padding:2.5rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:2rem!important;padding-left:2rem!important}.px-sm-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-sm-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:2rem!important}.pt-sm-6{padding-top:2.5rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:2rem!important}.pe-sm-6{padding-right:2.5rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:2rem!important}.pb-sm-6{padding-bottom:2.5rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:2rem!important}.ps-sm-6{padding-left:2.5rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:2rem!important}.gap-sm-6{gap:2.5rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:2rem!important}.row-gap-sm-6{row-gap:2.5rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-sm-6{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}.columns-sm-2{-moz-columns:2!important;columns:2!important}.columns-sm-3{-moz-columns:3!important;columns:3!important}.columns-sm-4{-moz-columns:4!important;columns:4!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:2rem!important}.m-md-6{margin:2.5rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:2rem!important;margin-left:2rem!important}.mx-md-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-md-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:2rem!important}.mt-md-6{margin-top:2.5rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:2rem!important}.me-md-6{margin-right:2.5rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:2rem!important}.mb-md-6{margin-bottom:2.5rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:2rem!important}.ms-md-6{margin-left:2.5rem!important}.ms-md-auto{margin-left:auto!important}.m-md-n1{margin:-.25rem!important}.m-md-n2{margin:-.5rem!important}.m-md-n3{margin:-1rem!important}.m-md-n4{margin:-1.5rem!important}.m-md-n5{margin:-2rem!important}.m-md-n6{margin:-2.5rem!important}.mx-md-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-md-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-md-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-md-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-md-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-md-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-md-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-md-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-md-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-md-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-md-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-md-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-md-n1{margin-top:-.25rem!important}.mt-md-n2{margin-top:-.5rem!important}.mt-md-n3{margin-top:-1rem!important}.mt-md-n4{margin-top:-1.5rem!important}.mt-md-n5{margin-top:-2rem!important}.mt-md-n6{margin-top:-2.5rem!important}.me-md-n1{margin-right:-.25rem!important}.me-md-n2{margin-right:-.5rem!important}.me-md-n3{margin-right:-1rem!important}.me-md-n4{margin-right:-1.5rem!important}.me-md-n5{margin-right:-2rem!important}.me-md-n6{margin-right:-2.5rem!important}.mb-md-n1{margin-bottom:-.25rem!important}.mb-md-n2{margin-bottom:-.5rem!important}.mb-md-n3{margin-bottom:-1rem!important}.mb-md-n4{margin-bottom:-1.5rem!important}.mb-md-n5{margin-bottom:-2rem!important}.mb-md-n6{margin-bottom:-2.5rem!important}.ms-md-n1{margin-left:-.25rem!important}.ms-md-n2{margin-left:-.5rem!important}.ms-md-n3{margin-left:-1rem!important}.ms-md-n4{margin-left:-1.5rem!important}.ms-md-n5{margin-left:-2rem!important}.ms-md-n6{margin-left:-2.5rem!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:2rem!important}.p-md-6{padding:2.5rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:2rem!important;padding-left:2rem!important}.px-md-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-md-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:2rem!important}.pt-md-6{padding-top:2.5rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:2rem!important}.pe-md-6{padding-right:2.5rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:2rem!important}.pb-md-6{padding-bottom:2.5rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:2rem!important}.ps-md-6{padding-left:2.5rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:2rem!important}.gap-md-6{gap:2.5rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:2rem!important}.row-gap-md-6{row-gap:2.5rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-md-6{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}.columns-md-2{-moz-columns:2!important;columns:2!important}.columns-md-3{-moz-columns:3!important;columns:3!important}.columns-md-4{-moz-columns:4!important;columns:4!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:2rem!important}.m-lg-6{margin:2.5rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:2rem!important;margin-left:2rem!important}.mx-lg-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-lg-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:2rem!important}.mt-lg-6{margin-top:2.5rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:2rem!important}.me-lg-6{margin-right:2.5rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:2rem!important}.mb-lg-6{margin-bottom:2.5rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:2rem!important}.ms-lg-6{margin-left:2.5rem!important}.ms-lg-auto{margin-left:auto!important}.m-lg-n1{margin:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.m-lg-n3{margin:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.m-lg-n5{margin:-2rem!important}.m-lg-n6{margin:-2.5rem!important}.mx-lg-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-lg-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-lg-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-lg-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-lg-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-lg-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-lg-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-lg-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-lg-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-lg-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-lg-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-lg-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-lg-n1{margin-top:-.25rem!important}.mt-lg-n2{margin-top:-.5rem!important}.mt-lg-n3{margin-top:-1rem!important}.mt-lg-n4{margin-top:-1.5rem!important}.mt-lg-n5{margin-top:-2rem!important}.mt-lg-n6{margin-top:-2.5rem!important}.me-lg-n1{margin-right:-.25rem!important}.me-lg-n2{margin-right:-.5rem!important}.me-lg-n3{margin-right:-1rem!important}.me-lg-n4{margin-right:-1.5rem!important}.me-lg-n5{margin-right:-2rem!important}.me-lg-n6{margin-right:-2.5rem!important}.mb-lg-n1{margin-bottom:-.25rem!important}.mb-lg-n2{margin-bottom:-.5rem!important}.mb-lg-n3{margin-bottom:-1rem!important}.mb-lg-n4{margin-bottom:-1.5rem!important}.mb-lg-n5{margin-bottom:-2rem!important}.mb-lg-n6{margin-bottom:-2.5rem!important}.ms-lg-n1{margin-left:-.25rem!important}.ms-lg-n2{margin-left:-.5rem!important}.ms-lg-n3{margin-left:-1rem!important}.ms-lg-n4{margin-left:-1.5rem!important}.ms-lg-n5{margin-left:-2rem!important}.ms-lg-n6{margin-left:-2.5rem!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:2rem!important}.p-lg-6{padding:2.5rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:2rem!important;padding-left:2rem!important}.px-lg-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-lg-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:2rem!important}.pt-lg-6{padding-top:2.5rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:2rem!important}.pe-lg-6{padding-right:2.5rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:2rem!important}.pb-lg-6{padding-bottom:2.5rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:2rem!important}.ps-lg-6{padding-left:2.5rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:2rem!important}.gap-lg-6{gap:2.5rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:2rem!important}.row-gap-lg-6{row-gap:2.5rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-lg-6{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}.columns-lg-2{-moz-columns:2!important;columns:2!important}.columns-lg-3{-moz-columns:3!important;columns:3!important}.columns-lg-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:2rem!important}.m-xl-6{margin:2.5rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xl-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xl-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:2rem!important}.mt-xl-6{margin-top:2.5rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:2rem!important}.me-xl-6{margin-right:2.5rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:2rem!important}.mb-xl-6{margin-bottom:2.5rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:2rem!important}.ms-xl-6{margin-left:2.5rem!important}.ms-xl-auto{margin-left:auto!important}.m-xl-n1{margin:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.m-xl-n3{margin:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.m-xl-n5{margin:-2rem!important}.m-xl-n6{margin:-2.5rem!important}.mx-xl-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-xl-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-xl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xl-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-xl-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-xl-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-xl-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-xl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xl-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-xl-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-xl-n1{margin-top:-.25rem!important}.mt-xl-n2{margin-top:-.5rem!important}.mt-xl-n3{margin-top:-1rem!important}.mt-xl-n4{margin-top:-1.5rem!important}.mt-xl-n5{margin-top:-2rem!important}.mt-xl-n6{margin-top:-2.5rem!important}.me-xl-n1{margin-right:-.25rem!important}.me-xl-n2{margin-right:-.5rem!important}.me-xl-n3{margin-right:-1rem!important}.me-xl-n4{margin-right:-1.5rem!important}.me-xl-n5{margin-right:-2rem!important}.me-xl-n6{margin-right:-2.5rem!important}.mb-xl-n1{margin-bottom:-.25rem!important}.mb-xl-n2{margin-bottom:-.5rem!important}.mb-xl-n3{margin-bottom:-1rem!important}.mb-xl-n4{margin-bottom:-1.5rem!important}.mb-xl-n5{margin-bottom:-2rem!important}.mb-xl-n6{margin-bottom:-2.5rem!important}.ms-xl-n1{margin-left:-.25rem!important}.ms-xl-n2{margin-left:-.5rem!important}.ms-xl-n3{margin-left:-1rem!important}.ms-xl-n4{margin-left:-1.5rem!important}.ms-xl-n5{margin-left:-2rem!important}.ms-xl-n6{margin-left:-2.5rem!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:2rem!important}.p-xl-6{padding:2.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xl-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xl-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:2rem!important}.pt-xl-6{padding-top:2.5rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:2rem!important}.pe-xl-6{padding-right:2.5rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:2rem!important}.pb-xl-6{padding-bottom:2.5rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:2rem!important}.ps-xl-6{padding-left:2.5rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:2rem!important}.gap-xl-6{gap:2.5rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:2rem!important}.row-gap-xl-6{row-gap:2.5rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xl-6{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.columns-xl-2{-moz-columns:2!important;columns:2!important}.columns-xl-3{-moz-columns:3!important;columns:3!important}.columns-xl-4{-moz-columns:4!important;columns:4!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:2rem!important}.m-xxl-6{margin:2.5rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:2rem!important;margin-left:2rem!important}.mx-xxl-6{margin-right:2.5rem!important;margin-left:2.5rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:2rem!important;margin-bottom:2rem!important}.my-xxl-6{margin-top:2.5rem!important;margin-bottom:2.5rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:2rem!important}.mt-xxl-6{margin-top:2.5rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:2rem!important}.me-xxl-6{margin-right:2.5rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:2rem!important}.mb-xxl-6{margin-bottom:2.5rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:2rem!important}.ms-xxl-6{margin-left:2.5rem!important}.ms-xxl-auto{margin-left:auto!important}.m-xxl-n1{margin:-.25rem!important}.m-xxl-n2{margin:-.5rem!important}.m-xxl-n3{margin:-1rem!important}.m-xxl-n4{margin:-1.5rem!important}.m-xxl-n5{margin:-2rem!important}.m-xxl-n6{margin:-2.5rem!important}.mx-xxl-n1{margin-right:-.25rem!important;margin-left:-.25rem!important}.mx-xxl-n2{margin-right:-.5rem!important;margin-left:-.5rem!important}.mx-xxl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xxl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xxl-n5{margin-right:-2rem!important;margin-left:-2rem!important}.mx-xxl-n6{margin-right:-2.5rem!important;margin-left:-2.5rem!important}.my-xxl-n1{margin-top:-.25rem!important;margin-bottom:-.25rem!important}.my-xxl-n2{margin-top:-.5rem!important;margin-bottom:-.5rem!important}.my-xxl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xxl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xxl-n5{margin-top:-2rem!important;margin-bottom:-2rem!important}.my-xxl-n6{margin-top:-2.5rem!important;margin-bottom:-2.5rem!important}.mt-xxl-n1{margin-top:-.25rem!important}.mt-xxl-n2{margin-top:-.5rem!important}.mt-xxl-n3{margin-top:-1rem!important}.mt-xxl-n4{margin-top:-1.5rem!important}.mt-xxl-n5{margin-top:-2rem!important}.mt-xxl-n6{margin-top:-2.5rem!important}.me-xxl-n1{margin-right:-.25rem!important}.me-xxl-n2{margin-right:-.5rem!important}.me-xxl-n3{margin-right:-1rem!important}.me-xxl-n4{margin-right:-1.5rem!important}.me-xxl-n5{margin-right:-2rem!important}.me-xxl-n6{margin-right:-2.5rem!important}.mb-xxl-n1{margin-bottom:-.25rem!important}.mb-xxl-n2{margin-bottom:-.5rem!important}.mb-xxl-n3{margin-bottom:-1rem!important}.mb-xxl-n4{margin-bottom:-1.5rem!important}.mb-xxl-n5{margin-bottom:-2rem!important}.mb-xxl-n6{margin-bottom:-2.5rem!important}.ms-xxl-n1{margin-left:-.25rem!important}.ms-xxl-n2{margin-left:-.5rem!important}.ms-xxl-n3{margin-left:-1rem!important}.ms-xxl-n4{margin-left:-1.5rem!important}.ms-xxl-n5{margin-left:-2rem!important}.ms-xxl-n6{margin-left:-2.5rem!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:2rem!important}.p-xxl-6{padding:2.5rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:2rem!important;padding-left:2rem!important}.px-xxl-6{padding-right:2.5rem!important;padding-left:2.5rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:2rem!important;padding-bottom:2rem!important}.py-xxl-6{padding-top:2.5rem!important;padding-bottom:2.5rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:2rem!important}.pt-xxl-6{padding-top:2.5rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:2rem!important}.pe-xxl-6{padding-right:2.5rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:2rem!important}.pb-xxl-6{padding-bottom:2.5rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:2rem!important}.ps-xxl-6{padding-left:2.5rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:2rem!important}.gap-xxl-6{gap:2.5rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:2rem!important}.row-gap-xxl-6{row-gap:2.5rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:2rem!important;column-gap:2rem!important}.column-gap-xxl-6{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}.columns-xxl-2{-moz-columns:2!important;columns:2!important}.columns-xxl-3{-moz-columns:3!important;columns:3!important}.columns-xxl-4{-moz-columns:4!important;columns:4!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:host,:root{font-size:16px;height:100%}:host,:root,[data-bs-theme=light]{--tblr-primary:#066fd1;--tblr-primary-rgb:6,111,209;--tblr-primary-fg:var(--tblr-light);--tblr-primary-darken:#0564bc;--tblr-primary-lt:#e6f1fa;--tblr-primary-lt-rgb:230,241,250;--tblr-secondary:#6c7a91;--tblr-secondary-rgb:108,122,145;--tblr-secondary-fg:var(--tblr-light);--tblr-secondary-darken:#616e83;--tblr-secondary-lt:#f0f2f4;--tblr-secondary-lt-rgb:240,242,244;--tblr-success:#2fb344;--tblr-success-rgb:47,179,68;--tblr-success-fg:var(--tblr-light);--tblr-success-darken:#2aa13d;--tblr-success-lt:#eaf7ec;--tblr-success-lt-rgb:234,247,236;--tblr-info:#4299e1;--tblr-info-rgb:66,153,225;--tblr-info-fg:var(--tblr-light);--tblr-info-darken:#3b8acb;--tblr-info-lt:#ecf5fc;--tblr-info-lt-rgb:236,245,252;--tblr-warning:#f76707;--tblr-warning-rgb:247,103,7;--tblr-warning-fg:var(--tblr-light);--tblr-warning-darken:#de5d06;--tblr-warning-lt:#fef0e6;--tblr-warning-lt-rgb:254,240,230;--tblr-danger:#d63939;--tblr-danger-rgb:214,57,57;--tblr-danger-fg:var(--tblr-light);--tblr-danger-darken:#c13333;--tblr-danger-lt:#fbebeb;--tblr-danger-lt-rgb:251,235,235;--tblr-light:#f6f8fb;--tblr-light-rgb:246,248,251;--tblr-light-fg:var(--tblr-dark);--tblr-light-darken:#dddfe2;--tblr-light-lt:#fefeff;--tblr-light-lt-rgb:254,254,255;--tblr-dark:#182433;--tblr-dark-rgb:24,36,51;--tblr-dark-fg:var(--tblr-light);--tblr-dark-darken:#16202e;--tblr-dark-lt:#e8e9eb;--tblr-dark-lt-rgb:232,233,235;--tblr-muted:#6c7a91;--tblr-muted-rgb:108,122,145;--tblr-muted-fg:var(--tblr-light);--tblr-muted-darken:#616e83;--tblr-muted-lt:#f0f2f4;--tblr-muted-lt-rgb:240,242,244;--tblr-blue:#066fd1;--tblr-blue-rgb:6,111,209;--tblr-blue-fg:var(--tblr-light);--tblr-blue-darken:#0564bc;--tblr-blue-lt:#e6f1fa;--tblr-blue-lt-rgb:230,241,250;--tblr-azure:#4299e1;--tblr-azure-rgb:66,153,225;--tblr-azure-fg:var(--tblr-light);--tblr-azure-darken:#3b8acb;--tblr-azure-lt:#ecf5fc;--tblr-azure-lt-rgb:236,245,252;--tblr-indigo:#4263eb;--tblr-indigo-rgb:66,99,235;--tblr-indigo-fg:var(--tblr-light);--tblr-indigo-darken:#3b59d4;--tblr-indigo-lt:#eceffd;--tblr-indigo-lt-rgb:236,239,253;--tblr-purple:#ae3ec9;--tblr-purple-rgb:174,62,201;--tblr-purple-fg:var(--tblr-light);--tblr-purple-darken:#9d38b5;--tblr-purple-lt:#f7ecfa;--tblr-purple-lt-rgb:247,236,250;--tblr-pink:#d6336c;--tblr-pink-rgb:214,51,108;--tblr-pink-fg:var(--tblr-light);--tblr-pink-darken:#c12e61;--tblr-pink-lt:#fbebf0;--tblr-pink-lt-rgb:251,235,240;--tblr-red:#d63939;--tblr-red-rgb:214,57,57;--tblr-red-fg:var(--tblr-light);--tblr-red-darken:#c13333;--tblr-red-lt:#fbebeb;--tblr-red-lt-rgb:251,235,235;--tblr-orange:#f76707;--tblr-orange-rgb:247,103,7;--tblr-orange-fg:var(--tblr-light);--tblr-orange-darken:#de5d06;--tblr-orange-lt:#fef0e6;--tblr-orange-lt-rgb:254,240,230;--tblr-yellow:#f59f00;--tblr-yellow-rgb:245,159,0;--tblr-yellow-fg:var(--tblr-light);--tblr-yellow-darken:#dd8f00;--tblr-yellow-lt:#fef5e6;--tblr-yellow-lt-rgb:254,245,230;--tblr-lime:#74b816;--tblr-lime-rgb:116,184,22;--tblr-lime-fg:var(--tblr-light);--tblr-lime-darken:#68a614;--tblr-lime-lt:#f1f8e8;--tblr-lime-lt-rgb:241,248,232;--tblr-green:#2fb344;--tblr-green-rgb:47,179,68;--tblr-green-fg:var(--tblr-light);--tblr-green-darken:#2aa13d;--tblr-green-lt:#eaf7ec;--tblr-green-lt-rgb:234,247,236;--tblr-teal:#0ca678;--tblr-teal-rgb:12,166,120;--tblr-teal-fg:var(--tblr-light);--tblr-teal-darken:#0b956c;--tblr-teal-lt:#e7f6f2;--tblr-teal-lt-rgb:231,246,242;--tblr-cyan:#17a2b8;--tblr-cyan-rgb:23,162,184;--tblr-cyan-fg:var(--tblr-light);--tblr-cyan-darken:#1592a6;--tblr-cyan-lt:#e8f6f8;--tblr-cyan-lt-rgb:232,246,248;--tblr-x:#000000;--tblr-x-rgb:0,0,0;--tblr-x-fg:var(--tblr-light);--tblr-x-darken:black;--tblr-x-lt:#e6e6e6;--tblr-x-lt-rgb:230,230,230;--tblr-facebook:#1877f2;--tblr-facebook-rgb:24,119,242;--tblr-facebook-fg:var(--tblr-light);--tblr-facebook-darken:#166bda;--tblr-facebook-lt:#e8f1fe;--tblr-facebook-lt-rgb:232,241,254;--tblr-twitter:#1da1f2;--tblr-twitter-rgb:29,161,242;--tblr-twitter-fg:var(--tblr-light);--tblr-twitter-darken:#1a91da;--tblr-twitter-lt:#e8f6fe;--tblr-twitter-lt-rgb:232,246,254;--tblr-linkedin:#0a66c2;--tblr-linkedin-rgb:10,102,194;--tblr-linkedin-fg:var(--tblr-light);--tblr-linkedin-darken:#095caf;--tblr-linkedin-lt:#e7f0f9;--tblr-linkedin-lt-rgb:231,240,249;--tblr-google:#dc4e41;--tblr-google-rgb:220,78,65;--tblr-google-fg:var(--tblr-light);--tblr-google-darken:#c6463b;--tblr-google-lt:#fcedec;--tblr-google-lt-rgb:252,237,236;--tblr-youtube:#ff0000;--tblr-youtube-rgb:255,0,0;--tblr-youtube-fg:var(--tblr-light);--tblr-youtube-darken:#e60000;--tblr-youtube-lt:#ffe6e6;--tblr-youtube-lt-rgb:255,230,230;--tblr-vimeo:#1ab7ea;--tblr-vimeo-rgb:26,183,234;--tblr-vimeo-fg:var(--tblr-light);--tblr-vimeo-darken:#17a5d3;--tblr-vimeo-lt:#e8f8fd;--tblr-vimeo-lt-rgb:232,248,253;--tblr-dribbble:#ea4c89;--tblr-dribbble-rgb:234,76,137;--tblr-dribbble-fg:var(--tblr-light);--tblr-dribbble-darken:#d3447b;--tblr-dribbble-lt:#fdedf3;--tblr-dribbble-lt-rgb:253,237,243;--tblr-github:#181717;--tblr-github-rgb:24,23,23;--tblr-github-fg:var(--tblr-light);--tblr-github-darken:#161515;--tblr-github-lt:#e8e8e8;--tblr-github-lt-rgb:232,232,232;--tblr-instagram:#e4405f;--tblr-instagram-rgb:228,64,95;--tblr-instagram-fg:var(--tblr-light);--tblr-instagram-darken:#cd3a56;--tblr-instagram-lt:#fcecef;--tblr-instagram-lt-rgb:252,236,239;--tblr-pinterest:#bd081c;--tblr-pinterest-rgb:189,8,28;--tblr-pinterest-fg:var(--tblr-light);--tblr-pinterest-darken:#aa0719;--tblr-pinterest-lt:#f8e6e8;--tblr-pinterest-lt-rgb:248,230,232;--tblr-vk:#6383a8;--tblr-vk-rgb:99,131,168;--tblr-vk-fg:var(--tblr-light);--tblr-vk-darken:#597697;--tblr-vk-lt:#eff3f6;--tblr-vk-lt-rgb:239,243,246;--tblr-rss:#ffa500;--tblr-rss-rgb:255,165,0;--tblr-rss-fg:var(--tblr-light);--tblr-rss-darken:#e69500;--tblr-rss-lt:#fff6e6;--tblr-rss-lt-rgb:255,246,230;--tblr-flickr:#0063dc;--tblr-flickr-rgb:0,99,220;--tblr-flickr-fg:var(--tblr-light);--tblr-flickr-darken:#0059c6;--tblr-flickr-lt:#e6effc;--tblr-flickr-lt-rgb:230,239,252;--tblr-bitbucket:#0052cc;--tblr-bitbucket-rgb:0,82,204;--tblr-bitbucket-fg:var(--tblr-light);--tblr-bitbucket-darken:#004ab8;--tblr-bitbucket-lt:#e6eefa;--tblr-bitbucket-lt-rgb:230,238,250;--tblr-tabler:#066fd1;--tblr-tabler-rgb:6,111,209;--tblr-tabler-fg:var(--tblr-light);--tblr-tabler-darken:#0564bc;--tblr-tabler-lt:#e6f1fa;--tblr-tabler-lt-rgb:230,241,250;--tblr-gray-50:#f6f8fb;--tblr-gray-50-rgb:246,248,251;--tblr-gray-50-fg:var(--tblr-dark);--tblr-gray-50-darken:#dddfe2;--tblr-gray-50-lt:#fefeff;--tblr-gray-50-lt-rgb:254,254,255;--tblr-gray-100:#eef3f6;--tblr-gray-100-rgb:238,243,246;--tblr-gray-100-fg:var(--tblr-dark);--tblr-gray-100-darken:#d6dbdd;--tblr-gray-100-lt:#fdfefe;--tblr-gray-100-lt-rgb:253,254,254;--tblr-gray-200:#dce1e7;--tblr-gray-200-rgb:220,225,231;--tblr-gray-200-fg:var(--tblr-dark);--tblr-gray-200-darken:#c6cbd0;--tblr-gray-200-lt:#fcfcfd;--tblr-gray-200-lt-rgb:252,252,253;--tblr-gray-300:#b8c4d4;--tblr-gray-300-rgb:184,196,212;--tblr-gray-300-fg:var(--tblr-light);--tblr-gray-300-darken:#a6b0bf;--tblr-gray-300-lt:#f8f9fb;--tblr-gray-300-lt-rgb:248,249,251;--tblr-gray-400:#8a97ab;--tblr-gray-400-rgb:138,151,171;--tblr-gray-400-fg:var(--tblr-light);--tblr-gray-400-darken:#7c889a;--tblr-gray-400-lt:#f3f5f7;--tblr-gray-400-lt-rgb:243,245,247;--tblr-gray-500:#6c7a91;--tblr-gray-500-rgb:108,122,145;--tblr-gray-500-fg:var(--tblr-light);--tblr-gray-500-darken:#616e83;--tblr-gray-500-lt:#f0f2f4;--tblr-gray-500-lt-rgb:240,242,244;--tblr-gray-600:#49566c;--tblr-gray-600-rgb:73,86,108;--tblr-gray-600-fg:var(--tblr-light);--tblr-gray-600-darken:#424d61;--tblr-gray-600-lt:#edeef0;--tblr-gray-600-lt-rgb:237,238,240;--tblr-gray-700:#3a4859;--tblr-gray-700-rgb:58,72,89;--tblr-gray-700-fg:var(--tblr-light);--tblr-gray-700-darken:#344150;--tblr-gray-700-lt:#ebedee;--tblr-gray-700-lt-rgb:235,237,238;--tblr-gray-800:#182433;--tblr-gray-800-rgb:24,36,51;--tblr-gray-800-fg:var(--tblr-light);--tblr-gray-800-darken:#16202e;--tblr-gray-800-lt:#e8e9eb;--tblr-gray-800-lt-rgb:232,233,235;--tblr-gray-900:#040a11;--tblr-gray-900-rgb:4,10,17;--tblr-gray-900-fg:var(--tblr-light);--tblr-gray-900-darken:#04090f;--tblr-gray-900-lt:#e6e7e7;--tblr-gray-900-lt-rgb:230,231,231;--tblr-spacer-0:0;--tblr-spacer-1:0.25rem;--tblr-spacer-2:0.5rem;--tblr-spacer-3:1rem;--tblr-spacer-4:1.5rem;--tblr-spacer-5:2rem;--tblr-spacer-6:2.5rem;--tblr-spacer:1rem;--tblr-bg-surface:var(--tblr-white);--tblr-bg-surface-secondary:var(--tblr-gray-100);--tblr-bg-surface-tertiary:var(--tblr-gray-50);--tblr-bg-surface-dark:var(--tblr-dark);--tblr-bg-forms:var(--tblr-bg-surface);--tblr-border-color:#dce1e7;--tblr-border-color-translucent:rgba(4, 32, 69, 0.1);--tblr-border-dark-color:#8a97ab;--tblr-border-dark-color-translucent:rgba(4, 32, 69, 0.27);--tblr-border-active-color:#aab2bf;--tblr-icon-color:var(--tblr-gray-400);--tblr-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-disabled-bg:var(--tblr-bg-surface-secondary);--tblr-disabled-color:var(--tblr-gray-300);--tblr-code-color:var(--tblr-gray-600);--tblr-code-bg:var(--tblr-bg-surface-secondary);--tblr-dark-mode-border-color:#25384f;--tblr-dark-mode-border-color-translucent:rgba(72, 110, 149, 0.14);--tblr-dark-mode-border-active-color:#2c415d;--tblr-dark-mode-border-dark-color:#1f2e41;--tblr-page-padding:var(--tblr-spacer-3);--tblr-page-padding-y:var(--tblr-spacer-4);--tblr-font-weight-light:300;--tblr-font-weight-normal:400;--tblr-font-weight-medium:500;--tblr-font-weight-bold:600;--tblr-font-weight-black:700;--tblr-font-weight-headings:var(--tblr-font-weight-bold);--tblr-font-size-h1:1.5rem;--tblr-font-size-h2:1.25rem;--tblr-font-size-h3:1rem;--tblr-font-size-h4:0.875rem;--tblr-font-size-h5:0.75rem;--tblr-font-size-h6:0.625rem;--tblr-line-height-h1:2rem;--tblr-line-height-h2:1.75rem;--tblr-line-height-h3:1.5rem;--tblr-line-height-h4:1.25rem;--tblr-line-height-h5:1rem;--tblr-line-height-h6:1rem;--tblr-box-shadow:rgba(var(--tblr-body-color-rgb), 0.04) 0 2px 4px 0;--tblr-box-shadow-border:inset 0 0 0 1px var(--tblr-border-color-translucent);--tblr-box-shadow-transparent:0 0 0 0 transparent;--tblr-box-shadow-input:0 1px 1px rgba(var(--tblr-body-color-rgb), 0.06);--tblr-box-shadow-card:0 0 4px rgba(var(--tblr-body-color-rgb), 0.04);--tblr-box-shadow-card-hover:rgba(var(--tblr-body-color-rgb), 0.16) 0 2px 16px 0;--tblr-box-shadow-dropdown:0 16px 24px 2px rgba(0, 0, 0, 0.07),0 6px 30px 5px rgba(0, 0, 0, 0.06),0 8px 10px -5px rgba(0, 0, 0, 0.1)}@media (max-width:991.98px){:host,:root,[data-bs-theme=light]{--tblr-page-padding:var(--tblr-spacer-2)}}@keyframes pulse{from{opacity:1;transform:scale3d(.8,.8,.8)}50%{transform:scale3d(1,1,1);opacity:1}to{opacity:1;transform:scale3d(.8,.8,.8)}}@keyframes tada{0%{transform:scale3d(1,1,1)}10%,5%{transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-5deg)}15%,25%,35%,45%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,5deg)}20%,30%,40%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-5deg)}50%{transform:scale3d(1,1,1)}}@keyframes rotate-360{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes blink{from{opacity:0}50%{opacity:1}to{opacity:0}}body{letter-spacing:0;touch-action:manipulation;text-rendering:optimizeLegibility;font-feature-settings:"liga" 0,"cv03","cv04","cv11";position:relative;min-height:100%;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{background:0 0}}*{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),0.16)}::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){::-webkit-scrollbar{-webkit-transition:none;transition:none}}::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}::-webkit-scrollbar-track{background:0 0}:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}::-webkit-scrollbar-corner{background:0 0}.layout-fluid .container,.layout-fluid [class*=" container-"],.layout-fluid [class^=container-]{max-width:100%}.layout-boxed{--tblr-theme-boxed-border-radius:0;--tblr-theme-boxed-width:1320px}@media (min-width:768px){.layout-boxed{background:#182433 linear-gradient(to right,rgba(255,255,255,.1),transparent) fixed;padding:1rem;--tblr-theme-boxed-border-radius:6px}}.layout-boxed .page{margin:0 auto;max-width:var(--tblr-theme-boxed-width);border-radius:var(--tblr-theme-boxed-border-radius);color:var(--tblr-body-color)}@media (min-width:768px){.layout-boxed .page{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background:var(--tblr-body-bg)}}.layout-boxed .page>.navbar:first-child{border-top-left-radius:var(--tblr-theme-boxed-border-radius);border-top-right-radius:var(--tblr-theme-boxed-border-radius)}.navbar{--tblr-navbar-bg:var(--tblr-bg-surface);--tblr-navbar-border-width:var(--tblr-border-width);--tblr-navbar-active-border-color:var(--tblr-primary);--tblr-navbar-active-bg:rgba(0, 0, 0, 0.2);--tblr-navbar-border-color:var(--tblr-border-color);align-items:stretch;min-height:3.5rem;box-shadow:inset 0 calc(-1 * var(--tblr-navbar-border-width)) 0 0 var(--tblr-navbar-border-color);background:var(--tblr-navbar-bg);color:var(--tblr-navbar-color)}.navbar-collapse .navbar{flex-grow:1}.navbar.collapsing{min-height:0}.navbar .dropdown-menu{position:absolute;z-index:1030}.navbar .navbar-nav{min-height:3rem}.navbar .navbar-nav .nav-link{position:relative;min-width:2.5rem;min-height:2.5rem;justify-content:center;border-radius:var(--tblr-border-radius)}.navbar .navbar-nav .nav-link .badge{position:absolute;top:.375rem;right:.375rem;transform:translate(50%,-50%)}@media (max-width:575.98px){.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:576px){.navbar-expand-sm .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-sm .nav-item.active{position:relative}.navbar-expand-sm .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-sm .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-sm.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-sm.navbar-vertical~.navbar,.navbar-expand-sm.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-sm.navbar-vertical.navbar-right~.navbar,.navbar-expand-sm.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:767.98px){.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-expand-md .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-md .nav-item.active{position:relative}.navbar-expand-md .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-md .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-md.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-md.navbar-vertical~.navbar,.navbar-expand-md.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-md.navbar-vertical.navbar-right~.navbar,.navbar-expand-md.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:991.98px){.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-expand-lg .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-lg .nav-item.active{position:relative}.navbar-expand-lg .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-lg .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-lg.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-lg.navbar-vertical~.navbar,.navbar-expand-lg.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-lg.navbar-vertical.navbar-right~.navbar,.navbar-expand-lg.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:1199.98px){.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-expand-xl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xl .nav-item.active{position:relative}.navbar-expand-xl .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-xl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xl.navbar-vertical~.navbar,.navbar-expand-xl.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-xl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xl.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}@media (max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-expand-xxl .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand-xxl .nav-item.active{position:relative}.navbar-expand-xxl .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand-xxl .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand-xxl.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand-xxl.navbar-vertical~.navbar,.navbar-expand-xxl.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand-xxl.navbar-vertical.navbar-right~.navbar,.navbar-expand-xxl.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}}.navbar-expand .navbar-collapse{flex-direction:column}.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-expand .navbar-collapse{width:auto;flex:1 1 auto}.navbar-expand .nav-item.active{position:relative}.navbar-expand .nav-item.active .nav-link{color:var(--tblr-navbar-active-color)}.navbar-expand .nav-item.active:after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;border:0 var(--tblr-border-style) var(--tblr-navbar-active-border-color);border-bottom-width:2px}.navbar-expand.navbar-vertical{box-shadow:inset calc(-1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical.navbar-right{box-shadow:inset calc(1 * var(--tblr-navbar-border-width)) 0 0 0 var(--tblr-navbar-border-color)}.navbar-expand.navbar-vertical~.navbar,.navbar-expand.navbar-vertical~.page-wrapper{margin-left:15rem}.navbar-expand.navbar-vertical.navbar-right~.navbar,.navbar-expand.navbar-vertical.navbar-right~.page-wrapper{margin-left:0;margin-right:15rem}.navbar-brand{display:inline-flex;align-items:center;font-weight:var(--tblr-font-weight-bold);margin:0;line-height:1;gap:.5rem}.navbar-brand-image{height:2rem;width:auto}.navbar-toggler{border:0;width:2rem;height:2rem;position:relative;display:flex;align-items:center;justify-content:center}.navbar-toggler-icon{height:2px;width:1.25em;background:currentColor;border-radius:10px;transition:top .2s .2s,bottom .2s .2s,transform .2s,opacity 0s .2s;position:relative}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon{transition:none}}.navbar-toggler-icon:after,.navbar-toggler-icon:before{content:"";display:block;height:inherit;width:inherit;border-radius:inherit;background:inherit;position:absolute;left:0;transition:inherit}@media (prefers-reduced-motion:reduce){.navbar-toggler-icon:after,.navbar-toggler-icon:before{transition:none}}.navbar-toggler-icon:before{top:-.45em}.navbar-toggler-icon:after{bottom:-.45em}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transform:rotate(45deg);transition:top .3s,bottom .3s,transform .3s .3s,opacity 0s .3s}@media (prefers-reduced-motion:reduce){.navbar-toggler[aria-expanded=true] .navbar-toggler-icon{transition:none}}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:before{top:0;transform:rotate(-90deg)}.navbar-toggler[aria-expanded=true] .navbar-toggler-icon:after{bottom:0;opacity:0}.navbar-transparent{--tblr-navbar-border-color:transparent!important;background:0 0!important}.navbar-nav{--tblr-nav-link-hover-bg:rgba(0, 0, 0, 0.04);margin:0;padding:0;align-items:stretch}.navbar-nav .nav-item{display:flex;flex-direction:column;justify-content:center}.navbar-side{margin:0;display:flex;flex-direction:row;align-items:center;justify-content:space-around}@media (min-width:576px){.navbar-vertical.navbar-expand-sm{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:576px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-sm{transition:none}}@media (min-width:576px){.navbar-vertical.navbar-expand-sm.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-sm .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-sm .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-sm .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-sm .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-sm>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-sm~.page{padding-left:15rem}.navbar-vertical.navbar-expand-sm~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-sm.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-sm .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-sm .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-sm .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:768px){.navbar-vertical.navbar-expand-md{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:768px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-md{transition:none}}@media (min-width:768px){.navbar-vertical.navbar-expand-md.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-md .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-md .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-md .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-md .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-md>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-md~.page{padding-left:15rem}.navbar-vertical.navbar-expand-md~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-md.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-md .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-md .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-md .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-md .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:992px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-lg{transition:none}}@media (min-width:992px){.navbar-vertical.navbar-expand-lg.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-lg .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-lg .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-lg .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-lg .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-lg>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-lg~.page{padding-left:15rem}.navbar-vertical.navbar-expand-lg~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-lg.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-lg .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-lg .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-lg .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1200px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xl{transition:none}}@media (min-width:1200px){.navbar-vertical.navbar-expand-xl.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-xl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xl~.page{padding-left:15rem}.navbar-vertical.navbar-expand-xl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xl.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-xl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}}@media (min-width:1400px) and (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand-xxl{transition:none}}@media (min-width:1400px){.navbar-vertical.navbar-expand-xxl.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand-xxl .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand-xxl .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand-xxl .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand-xxl .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand-xxl>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand-xxl~.page{padding-left:15rem}.navbar-vertical.navbar-expand-xxl~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand-xxl.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand-xxl .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand-xxl .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand-xxl .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}}.navbar-vertical.navbar-expand{width:15rem;position:fixed;top:0;left:0;bottom:0;z-index:1030;align-items:flex-start;transition:transform .3s;overflow-y:scroll;padding:0}@media (prefers-reduced-motion:reduce){.navbar-vertical.navbar-expand{transition:none}}.navbar-vertical.navbar-expand.navbar-right{left:auto;right:0}.navbar-vertical.navbar-expand .navbar-brand{padding:.75rem 0;justify-content:center}.navbar-vertical.navbar-expand .navbar-collapse{align-items:stretch}.navbar-vertical.navbar-expand .navbar-nav{flex-direction:column;flex-grow:1;min-height:auto}.navbar-vertical.navbar-expand .navbar-nav .nav-link{padding-top:.5rem;padding-bottom:.5rem}.navbar-vertical.navbar-expand>[class^=container]{flex-direction:column;align-items:stretch;min-height:100%;justify-content:flex-start;padding:0}.navbar-vertical.navbar-expand~.page{padding-left:15rem}.navbar-vertical.navbar-expand~.page [class^=container]{padding-left:1.5rem;padding-right:1.5rem}.navbar-vertical.navbar-expand.navbar-right~.page{padding-left:0;padding-right:15rem}.navbar-vertical.navbar-expand .navbar-collapse{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse [class^=container]{flex-direction:column;align-items:stretch;padding:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav{margin-left:0;margin-right:0}.navbar-vertical.navbar-expand .navbar-collapse .navbar-nav .nav-link{padding:.5rem calc(calc(var(--tblr-page-padding) * 2)/ 2);justify-content:flex-start}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu-columns{flex-direction:column}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu{padding:0;background:0 0;position:static;color:inherit;box-shadow:none;border:none;min-width:0;margin:0}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item{min-width:0;display:flex;width:auto;padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 1.75rem);color:inherit}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.disabled{color:var(--tblr-disabled-color);pointer-events:none;background-color:transparent}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item.active,.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-item:active{background:var(--tblr-navbar-active-bg)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 3.25rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-item{padding-left:calc(calc(calc(var(--tblr-page-padding) * 2)/ 2) + 4.75rem)}.navbar-vertical.navbar-expand .navbar-collapse .dropdown-toggle:after{margin-left:auto}.navbar-vertical.navbar-expand .navbar-collapse .nav-item.active:after{border-bottom-width:0;border-left-width:3px;right:auto;top:0;bottom:0}.navbar-overlap:after{content:"";height:9rem;position:absolute;top:100%;left:0;right:0;background:inherit;z-index:-1;box-shadow:inherit}.page{display:flex;flex-direction:column;position:relative;min-height:100%}.page-center{justify-content:center}.page-wrapper{flex:1;display:flex;flex-direction:column}@media print{.page-wrapper{margin:0!important}}.page-wrapper-full .page-body:first-child{margin:0;border-top:0}.page-body{margin-top:var(--tblr-page-padding-y);margin-bottom:var(--tblr-page-padding-y);display:flex;flex-direction:column;flex:1}.page-body-card{background:var(--tblr-bg-surface);border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);padding:var(--tblr-page-padding) 0;margin-bottom:0;flex:1}.page-body~.page-body-card{margin-top:0}.page-cover{background:no-repeat center/cover;min-height:9rem}@media (min-width:768px){.page-cover{min-height:12rem}}@media (min-width:992px){.page-cover{min-height:15rem}}.page-cover-overlay{position:relative}.page-cover-overlay:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.page-header{display:flex;flex-wrap:wrap;min-height:2.25rem;flex-direction:column;justify-content:center}.page-wrapper .page-header{margin:var(--tblr-page-padding-y) 0 0}.page-header-border{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding:var(--tblr-page-padding-y) 0;margin:0!important;background-color:var(--tblr-bg-surface)}.page-pretitle{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.page-title{margin:0;font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2);font-weight:var(--tblr-font-weight-headings);color:inherit;display:flex;align-items:center}.page-title svg{width:1.5rem;height:1.5rem;margin-right:.25rem}.page-title-lg{font-size:1.5rem;line-height:2rem}.page-subtitle{margin-top:.25rem;color:var(--tblr-secondary)}.page-cover{--tblr-page-cover-blur:20px;--tblr-page-cover-padding:1rem;min-height:6rem;padding:var(--tblr-page-cover-padding) 0;position:relative;overflow:hidden}.page-cover-img{position:absolute;top:calc(-2 * var(--tblr-page-cover-blur,0));left:calc(-2 * var(--tblr-page-cover-blur,0));right:calc(-2 * var(--tblr-page-cover-blur,0));bottom:calc(-2 * var(--tblr-page-cover-blur,0));pointer-events:none;filter:blur(var(--tblr-page-cover-blur));-o-object-fit:cover;object-fit:cover;background-size:cover;background-position:center;z-index:-1}.page-tabs{margin-top:.5rem;position:relative}.page-header-tabs .nav-bordered{border:0}.page-header-tabs+.page-body-card{margin-top:0}.footer{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);background-color:var(--tblr-bg-surface);padding:2rem 0;color:var(--tblr-gray-500);margin-top:auto}.footer-transparent{background-color:transparent;border-top:0}body:not(.theme-dark):not([data-bs-theme=dark]) .hide-theme-light{display:none!important}body:not(.theme-dark):not([data-bs-theme=dark]) .img-dark{display:none!important}body.theme-dark .hide-theme-dark,body[data-bs-theme=dark] .hide-theme-dark{display:none!important}body.theme-dark .img-light,body[data-bs-theme=dark] .img-light{display:none!important}[data-bs-theme=dark],body[data-bs-theme=dark] [data-bs-theme=light]{--tblr-body-color:#dce1e7;--tblr-body-color-rgb:220,225,231;--tblr-muted:#49566c;--tblr-body-bg:#151f2c;--tblr-body-bg-rgb:21,31,44;--tblr-emphasis-color:#ffffff;--tblr-emphasis-color-rgb:255,255,255;--tblr-bg-forms:#151f2c;--tblr-bg-surface:#182433;--tblr-bg-surface-dark:#151f2c;--tblr-bg-surface-secondary:#1b293a;--tblr-bg-surface-tertiary:#151f2c;--tblr-link-color:#0884f8;--tblr-link-hover-color:#066fd1;--tblr-active-bg:#1b293a;--tblr-disabled-color:var(--tblr-gray-700);--tblr-border-color:var(--tblr-dark-mode-border-color);--tblr-border-color-translucent:var(--tblr-dark-mode-border-color-translucent);--tblr-border-dark-color:var(--tblr-dark-mode-border-dark-color);--tblr-border-active-color:var(--tblr-dark-mode-border-active-color);--tblr-btn-color:#151f2c;--tblr-code-color:var(--tblr-body-color);--tblr-code-bg:#1f2e41;--tblr-primary-lt:#162c43;--tblr-primary-lt-rgb:22,44,67;--tblr-secondary-lt:#202d3c;--tblr-secondary-lt-rgb:32,45,60;--tblr-success-lt:#1a3235;--tblr-success-lt-rgb:26,50,53;--tblr-info-lt:#1c3044;--tblr-info-lt-rgb:28,48,68;--tblr-warning-lt:#2e2b2f;--tblr-warning-lt-rgb:46,43,47;--tblr-danger-lt:#2b2634;--tblr-danger-lt-rgb:43,38,52;--tblr-light-lt:#2e3947;--tblr-light-lt-rgb:46,57,71;--tblr-dark-lt:#182433;--tblr-dark-lt-rgb:24,36,51;--tblr-muted-lt:#202d3c;--tblr-muted-lt-rgb:32,45,60;--tblr-blue-lt:#162c43;--tblr-blue-lt-rgb:22,44,67;--tblr-azure-lt:#1c3044;--tblr-azure-lt-rgb:28,48,68;--tblr-indigo-lt:#1c2a45;--tblr-indigo-lt-rgb:28,42,69;--tblr-purple-lt:#272742;--tblr-purple-lt-rgb:39,39,66;--tblr-pink-lt:#2b2639;--tblr-pink-lt-rgb:43,38,57;--tblr-red-lt:#2b2634;--tblr-red-lt-rgb:43,38,52;--tblr-orange-lt:#2e2b2f;--tblr-orange-lt-rgb:46,43,47;--tblr-yellow-lt:#2e302e;--tblr-yellow-lt-rgb:46,48,46;--tblr-lime-lt:#213330;--tblr-lime-lt-rgb:33,51,48;--tblr-green-lt:#1a3235;--tblr-green-lt-rgb:26,50,53;--tblr-teal-lt:#17313a;--tblr-teal-lt-rgb:23,49,58;--tblr-cyan-lt:#183140;--tblr-cyan-lt-rgb:24,49,64;--tblr-x-lt:#16202e;--tblr-x-lt-rgb:22,32,46;--tblr-facebook-lt:#182c46;--tblr-facebook-lt-rgb:24,44,70;--tblr-twitter-lt:#193146;--tblr-twitter-lt-rgb:25,49,70;--tblr-linkedin-lt:#172b41;--tblr-linkedin-lt-rgb:23,43,65;--tblr-google-lt:#2c2834;--tblr-google-lt-rgb:44,40,52;--tblr-youtube-lt:#2f202e;--tblr-youtube-lt-rgb:47,32,46;--tblr-vimeo-lt:#183345;--tblr-vimeo-lt-rgb:24,51,69;--tblr-dribbble-lt:#2d283c;--tblr-dribbble-lt-rgb:45,40,60;--tblr-github-lt:#182330;--tblr-github-lt-rgb:24,35,48;--tblr-instagram-lt:#2c2737;--tblr-instagram-lt-rgb:44,39,55;--tblr-pinterest-lt:#292131;--tblr-pinterest-lt-rgb:41,33,49;--tblr-vk-lt:#202e3f;--tblr-vk-lt-rgb:32,46,63;--tblr-rss-lt:#2f312e;--tblr-rss-lt-rgb:47,49,46;--tblr-flickr-lt:#162a44;--tblr-flickr-lt-rgb:22,42,68;--tblr-bitbucket-lt:#162942;--tblr-bitbucket-lt-rgb:22,41,66;--tblr-tabler-lt:#162c43;--tblr-tabler-lt-rgb:22,44,67}[data-bs-theme=dark] .navbar-brand-autodark .navbar-brand-image{filter:brightness(0) invert(1)}.accordion{--tblr-accordion-color:var(--tblr-body-color);--tblr-accordion-border-color:var(--tblr-border-color);--tblr-accordion-border-radius:var(--tblr-border-radius);--tblr-accordion-inner-border-radius:calc(var(--tblr-border-radius) - (var(--tblr-border-width)));--tblr-accordion-btn-color:var(--tblr-accordion-color);--tblr-accordion-btn-bg:transparent;--tblr-accordion-btn-toggle-width:1.25rem;--tblr-accordion-padding-x:1.25rem;--tblr-accordion-btn-padding-x:var(--tblr-accordion-padding-x);--tblr-accordion-btn-padding-y:1rem;--tblr-accordion-body-padding-x:var(--tblr-accordion-padding-x);--tblr-accordion-body-padding-y:1rem;--tblr-accordion-active-color:inherit;--tblr-accordion-gap:0;display:flex;flex-direction:column;gap:var(--tblr-accordion-gap)}.accordion-header{position:relative;display:flex;gap:1rem;align-items:center;width:100%;padding:var(--tblr-accordion-btn-padding-y) var(--tblr-accordion-padding-x);color:var(--tblr-accordion-btn-color);text-align:left;background-color:transparent;border:0;overflow-anchor:none;transition:transform .3s}.accordion-header:not(.collapsed){border-bottom-color:transparent;box-shadow:none;color:var(--tblr-accordion-active-color)}.accordion-header:hover{z-index:2}.accordion-header:focus{z-index:3;outline:0;box-shadow:var(--tblr-accordion-btn-focus-box-shadow)}.accordion-header:focus:not(:focus-visible){outline:0;box-shadow:none}.accordion-header-icon{color:var(--tblr-secondary)}.accordion-header-toggle{display:flex;line-height:1;transition:.3s transform;margin-left:auto;margin-right:0;color:var(--tblr-secondary);width:var(--tblr-accordion-btn-toggle-width);height:var(--tblr-accordion-btn-toggle-width)}.accordion-header:not(.collapsed) .accordion-header-toggle{transform:rotate(-180deg);color:var(--tblr-accordion-active-color)}.accordion-header-toggle path{transition:.3s opacity}.accordion-header:not(.collapsed) .accordion-header-toggle-plus path:first-child{opacity:0}.accordion-header-text{margin-bottom:0}.accordion-header-text .h1,.accordion-header-text .h2,.accordion-header-text .h3,.accordion-header-text .h4,.accordion-header-text .h5,.accordion-header-text .h6,.accordion-header-text h1,.accordion-header-text h2,.accordion-header-text h3,.accordion-header-text h4,.accordion-header-text h5,.accordion-header-text h6{margin-bottom:0}.accordion-item{color:var(--tblr-accordion-color);border:var(--tblr-border-width) solid var(--tblr-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--tblr-accordion-border-radius);border-top-right-radius:var(--tblr-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-top-left-radius:var(--tblr-accordion-inner-border-radius);border-top-right-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header.collapsed{border-bottom-right-radius:var(--tblr-accordion-inner-border-radius);border-bottom-left-radius:var(--tblr-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--tblr-accordion-border-radius);border-bottom-left-radius:var(--tblr-accordion-border-radius)}.accordion-body{color:var(--tblr-secondary);padding:0 var(--tblr-accordion-body-padding-x) var(--tblr-accordion-body-padding-y)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-collapse,.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-tabs{--tblr-accordion-gap:0.75rem}.accordion-tabs>.accordion-item{border:var(--tblr-border-width) solid var(--tblr-accordion-border-color);border-radius:var(--tblr-accordion-border-radius)}.accordion-inverted .accordion-header-toggle{order:-1;margin-left:0}.alert{--tblr-alert-bg:transparent;--tblr-alert-padding-x:1rem;--tblr-alert-padding-y:0.75rem;--tblr-alert-margin-bottom:1rem;--tblr-alert-color:inherit;--tblr-alert-border-color:var(--tblr-border-color);--tblr-alert-border:var(--tblr-border-width) solid var(--tblr-alert-border-color);--tblr-alert-border-radius:var(--tblr-border-radius);--tblr-alert-link-color:inherit;--tblr-alert-heading-font-weight:var(--tblr-font-weight-medium);position:relative;padding:var(--tblr-alert-padding-y) var(--tblr-alert-padding-x);margin-bottom:var(--tblr-alert-margin-bottom);background-color:var(--tblr-alert-bg);border-radius:var(--tblr-alert-border-radius);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-alert-border-color);display:flex;flex-direction:row;gap:1rem}.alert-heading{color:inherit;margin-bottom:.25rem;font-weight:var(--tblr-alert-heading-font-weight)}.alert-description{color:var(--tblr-secondary)}.alert-icon{color:var(--tblr-alert-color);width:1.25rem!important;height:1.25rem!important}.alert-action{color:var(--tblr-alert-color);text-decoration:underline}.alert-action:hover{text-decoration:none}.alert-list{margin:0}.alert-link{font-weight:var(--tblr-font-weight-bold);color:var(--tblr-alert-link-color)}.alert-link,.alert-link:hover{color:var(--tblr-alert-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:1;padding:calc(var(--tblr-alert-padding-y) * 1.25) var(--tblr-alert-padding-x)}.alert-important{border-color:var(--tblr-alert-color);color:var(--tblr-alert-color)}.alert-important .alert-description,.alert-important .btn-close{color:inherit}.alert-primary{--tblr-alert-color:var(--tblr-primary)}.alert-secondary{--tblr-alert-color:var(--tblr-secondary)}.alert-success{--tblr-alert-color:var(--tblr-success)}.alert-info{--tblr-alert-color:var(--tblr-info)}.alert-warning{--tblr-alert-color:var(--tblr-warning)}.alert-danger{--tblr-alert-color:var(--tblr-danger)}.alert-light{--tblr-alert-color:var(--tblr-light)}.alert-dark{--tblr-alert-color:var(--tblr-dark)}.alert-muted{--tblr-alert-color:var(--tblr-muted)}.alert-blue{--tblr-alert-color:var(--tblr-blue)}.alert-azure{--tblr-alert-color:var(--tblr-azure)}.alert-indigo{--tblr-alert-color:var(--tblr-indigo)}.alert-purple{--tblr-alert-color:var(--tblr-purple)}.alert-pink{--tblr-alert-color:var(--tblr-pink)}.alert-red{--tblr-alert-color:var(--tblr-red)}.alert-orange{--tblr-alert-color:var(--tblr-orange)}.alert-yellow{--tblr-alert-color:var(--tblr-yellow)}.alert-lime{--tblr-alert-color:var(--tblr-lime)}.alert-green{--tblr-alert-color:var(--tblr-green)}.alert-teal{--tblr-alert-color:var(--tblr-teal)}.alert-cyan{--tblr-alert-color:var(--tblr-cyan)}.alert-x{--tblr-alert-color:var(--tblr-x)}.alert-facebook{--tblr-alert-color:var(--tblr-facebook)}.alert-twitter{--tblr-alert-color:var(--tblr-twitter)}.alert-linkedin{--tblr-alert-color:var(--tblr-linkedin)}.alert-google{--tblr-alert-color:var(--tblr-google)}.alert-youtube{--tblr-alert-color:var(--tblr-youtube)}.alert-vimeo{--tblr-alert-color:var(--tblr-vimeo)}.alert-dribbble{--tblr-alert-color:var(--tblr-dribbble)}.alert-github{--tblr-alert-color:var(--tblr-github)}.alert-instagram{--tblr-alert-color:var(--tblr-instagram)}.alert-pinterest{--tblr-alert-color:var(--tblr-pinterest)}.alert-vk{--tblr-alert-color:var(--tblr-vk)}.alert-rss{--tblr-alert-color:var(--tblr-rss)}.alert-flickr{--tblr-alert-color:var(--tblr-flickr)}.alert-bitbucket{--tblr-alert-color:var(--tblr-bitbucket)}.alert-tabler{--tblr-alert-color:var(--tblr-tabler)}.avatar{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-bg:var(--tblr-bg-surface-secondary);--tblr-avatar-box-shadow:var(--tblr-box-shadow-border);--tblr-avatar-font-size:1rem;--tblr-avatar-icon-size:1.5rem;position:relative;width:var(--tblr-avatar-size);height:var(--tblr-avatar-size);font-size:var(--tblr-avatar-font-size);font-weight:var(--tblr-font-weight-medium);line-height:1;display:inline-flex;align-items:center;justify-content:center;color:var(--tblr-secondary);text-align:center;text-transform:uppercase;vertical-align:bottom;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--tblr-avatar-bg) no-repeat center/cover;border-radius:var(--tblr-border-radius);box-shadow:var(--tblr-avatar-box-shadow)}.avatar .icon{width:var(--tblr-avatar-icon-size);height:var(--tblr-avatar-icon-size)}.avatar .badge{position:absolute;right:0;bottom:0;border-radius:100rem;box-shadow:0 0 0 calc(var(--tblr-avatar-status-size)/ 4) var(--tblr-bg-surface)}a.avatar{cursor:pointer}.avatar-rounded{border-radius:100rem}.avatar-xxs{--tblr-avatar-size:1rem;--tblr-avatar-status-size:0.25rem;--tblr-avatar-font-size:0.5rem;--tblr-avatar-icon-size:0.75rem}.avatar-xxs .badge:empty{width:.25rem;height:.25rem}.avatar-xs{--tblr-avatar-size:1.25rem;--tblr-avatar-status-size:0.375rem;--tblr-avatar-font-size:0.625rem;--tblr-avatar-icon-size:0.75rem}.avatar-xs .badge:empty{width:.375rem;height:.375rem}.avatar-sm{--tblr-avatar-size:2rem;--tblr-avatar-status-size:0.5rem;--tblr-avatar-font-size:0.75rem;--tblr-avatar-icon-size:1.5rem}.avatar-sm .badge:empty{width:.5rem;height:.5rem}.avatar-md{--tblr-avatar-size:2.5rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:0.875rem;--tblr-avatar-icon-size:1.5rem}.avatar-md .badge:empty{width:.75rem;height:.75rem}.avatar-lg{--tblr-avatar-size:3rem;--tblr-avatar-status-size:0.75rem;--tblr-avatar-font-size:1.25rem;--tblr-avatar-icon-size:2rem}.avatar-lg .badge:empty{width:.75rem;height:.75rem}.avatar-xl{--tblr-avatar-size:5rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:2rem;--tblr-avatar-icon-size:3rem}.avatar-xl .badge:empty{width:1rem;height:1rem}.avatar-2xl{--tblr-avatar-size:7rem;--tblr-avatar-status-size:1rem;--tblr-avatar-font-size:3rem;--tblr-avatar-icon-size:5rem}.avatar-2xl .badge:empty{width:1rem;height:1rem}.avatar-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.avatar-list a.avatar:hover{z-index:1}.avatar-list-stacked{display:block;--tblr-list-gap:0}.avatar-list-stacked .avatar{margin-right:calc(-.5 * var(--tblr-avatar-size))!important;box-shadow:var(--tblr-avatar-box-shadow),0 0 0 2px var(--tblr-card-cap-bg,var(--tblr-card-bg,var(--tblr-bg-surface)))}.avatar-upload{width:4rem;height:4rem;border:var(--tblr-border-width) dashed var(--tblr-border-color);background:var(--tblr-bg-forms);box-shadow:none;flex-direction:column;transition:color .3s,background-color .3s}@media (prefers-reduced-motion:reduce){.avatar-upload{transition:none}}.avatar-upload svg{width:1.5rem;height:1.5rem;stroke-width:1}.avatar-upload:hover{border-color:var(--tblr-primary);color:var(--tblr-primary);text-decoration:none}.avatar-upload-text{font-size:.625rem;line-height:1;margin-top:.25rem}.avatar-cover{margin-top:calc(-.5 * var(--tblr-avatar-size));box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-body-bg))}.badge{--tblr-badge-padding-x:0.5em;--tblr-badge-padding-y:0.25em;--tblr-badge-font-size:0.85714285em;--tblr-badge-font-weight:var(--tblr-font-weight-medium);--tblr-badge-color:var(--tblr-secondary);--tblr-badge-border-radius:var(--tblr-border-radius);--tblr-badge-icon-size:1em;--tblr-badge-line-height:1;display:inline-flex;padding:var(--tblr-badge-padding-y) var(--tblr-badge-padding-x);font-weight:var(--tblr-badge-font-weight);font-size:var(--tblr-badge-font-size);color:var(--tblr-badge-color);text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:.25rem;background:var(--tblr-bg-surface-secondary);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:var(--tblr-badge-border-radius);min-width:calc(1em + var(--tblr-badge-padding-y) * 2 + 2px);letter-spacing:.04em;vertical-align:bottom;line-height:var(--tblr-badge-line-height)}a.badge{color:var(--tblr-bg-surface)}.badge .icon{width:1em;height:1em;font-size:var(--tblr-badge-icon-size);stroke-width:2}.badge-dot,.badge:empty{display:inline-block;width:10px;height:10px;min-width:0;min-height:auto;padding:0;border-radius:100rem;vertical-align:baseline}.badge-outline{background-color:transparent;border:var(--tblr-border-width) var(--tblr-border-style) currentColor}.badge-pill{border-radius:100rem}.badges-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.badge-notification{position:absolute!important;top:0!important;right:0!important;transform:translate(50%,-50%);z-index:1}.badge-blink{animation:blink 2s infinite}.badge-sm{--tblr-badge-font-size:0.71428571em;--tblr-badge-icon-size:1em;--tblr-badge-padding-y:2px;--tblr-badge-padding-x:0.25rem}.badge-lg{--tblr-badge-font-size:1em;--tblr-badge-icon-size:1em;--tblr-badge-padding-y:0.25rem;--tblr-badge-padding-x:0.5rem}.badge-icononly{--tblr-badge-padding-x:0}.breadcrumb{--tblr-breadcrumb-item-active-font-weight:var(--tblr-font-weight-bold);--tblr-breadcrumb-item-disabled-color:var(--tblr-disabled-color);--tblr-breadcrumb-link-color:var(--tblr-link-color);padding:0;margin:0;background:0 0}.breadcrumb a{color:var(--tblr-breadcrumb-link-color)}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-muted{--tblr-breadcrumb-link-color:var(--tblr-secondary)}.breadcrumb-item.active{font-weight:var(--tblr-breadcrumb-item-active-font-weight)}.breadcrumb-item.active a{color:inherit;pointer-events:none}.breadcrumb-item.disabled{color:var(--tblr-breadcrumb-item-disabled-color)}.breadcrumb-item.disabled:before{color:inherit}.breadcrumb-item.disabled a{color:inherit;pointer-events:none}.breadcrumb-dots{--tblr-breadcrumb-divider:"·"}.breadcrumb-arrows{--tblr-breadcrumb-divider:"›"}.breadcrumb-bullets{--tblr-breadcrumb-divider:"•"}.btn{--tblr-btn-icon-size:1.25rem;--tblr-btn-bg:var(--tblr-bg-surface);--tblr-btn-color:var(--tblr-body-color);--tblr-btn-border-color:var(--tblr-border-color);--tblr-btn-hover-bg:var(--tblr-btn-bg);--tblr-btn-hover-border-color:var(--tblr-border-active-color);--tblr-btn-box-shadow:var(--tblr-box-shadow-input);--tblr-btn-active-color:var(--tblr-primary);--tblr-btn-active-bg:rgba(var(--tblr-primary-rgb), 0.04);--tblr-btn-active-border-color:var(--tblr-primary);display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;box-shadow:var(--tblr-btn-box-shadow);position:relative}.btn .icon{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);min-width:var(--tblr-btn-icon-size);font-size:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4);vertical-align:bottom;color:inherit}.btn .avatar{width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);margin:0 calc(var(--tblr-btn-padding-x)/ 2) 0 calc(var(--tblr-btn-padding-x)/ -4)}.btn .icon-right{margin:0 calc(var(--tblr-btn-padding-x)/ -4) 0 calc(var(--tblr-btn-padding-x)/ 2)}.btn .badge{top:auto}.btn-check+.btn:hover{color:var(--tblr-btn-hover-color);background-color:var(--tblr-btn-hover-bg);border-color:var(--tblr-btn-hover-border-color)}.btn-link{color:#077cea;background-color:transparent;border-color:transparent;box-shadow:none}.btn-link .icon{color:inherit}.btn-link:hover{color:#0559a7;border-color:transparent}.btn-primary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-primary-fg);--tblr-btn-bg:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:var(--tblr-primary-darken);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary-darken);--tblr-btn-disabled-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-primary);--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-border-color:var(--tblr-primary)}.btn-secondary{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-secondary-fg);--tblr-btn-bg:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:var(--tblr-secondary-darken);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary-darken);--tblr-btn-disabled-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-secondary);--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-border-color:var(--tblr-secondary)}.btn-success{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-success-fg);--tblr-btn-bg:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:var(--tblr-success-darken);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success-darken);--tblr-btn-disabled-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-success);--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-border-color:var(--tblr-success)}.btn-info{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-info-fg);--tblr-btn-bg:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:var(--tblr-info-darken);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info-darken);--tblr-btn-disabled-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-info);--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-border-color:var(--tblr-info)}.btn-warning{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-warning-fg);--tblr-btn-bg:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:var(--tblr-warning-darken);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning-darken);--tblr-btn-disabled-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-warning);--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-border-color:var(--tblr-warning)}.btn-danger{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-danger-fg);--tblr-btn-bg:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:var(--tblr-danger-darken);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger-darken);--tblr-btn-disabled-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-danger);--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-border-color:var(--tblr-danger)}.btn-light{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-light-fg);--tblr-btn-bg:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:var(--tblr-light-darken);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light-darken);--tblr-btn-disabled-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-light);--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-border-color:var(--tblr-light)}.btn-dark{--tblr-btn-border-color:var(--tblr-dark-mode-border-color);--tblr-btn-hover-border-color:var(--tblr-dark-mode-border-active-color);--tblr-btn-active-border-color:var(--tblr-dark-mode-border-active-color);--tblr-btn-color:var(--tblr-dark-fg);--tblr-btn-bg:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:var(--tblr-dark-darken);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark-darken);--tblr-btn-disabled-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dark);--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-border-color:var(--tblr-dark)}.btn-muted{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-muted-fg);--tblr-btn-bg:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:var(--tblr-muted-darken);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted-darken);--tblr-btn-disabled-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-muted);--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-border-color:var(--tblr-muted)}.btn-blue{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-blue-fg);--tblr-btn-bg:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:var(--tblr-blue-darken);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue-darken);--tblr-btn-disabled-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-blue);--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-border-color:var(--tblr-blue)}.btn-azure{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-azure-fg);--tblr-btn-bg:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:var(--tblr-azure-darken);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure-darken);--tblr-btn-disabled-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-azure);--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-border-color:var(--tblr-azure)}.btn-indigo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-indigo-fg);--tblr-btn-bg:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:var(--tblr-indigo-darken);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo-darken);--tblr-btn-disabled-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-indigo);--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-border-color:var(--tblr-indigo)}.btn-purple{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-purple-fg);--tblr-btn-bg:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:var(--tblr-purple-darken);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple-darken);--tblr-btn-disabled-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-purple);--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-border-color:var(--tblr-purple)}.btn-pink{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pink-fg);--tblr-btn-bg:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:var(--tblr-pink-darken);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink-darken);--tblr-btn-disabled-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pink);--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-border-color:var(--tblr-pink)}.btn-red{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-red-fg);--tblr-btn-bg:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:var(--tblr-red-darken);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red-darken);--tblr-btn-disabled-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-red);--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-border-color:var(--tblr-red)}.btn-orange{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-orange-fg);--tblr-btn-bg:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:var(--tblr-orange-darken);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange-darken);--tblr-btn-disabled-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-orange);--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-border-color:var(--tblr-orange)}.btn-yellow{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-yellow-fg);--tblr-btn-bg:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:var(--tblr-yellow-darken);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow-darken);--tblr-btn-disabled-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-yellow);--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-border-color:var(--tblr-yellow)}.btn-lime{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-lime-fg);--tblr-btn-bg:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:var(--tblr-lime-darken);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime-darken);--tblr-btn-disabled-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-lime);--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-border-color:var(--tblr-lime)}.btn-green{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-green-fg);--tblr-btn-bg:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:var(--tblr-green-darken);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green-darken);--tblr-btn-disabled-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-green);--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-border-color:var(--tblr-green)}.btn-teal{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-teal-fg);--tblr-btn-bg:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:var(--tblr-teal-darken);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal-darken);--tblr-btn-disabled-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-teal);--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-border-color:var(--tblr-teal)}.btn-cyan{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-cyan-fg);--tblr-btn-bg:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:var(--tblr-cyan-darken);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan-darken);--tblr-btn-disabled-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-cyan);--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-border-color:var(--tblr-cyan)}.btn-x{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-x-fg);--tblr-btn-bg:var(--tblr-x);--tblr-btn-hover-color:var(--tblr-x-fg);--tblr-btn-hover-bg:var(--tblr-x-darken);--tblr-btn-active-color:var(--tblr-x-fg);--tblr-btn-active-bg:var(--tblr-x-darken);--tblr-btn-disabled-bg:var(--tblr-x);--tblr-btn-disabled-color:var(--tblr-x-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-x{--tblr-btn-color:var(--tblr-x);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-x);--tblr-btn-hover-color:var(--tblr-x-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-x);--tblr-btn-active-color:var(--tblr-x-fg);--tblr-btn-active-bg:var(--tblr-x);--tblr-btn-disabled-color:var(--tblr-x);--tblr-btn-disabled-border-color:var(--tblr-x)}.btn-facebook{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-facebook-fg);--tblr-btn-bg:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:var(--tblr-facebook-darken);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook-darken);--tblr-btn-disabled-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-facebook);--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-border-color:var(--tblr-facebook)}.btn-twitter{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-twitter-fg);--tblr-btn-bg:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:var(--tblr-twitter-darken);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter-darken);--tblr-btn-disabled-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-twitter);--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-border-color:var(--tblr-twitter)}.btn-linkedin{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-linkedin-fg);--tblr-btn-bg:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:var(--tblr-linkedin-darken);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin-darken);--tblr-btn-disabled-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-linkedin);--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-border-color:var(--tblr-linkedin)}.btn-google{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-google-fg);--tblr-btn-bg:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:var(--tblr-google-darken);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google-darken);--tblr-btn-disabled-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-google);--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-border-color:var(--tblr-google)}.btn-youtube{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-youtube-fg);--tblr-btn-bg:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:var(--tblr-youtube-darken);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube-darken);--tblr-btn-disabled-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-youtube);--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-border-color:var(--tblr-youtube)}.btn-vimeo{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vimeo-fg);--tblr-btn-bg:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:var(--tblr-vimeo-darken);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo-darken);--tblr-btn-disabled-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vimeo);--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-border-color:var(--tblr-vimeo)}.btn-dribbble{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-dribbble-fg);--tblr-btn-bg:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:var(--tblr-dribbble-darken);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble-darken);--tblr-btn-disabled-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-dribbble);--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-border-color:var(--tblr-dribbble)}.btn-github{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-github-fg);--tblr-btn-bg:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:var(--tblr-github-darken);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github-darken);--tblr-btn-disabled-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-github);--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-border-color:var(--tblr-github)}.btn-instagram{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-instagram-fg);--tblr-btn-bg:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:var(--tblr-instagram-darken);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram-darken);--tblr-btn-disabled-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-instagram);--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-border-color:var(--tblr-instagram)}.btn-pinterest{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-pinterest-fg);--tblr-btn-bg:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:var(--tblr-pinterest-darken);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest-darken);--tblr-btn-disabled-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-pinterest);--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-border-color:var(--tblr-pinterest)}.btn-vk{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-vk-fg);--tblr-btn-bg:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:var(--tblr-vk-darken);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk-darken);--tblr-btn-disabled-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-vk);--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-border-color:var(--tblr-vk)}.btn-rss{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-rss-fg);--tblr-btn-bg:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:var(--tblr-rss-darken);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss-darken);--tblr-btn-disabled-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-rss);--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-border-color:var(--tblr-rss)}.btn-flickr{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-flickr-fg);--tblr-btn-bg:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:var(--tblr-flickr-darken);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr-darken);--tblr-btn-disabled-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-flickr);--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-border-color:var(--tblr-flickr)}.btn-bitbucket{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-bitbucket-fg);--tblr-btn-bg:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:var(--tblr-bitbucket-darken);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket-darken);--tblr-btn-disabled-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-bitbucket);--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-border-color:var(--tblr-bitbucket)}.btn-tabler{--tblr-btn-border-color:transparent;--tblr-btn-hover-border-color:transparent;--tblr-btn-active-border-color:transparent;--tblr-btn-color:var(--tblr-tabler-fg);--tblr-btn-bg:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:var(--tblr-tabler-darken);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler-darken);--tblr-btn-disabled-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler-fg);--tblr-btn-box-shadow:var(--tblr-box-shadow-input)}.btn-outline-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:var(--tblr-tabler);--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-border-color:transparent;--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-border-color:var(--tblr-tabler)}.btn-ghost-primary{--tblr-btn-color:var(--tblr-primary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-primary-fg);--tblr-btn-hover-bg:var(--tblr-primary);--tblr-btn-hover-border-color:var(--tblr-primary);--tblr-btn-active-color:var(--tblr-primary-fg);--tblr-btn-active-bg:var(--tblr-primary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-primary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-secondary{--tblr-btn-color:var(--tblr-secondary);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-secondary-fg);--tblr-btn-hover-bg:var(--tblr-secondary);--tblr-btn-hover-border-color:var(--tblr-secondary);--tblr-btn-active-color:var(--tblr-secondary-fg);--tblr-btn-active-bg:var(--tblr-secondary);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-secondary);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-success{--tblr-btn-color:var(--tblr-success);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-success-fg);--tblr-btn-hover-bg:var(--tblr-success);--tblr-btn-hover-border-color:var(--tblr-success);--tblr-btn-active-color:var(--tblr-success-fg);--tblr-btn-active-bg:var(--tblr-success);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-success);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-info{--tblr-btn-color:var(--tblr-info);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-info-fg);--tblr-btn-hover-bg:var(--tblr-info);--tblr-btn-hover-border-color:var(--tblr-info);--tblr-btn-active-color:var(--tblr-info-fg);--tblr-btn-active-bg:var(--tblr-info);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-info);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-warning{--tblr-btn-color:var(--tblr-warning);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-warning-fg);--tblr-btn-hover-bg:var(--tblr-warning);--tblr-btn-hover-border-color:var(--tblr-warning);--tblr-btn-active-color:var(--tblr-warning-fg);--tblr-btn-active-bg:var(--tblr-warning);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-warning);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-danger{--tblr-btn-color:var(--tblr-danger);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-danger-fg);--tblr-btn-hover-bg:var(--tblr-danger);--tblr-btn-hover-border-color:var(--tblr-danger);--tblr-btn-active-color:var(--tblr-danger-fg);--tblr-btn-active-bg:var(--tblr-danger);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-danger);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-light{--tblr-btn-color:var(--tblr-light);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-light-fg);--tblr-btn-hover-bg:var(--tblr-light);--tblr-btn-hover-border-color:var(--tblr-light);--tblr-btn-active-color:var(--tblr-light-fg);--tblr-btn-active-bg:var(--tblr-light);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-light);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dark{--tblr-btn-color:var(--tblr-dark);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dark-fg);--tblr-btn-hover-bg:var(--tblr-dark);--tblr-btn-hover-border-color:var(--tblr-dark);--tblr-btn-active-color:var(--tblr-dark-fg);--tblr-btn-active-bg:var(--tblr-dark);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dark);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-muted{--tblr-btn-color:var(--tblr-muted);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-muted-fg);--tblr-btn-hover-bg:var(--tblr-muted);--tblr-btn-hover-border-color:var(--tblr-muted);--tblr-btn-active-color:var(--tblr-muted-fg);--tblr-btn-active-bg:var(--tblr-muted);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-muted);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-blue{--tblr-btn-color:var(--tblr-blue);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-blue-fg);--tblr-btn-hover-bg:var(--tblr-blue);--tblr-btn-hover-border-color:var(--tblr-blue);--tblr-btn-active-color:var(--tblr-blue-fg);--tblr-btn-active-bg:var(--tblr-blue);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-blue);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-azure{--tblr-btn-color:var(--tblr-azure);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-azure-fg);--tblr-btn-hover-bg:var(--tblr-azure);--tblr-btn-hover-border-color:var(--tblr-azure);--tblr-btn-active-color:var(--tblr-azure-fg);--tblr-btn-active-bg:var(--tblr-azure);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-azure);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-indigo{--tblr-btn-color:var(--tblr-indigo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-indigo-fg);--tblr-btn-hover-bg:var(--tblr-indigo);--tblr-btn-hover-border-color:var(--tblr-indigo);--tblr-btn-active-color:var(--tblr-indigo-fg);--tblr-btn-active-bg:var(--tblr-indigo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-indigo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-purple{--tblr-btn-color:var(--tblr-purple);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-purple-fg);--tblr-btn-hover-bg:var(--tblr-purple);--tblr-btn-hover-border-color:var(--tblr-purple);--tblr-btn-active-color:var(--tblr-purple-fg);--tblr-btn-active-bg:var(--tblr-purple);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-purple);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pink{--tblr-btn-color:var(--tblr-pink);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pink-fg);--tblr-btn-hover-bg:var(--tblr-pink);--tblr-btn-hover-border-color:var(--tblr-pink);--tblr-btn-active-color:var(--tblr-pink-fg);--tblr-btn-active-bg:var(--tblr-pink);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pink);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-red{--tblr-btn-color:var(--tblr-red);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-red-fg);--tblr-btn-hover-bg:var(--tblr-red);--tblr-btn-hover-border-color:var(--tblr-red);--tblr-btn-active-color:var(--tblr-red-fg);--tblr-btn-active-bg:var(--tblr-red);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-red);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-orange{--tblr-btn-color:var(--tblr-orange);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-orange-fg);--tblr-btn-hover-bg:var(--tblr-orange);--tblr-btn-hover-border-color:var(--tblr-orange);--tblr-btn-active-color:var(--tblr-orange-fg);--tblr-btn-active-bg:var(--tblr-orange);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-orange);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-yellow{--tblr-btn-color:var(--tblr-yellow);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-yellow-fg);--tblr-btn-hover-bg:var(--tblr-yellow);--tblr-btn-hover-border-color:var(--tblr-yellow);--tblr-btn-active-color:var(--tblr-yellow-fg);--tblr-btn-active-bg:var(--tblr-yellow);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-yellow);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-lime{--tblr-btn-color:var(--tblr-lime);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-lime-fg);--tblr-btn-hover-bg:var(--tblr-lime);--tblr-btn-hover-border-color:var(--tblr-lime);--tblr-btn-active-color:var(--tblr-lime-fg);--tblr-btn-active-bg:var(--tblr-lime);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-lime);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-green{--tblr-btn-color:var(--tblr-green);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-green-fg);--tblr-btn-hover-bg:var(--tblr-green);--tblr-btn-hover-border-color:var(--tblr-green);--tblr-btn-active-color:var(--tblr-green-fg);--tblr-btn-active-bg:var(--tblr-green);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-green);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-teal{--tblr-btn-color:var(--tblr-teal);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-teal-fg);--tblr-btn-hover-bg:var(--tblr-teal);--tblr-btn-hover-border-color:var(--tblr-teal);--tblr-btn-active-color:var(--tblr-teal-fg);--tblr-btn-active-bg:var(--tblr-teal);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-teal);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-cyan{--tblr-btn-color:var(--tblr-cyan);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-cyan-fg);--tblr-btn-hover-bg:var(--tblr-cyan);--tblr-btn-hover-border-color:var(--tblr-cyan);--tblr-btn-active-color:var(--tblr-cyan-fg);--tblr-btn-active-bg:var(--tblr-cyan);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-cyan);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-x{--tblr-btn-color:var(--tblr-x);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-x-fg);--tblr-btn-hover-bg:var(--tblr-x);--tblr-btn-hover-border-color:var(--tblr-x);--tblr-btn-active-color:var(--tblr-x-fg);--tblr-btn-active-bg:var(--tblr-x);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-x);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-facebook{--tblr-btn-color:var(--tblr-facebook);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-facebook-fg);--tblr-btn-hover-bg:var(--tblr-facebook);--tblr-btn-hover-border-color:var(--tblr-facebook);--tblr-btn-active-color:var(--tblr-facebook-fg);--tblr-btn-active-bg:var(--tblr-facebook);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-facebook);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-twitter{--tblr-btn-color:var(--tblr-twitter);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-twitter-fg);--tblr-btn-hover-bg:var(--tblr-twitter);--tblr-btn-hover-border-color:var(--tblr-twitter);--tblr-btn-active-color:var(--tblr-twitter-fg);--tblr-btn-active-bg:var(--tblr-twitter);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-twitter);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-linkedin{--tblr-btn-color:var(--tblr-linkedin);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-linkedin-fg);--tblr-btn-hover-bg:var(--tblr-linkedin);--tblr-btn-hover-border-color:var(--tblr-linkedin);--tblr-btn-active-color:var(--tblr-linkedin-fg);--tblr-btn-active-bg:var(--tblr-linkedin);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-linkedin);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-google{--tblr-btn-color:var(--tblr-google);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-google-fg);--tblr-btn-hover-bg:var(--tblr-google);--tblr-btn-hover-border-color:var(--tblr-google);--tblr-btn-active-color:var(--tblr-google-fg);--tblr-btn-active-bg:var(--tblr-google);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-google);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-youtube{--tblr-btn-color:var(--tblr-youtube);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-youtube-fg);--tblr-btn-hover-bg:var(--tblr-youtube);--tblr-btn-hover-border-color:var(--tblr-youtube);--tblr-btn-active-color:var(--tblr-youtube-fg);--tblr-btn-active-bg:var(--tblr-youtube);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-youtube);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vimeo{--tblr-btn-color:var(--tblr-vimeo);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vimeo-fg);--tblr-btn-hover-bg:var(--tblr-vimeo);--tblr-btn-hover-border-color:var(--tblr-vimeo);--tblr-btn-active-color:var(--tblr-vimeo-fg);--tblr-btn-active-bg:var(--tblr-vimeo);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vimeo);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-dribbble{--tblr-btn-color:var(--tblr-dribbble);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-dribbble-fg);--tblr-btn-hover-bg:var(--tblr-dribbble);--tblr-btn-hover-border-color:var(--tblr-dribbble);--tblr-btn-active-color:var(--tblr-dribbble-fg);--tblr-btn-active-bg:var(--tblr-dribbble);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-dribbble);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-github{--tblr-btn-color:var(--tblr-github);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-github-fg);--tblr-btn-hover-bg:var(--tblr-github);--tblr-btn-hover-border-color:var(--tblr-github);--tblr-btn-active-color:var(--tblr-github-fg);--tblr-btn-active-bg:var(--tblr-github);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-github);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-instagram{--tblr-btn-color:var(--tblr-instagram);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-instagram-fg);--tblr-btn-hover-bg:var(--tblr-instagram);--tblr-btn-hover-border-color:var(--tblr-instagram);--tblr-btn-active-color:var(--tblr-instagram-fg);--tblr-btn-active-bg:var(--tblr-instagram);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-instagram);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-pinterest{--tblr-btn-color:var(--tblr-pinterest);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-pinterest-fg);--tblr-btn-hover-bg:var(--tblr-pinterest);--tblr-btn-hover-border-color:var(--tblr-pinterest);--tblr-btn-active-color:var(--tblr-pinterest-fg);--tblr-btn-active-bg:var(--tblr-pinterest);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-pinterest);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-vk{--tblr-btn-color:var(--tblr-vk);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-vk-fg);--tblr-btn-hover-bg:var(--tblr-vk);--tblr-btn-hover-border-color:var(--tblr-vk);--tblr-btn-active-color:var(--tblr-vk-fg);--tblr-btn-active-bg:var(--tblr-vk);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-vk);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-rss{--tblr-btn-color:var(--tblr-rss);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-rss-fg);--tblr-btn-hover-bg:var(--tblr-rss);--tblr-btn-hover-border-color:var(--tblr-rss);--tblr-btn-active-color:var(--tblr-rss-fg);--tblr-btn-active-bg:var(--tblr-rss);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-rss);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-flickr{--tblr-btn-color:var(--tblr-flickr);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-flickr-fg);--tblr-btn-hover-bg:var(--tblr-flickr);--tblr-btn-hover-border-color:var(--tblr-flickr);--tblr-btn-active-color:var(--tblr-flickr-fg);--tblr-btn-active-bg:var(--tblr-flickr);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-flickr);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-bitbucket{--tblr-btn-color:var(--tblr-bitbucket);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-bitbucket-fg);--tblr-btn-hover-bg:var(--tblr-bitbucket);--tblr-btn-hover-border-color:var(--tblr-bitbucket);--tblr-btn-active-color:var(--tblr-bitbucket-fg);--tblr-btn-active-bg:var(--tblr-bitbucket);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-bitbucket);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-ghost-tabler{--tblr-btn-color:var(--tblr-tabler);--tblr-btn-bg:transparent;--tblr-btn-border-color:transparent;--tblr-btn-hover-color:var(--tblr-tabler-fg);--tblr-btn-hover-bg:var(--tblr-tabler);--tblr-btn-hover-border-color:var(--tblr-tabler);--tblr-btn-active-color:var(--tblr-tabler-fg);--tblr-btn-active-bg:var(--tblr-tabler);--tblr-btn-active-border-color:transparent;--tblr-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--tblr-btn-disabled-color:var(--tblr-tabler);--tblr-btn-disabled-bg:transparent;--tblr-btn-disabled-border-color:transparent;--tblr-gradient:none;--tblr-btn-box-shadow:none}.btn-group-sm>.btn,.btn-sm{--tblr-btn-line-height:1rem;--tblr-btn-icon-size:1rem}.btn-group-lg>.btn,.btn-lg{--tblr-btn-line-height:2rem;--tblr-btn-icon-size:2rem}.btn-pill{padding-right:1.5em;padding-left:1.5em;border-radius:10rem}.btn-pill[class*=btn-icon]{padding:.375rem 15px}.btn-square{border-radius:0}.btn-icon{min-width:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);min-height:calc(var(--tblr-btn-line-height) * var(--tblr-btn-font-size) + var(--tblr-btn-padding-y) * 2 + var(--tblr-btn-border-width) * 2);padding-left:0;padding-right:0}.btn-icon .icon{margin:calc(-1 * var(--tblr-btn-padding-x))}.btn-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.btn-floating{position:fixed;z-index:1030;bottom:1.5rem;right:1.5rem;border-radius:100rem}.btn-loading{position:relative;color:transparent!important;text-shadow:none!important;pointer-events:none}.btn-loading>*{opacity:0}.btn-loading:after{content:"";display:inline-block;vertical-align:text-bottom;border:2px var(--tblr-border-style) currentColor;border-right-color:transparent;border-radius:100rem;color:var(--tblr-btn-color);position:absolute;width:var(--tblr-btn-icon-size);height:var(--tblr-btn-icon-size);left:calc(50% - var(--tblr-btn-icon-size)/ 2);top:calc(50% - var(--tblr-btn-icon-size)/ 2);animation:spinner-border .75s linear infinite}.btn-action{--tblr-border-color:transparent;padding:0;border:0;color:var(--tblr-secondary);display:inline-flex;width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:var(--tblr-border-radius);background:0 0;box-shadow:none}.btn-action:after{content:none}.btn-action:focus{outline:0;box-shadow:none}.btn-action.show,.btn-action:hover{color:var(--tblr-body-color);background:var(--tblr-active-bg)}.btn-action.show{color:var(--tblr-primary)}.btn-actions{display:flex}.btn-group,.btn-group-vertical{box-shadow:var(--tblr-box-shadow-input)}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group>.btn-check:checked+.btn,.btn-group>.btn.active,.btn-group>.btn:active{z-index:5}.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.calendar{display:block;font-size:.765625rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.calendar-nav{display:flex;align-items:center}.calendar-title{flex:1;text-align:center}.calendar-body,.calendar-header{display:flex;flex-wrap:wrap;justify-content:flex-start;padding:.5rem 0}.calendar-header{color:var(--tblr-secondary)}.calendar-date{flex:0 0 14.2857142857%;max-width:14.2857142857%;padding:.2rem;text-align:center;border:0}.calendar-date.next-month,.calendar-date.prev-month{opacity:.25}.calendar-date .date-item{position:relative;display:inline-block;width:1.4rem;height:1.4rem;line-height:1.4rem;color:#66758c;text-align:center;text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;background:0 0;border:var(--tblr-border-width) var(--tblr-border-style) transparent;border-radius:100rem;outline:0;transition:background .3s,border .3s,box-shadow .32s,color .3s}@media (prefers-reduced-motion:reduce){.calendar-date .date-item{transition:none}}.calendar-date .date-item:hover{color:var(--tblr-primary);text-decoration:none;background:#fefeff;border-color:var(--tblr-border-color)}.calendar-date .date-today{color:var(--tblr-primary);border-color:var(--tblr-border-color)}.calendar-range{position:relative}.calendar-range:before{position:absolute;top:50%;right:0;left:0;height:1.4rem;content:"";background:rgba(var(--tblr-primary-rgb),.1);transform:translateY(-50%)}.calendar-range.range-end .date-item,.calendar-range.range-start .date-item{color:#fff;background:var(--tblr-primary);border-color:var(--tblr-primary)}.calendar-range.range-start:before{left:50%}.calendar-range.range-end:before{right:50%}.carousel-indicators-vertical{left:auto;top:0;margin:0 1rem 0 0;flex-direction:column}.carousel-indicators-vertical [data-bs-target]{margin:3px 0 3px;width:3px;height:30px;border:0;border-left:10px var(--tblr-border-style) transparent;border-right:10px var(--tblr-border-style) transparent}.carousel-indicators-dot [data-bs-target]{width:.5rem;height:.5rem;border-radius:100rem;border:10px var(--tblr-border-style) transparent;margin:0}.carousel-indicators-thumb [data-bs-target]{width:2rem;height:auto;background:no-repeat center/cover;border:0;border-radius:var(--tblr-border-radius);box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0;margin:0 3px;opacity:.75}@media (min-width:992px){.carousel-indicators-thumb [data-bs-target]{width:4rem}}.carousel-indicators-thumb [data-bs-target]:before{content:"";padding-top:var(--tblr-aspect-ratio,100%);display:block}.carousel-indicators-thumb.carousel-indicators-vertical [data-bs-target]{margin:3px 0}.carousel-caption-background{background:red;position:absolute;left:0;right:0;bottom:0;height:90%;background:linear-gradient(0deg,rgba(24,36,51,.9),rgba(24,36,51,0))}.card{transition:transform .3s ease-out,opacity .3s ease-out,box-shadow .3s ease-out}@media (prefers-reduced-motion:reduce){.card{transition:none}}@media print{.card{border:none;box-shadow:none}}a.card{color:inherit}a.card:hover{text-decoration:none;box-shadow:rgba(var(--tblr-body-color-rgb),.16) 0 2px 16px 0}.card .card{box-shadow:none}.card-borderless,.card-borderless .card-footer,.card-borderless .card-header{border-color:transparent}.card-stamp{--tblr-stamp-size:7rem;position:absolute;top:0;right:0;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);max-height:100%;border-top-right-radius:6px;opacity:.2;overflow:hidden;pointer-events:none}.card-stamp-lg{--tblr-stamp-size:13rem}.card-stamp-icon{background:var(--tblr-secondary);color:var(--tblr-card-bg,var(--tblr-bg-surface));display:flex;align-items:center;justify-content:center;border-radius:100rem;width:calc(var(--tblr-stamp-size) * 1);height:calc(var(--tblr-stamp-size) * 1);position:relative;top:calc(var(--tblr-stamp-size) * -.25);right:calc(var(--tblr-stamp-size) * -.25);font-size:calc(var(--tblr-stamp-size) * .75);transform:rotate(10deg)}.card-stamp-icon .icon{stroke-width:2;width:calc(var(--tblr-stamp-size) * .75);height:calc(var(--tblr-stamp-size) * .75)}.card-img,.card-img-start{border-top-left-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));border-bottom-left-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)))}.card-img,.card-img-end{border-top-right-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)));border-bottom-right-radius:calc(var(--tblr-border-radius-lg) - (var(--tblr-border-width)))}.card-img-overlay{display:flex;flex-direction:column;justify-content:flex-end}.card-img-overlay-dark{background-image:linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,.6) 100%)}.card-inactive{pointer-events:none;box-shadow:none}.card-inactive .card-body{opacity:.64}.card-active{--tblr-card-border-color:var(--tblr-primary);--tblr-card-bg:var(--tblr-active-bg)}.card-btn{display:flex;align-items:center;justify-content:center;padding:1rem 1.25rem;text-align:center;transition:background .3s;border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);flex:1;color:inherit;font-weight:var(--tblr-font-weight-medium)}@media (prefers-reduced-motion:reduce){.card-btn{transition:none}}.card-btn:hover{text-decoration:none;background:rgba(var(--tblr-primary-rgb),.04)}.card-btn+.card-btn{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-stacked{--tblr-card-stacked-offset:.25rem;position:relative}.card-stacked:after{position:absolute;top:calc(-1 * var(--tblr-card-stacked-offset));right:var(--tblr-card-stacked-offset);left:var(--tblr-card-stacked-offset);height:var(--tblr-card-stacked-offset);content:"";background:var(--tblr-card-bg,var(--tblr-bg-surface));border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-card-border-color);border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-cover{position:relative;padding:1rem 1.25rem;background:#666 no-repeat center/cover}.card-cover:before{position:absolute;top:0;right:0;bottom:0;left:0;content:"";background:rgba(24,36,51,.48)}.card-cover:first-child,.card-cover:first-child:before{border-radius:6px 6px 0 0}.card-cover-blurred:before{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.card-actions{margin:-.5rem -.5rem -.5rem auto;padding-left:.5rem}.card-actions a{text-decoration:none}.card-header{color:inherit;display:flex;align-items:center;background:0 0}.card-header:first-child{border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-header-light{border-bottom-color:transparent;background:var(--tblr-bg-surface-tertiary)}.card-header-tabs{background:var(--tblr-bg-surface-tertiary);flex:1;margin:calc(var(--tblr-card-cap-padding-y) * -1) calc(var(--tblr-card-cap-padding-x) * -1) calc(var(--tblr-card-cap-padding-y) * -1);padding:calc(var(--tblr-card-cap-padding-y) * .5) calc(var(--tblr-card-cap-padding-x) * .5) 0}.card-header-pills{flex:1;margin-top:-.5rem;margin-bottom:-.5rem}.card-rotate-left{transform:rotate(-1.5deg)}.card-rotate-right{transform:rotate(1.5deg)}.card-link{color:inherit}.card-link:hover{color:inherit;text-decoration:none;box-shadow:0 1px 6px 0 rgba(0,0,0,.08)}.card-link-rotate:hover{transform:rotate(1.5deg);opacity:1}.card-link-pop:hover{transform:translateY(-2px);opacity:1}.card-footer{margin-top:auto}.card-footer:last-child{border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-footer-transparent{background:0 0;border-color:transparent;padding-top:0}.card-footer-borderless{border-top:none}.card-progress{height:.25rem}.card-progress:last-child{border-radius:0 0 2px 2px}.card-progress:first-child{border-radius:2px 2px 0 0}.card-meta{color:var(--tblr-secondary)}.card-title{display:block;margin:0 0 1rem;font-size:1rem;font-weight:var(--tblr-font-weight-medium);color:inherit;line-height:1.5rem}a.card-title:hover{color:inherit}.card-header .card-title{margin:0}.card-subtitle{margin-bottom:1.25rem;color:var(--tblr-secondary);font-weight:400}.card-header .card-subtitle{margin:0}.card-title .card-subtitle{margin:0 0 0 .25rem;font-size:.875rem}.card-body{position:relative}.card-body>:last-child{margin-bottom:0}.card-sm>.card-body{padding:1rem}@media (min-width:768px){.card-md>.card-body{padding:2.5rem}}@media (min-width:768px){.card-lg>.card-body{padding:2rem}}@media (min-width:992px){.card-lg>.card-body{padding:4rem}}@media print{.card-body{padding:0}}.card-body+.card-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-body-scrollable{overflow:auto}.card-options{top:1.5rem;right:.75rem;display:flex;margin-left:auto}.card-options-link{display:inline-block;min-width:1rem;margin-left:.25rem;color:var(--tblr-secondary)}.card-status-top{position:absolute;top:0;right:0;left:0;height:2px;border-radius:var(--tblr-card-border-radius) var(--tblr-card-border-radius) 0 0}.card-status-start{position:absolute;right:auto;bottom:0;width:2px;height:100%;border-radius:var(--tblr-card-border-radius) 0 0 var(--tblr-card-border-radius)}.card-status-bottom{position:absolute;top:initial;bottom:0;width:100%;height:2px;border-radius:0 0 var(--tblr-card-border-radius) var(--tblr-card-border-radius)}.card-table{margin-bottom:0!important}.card-table tr td:first-child,.card-table tr th:first-child{padding-left:1.25rem;border-left:0}.card-table tr td:last-child,.card-table tr th:last-child{padding-right:1.25rem;border-right:0}.card-table tbody tr:first-child,.card-table tfoot tr:first-child,.card-table thead tr:first-child{border-top:0}.card-table tbody tr:first-child td,.card-table tbody tr:first-child th,.card-table tfoot tr:first-child td,.card-table tfoot tr:first-child th,.card-table thead tr:first-child td,.card-table thead tr:first-child th{border-top:0}.card-body+.card-table{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-table-border-color)}.card-code{padding:0}.card-code .highlight{margin:0;border:0}.card-code pre{margin:0!important;border:0!important}.card-chart{position:relative;z-index:1;height:3.5rem}.card-avatar{margin-left:auto;margin-right:auto;box-shadow:0 0 0 .25rem var(--tblr-card-bg,var(--tblr-bg-surface));margin-top:calc(-1 * var(--tblr-avatar-size) * .5)}.card-body+.card-list-group{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.card-list-group .list-group-item{padding-right:1.25rem;padding-left:1.25rem;border-right:0;border-left:0;border-radius:0}.card-list-group .list-group-item:last-child{border-bottom:0}.card-list-group .list-group-item:first-child{border-top:0}.card-tabs .nav-tabs{position:relative;z-index:1000;border-bottom:0}.card-tabs .nav-tabs .nav-link{background:var(--tblr-bg-surface-tertiary);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.card-tabs .nav-tabs .nav-link.active,.card-tabs .nav-tabs .nav-link:active,.card-tabs .nav-tabs .nav-link:hover{border-color:var(--tblr-border-color-translucent);color:var(--tblr-body-color)}.card-tabs .nav-tabs .nav-link.active{color:inherit;background:var(--tblr-card-bg,var(--tblr-bg-surface));border-bottom-color:transparent}.card-tabs .nav-tabs .nav-item:not(:first-child) .nav-link{border-top-left-radius:0}.card-tabs .nav-tabs .nav-item:not(:last-child) .nav-link{border-top-right-radius:0}.card-tabs .nav-tabs .nav-item+.nav-item{margin-left:calc(-1 * var(--tblr-border-width))}.card-tabs .nav-tabs-bottom{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link{margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-link.active{border-top-color:transparent}.card-tabs .nav-tabs-bottom .nav-item{margin-top:calc(-1 * var(--tblr-border-width));margin-bottom:0}.card-tabs .nav-tabs-bottom .nav-item .nav-link{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:0 0 var(--tblr-border-radius-lg) var(--tblr-border-radius-lg)}.card-tabs .nav-tabs-bottom .nav-item:not(:first-child) .nav-link{border-bottom-left-radius:0}.card-tabs .nav-tabs-bottom .nav-item:not(:last-child) .nav-link{border-bottom-right-radius:0}.card-tabs .card{border-bottom-left-radius:0}.card-tabs .nav-tabs+.tab-content .card{border-bottom-left-radius:var(--tblr-card-border-radius);border-top-left-radius:0}.card-note{--tblr-card-bg:#fff7dd;--tblr-card-border-color:#fff1c9}.btn-close{cursor:pointer}.btn-close:focus{outline:0}.dropdown-menu{-webkit-user-select:none;-moz-user-select:none;user-select:none;background-clip:border-box}.dropdown-menu.card{padding:0;min-width:25rem;display:none}.dropdown-menu.card.show{display:flex}.dropdown-item{min-width:11rem;display:flex;align-items:center;margin:0;line-height:1.4285714286;gap:.5rem}.dropdown-item-icon{width:1.25rem!important;height:1.25rem!important;margin-right:.5rem;color:var(--tblr-secondary);opacity:.7;text-align:center}.dropdown-item-indicator{margin-right:.5rem;margin-left:-.25rem;height:1.25rem;display:inline-flex;line-height:1;vertical-align:bottom;align-items:center}.dropdown-header{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-bottom:.25rem;pointer-events:none}.dropdown-menu-scrollable{height:auto;max-height:13rem;overflow-x:hidden}.dropdown-menu-column{min-width:11rem}.dropdown-menu-column .dropdown-item{min-width:0}.dropdown-menu-columns{display:flex;flex:0 0.25rem}.dropdown-menu-arrow:before{content:"";position:absolute;top:-.25rem;left:.75rem;display:block;background:inherit;width:14px;height:14px;transform:rotate(45deg);transform-origin:center;border:1px solid;border-color:inherit;z-index:-1;clip:rect(0,9px,9px,0)}.dropdown-menu-arrow.dropdown-menu-end:before{right:.75rem;left:auto}.dropend>.dropdown-menu{margin-top:calc(-.25rem - 1px);margin-left:-.25rem}.dropend .dropdown-toggle:after{margin-left:auto}.dropdown-menu-card{padding:0}.dropdown-menu-card>.card{margin:0;border:0;box-shadow:none}.datagrid{--tblr-datagrid-padding:1.5rem;--tblr-datagrid-item-width:15rem;display:grid;grid-gap:var(--tblr-datagrid-padding);grid-template-columns:repeat(auto-fit,minmax(var(--tblr-datagrid-item-width),1fr))}.datagrid-title{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);margin-bottom:.25rem}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:1rem;text-align:center}@media (min-width:768px){.empty{padding:3rem}}.empty-icon{margin:0 0 1rem;width:3rem;height:3rem;line-height:1;color:var(--tblr-secondary)}.empty-icon svg{width:100%;height:100%}.empty-img{margin:0 0 2rem;line-height:1}.empty-header{margin:0 0 1rem;font-size:4rem;font-weight:var(--tblr-font-weight-light);line-height:1;color:var(--tblr-secondary)}.empty-title{font-size:1.25rem;line-height:1.75rem;font-weight:var(--tblr-font-weight-bold)}.empty-subtitle,.empty-title{margin:0 0 .5rem}.empty-action{margin-top:1.5rem}.empty-bordered{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.row>*{min-width:0}.col-separator{border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.container-slim{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:16rem}.container-tight{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:30rem}.container-narrow{--tblr-gutter-x:calc(var(--tblr-page-padding) * 2);--tblr-gutter-y:0;width:100%;padding-right:calc(var(--tblr-gutter-x) * .5);padding-left:calc(var(--tblr-gutter-x) * .5);margin-right:auto;margin-left:auto;max-width:61.875rem}.row-0{margin-right:0;margin-left:0}.row-0>.col,.row-0>[class*=col-]{padding-right:0;padding-left:0}.row-0 .card{margin-bottom:0}.row-sm{margin-right:-.375rem;margin-left:-.375rem}.row-sm>.col,.row-sm>[class*=col-]{padding-right:.375rem;padding-left:.375rem}.row-sm .card{margin-bottom:.75rem}.row-md{margin-right:-1.5rem;margin-left:-1.5rem}.row-md>.col,.row-md>[class*=col-]{padding-right:1.5rem;padding-left:1.5rem}.row-md .card{margin-bottom:3rem}.row-lg{margin-right:-3rem;margin-left:-3rem}.row-lg>.col,.row-lg>[class*=col-]{padding-right:3rem;padding-left:3rem}.row-lg .card{margin-bottom:6rem}.row-deck>.col,.row-deck>[class*=col-]{display:flex;align-items:stretch}.row-deck>.col .card,.row-deck>[class*=col-] .card{flex:1 1 auto}.row-cards{--tblr-gutter-x:var(--tblr-page-padding);--tblr-gutter-y:var(--tblr-page-padding);min-width:0}.row-cards .row-cards{flex:1}.space-y{display:flex;flex-direction:column;gap:1rem}.space-x{display:flex;gap:1rem}.space-y-0{display:flex;flex-direction:column;gap:0}.space-x-0{display:flex;gap:0}.space-y-1{display:flex;flex-direction:column;gap:.25rem}.space-x-1{display:flex;gap:.25rem}.space-y-2{display:flex;flex-direction:column;gap:.5rem}.space-x-2{display:flex;gap:.5rem}.space-y-3{display:flex;flex-direction:column;gap:1rem}.space-x-3{display:flex;gap:1rem}.space-y-4{display:flex;flex-direction:column;gap:1.5rem}.space-x-4{display:flex;gap:1.5rem}.space-y-5{display:flex;flex-direction:column;gap:2rem}.space-x-5{display:flex;gap:2rem}.space-y-6{display:flex;flex-direction:column;gap:2.5rem}.space-x-6{display:flex;gap:2.5rem}.divide-y>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y>:not(template):not(:first-child){padding-top:1rem!important}.divide-y>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x>:not(template):not(:first-child){padding-left:1rem!important}.divide-x>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-0>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-0>:not(template):not(:first-child){padding-top:0!important}.divide-y-0>:not(template):not(:last-child){padding-bottom:0!important}.divide-x-0>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-0>:not(template):not(:first-child){padding-left:0!important}.divide-x-0>:not(template):not(:last-child){padding-right:0!important}.divide-y-1>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-1>:not(template):not(:first-child){padding-top:.25rem!important}.divide-y-1>:not(template):not(:last-child){padding-bottom:.25rem!important}.divide-x-1>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-1>:not(template):not(:first-child){padding-left:.25rem!important}.divide-x-1>:not(template):not(:last-child){padding-right:.25rem!important}.divide-y-2>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-2>:not(template):not(:first-child){padding-top:.5rem!important}.divide-y-2>:not(template):not(:last-child){padding-bottom:.5rem!important}.divide-x-2>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-2>:not(template):not(:first-child){padding-left:.5rem!important}.divide-x-2>:not(template):not(:last-child){padding-right:.5rem!important}.divide-y-3>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-3>:not(template):not(:first-child){padding-top:1rem!important}.divide-y-3>:not(template):not(:last-child){padding-bottom:1rem!important}.divide-x-3>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-3>:not(template):not(:first-child){padding-left:1rem!important}.divide-x-3>:not(template):not(:last-child){padding-right:1rem!important}.divide-y-4>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-4>:not(template):not(:first-child){padding-top:1.5rem!important}.divide-y-4>:not(template):not(:last-child){padding-bottom:1.5rem!important}.divide-x-4>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-4>:not(template):not(:first-child){padding-left:1.5rem!important}.divide-x-4>:not(template):not(:last-child){padding-right:1.5rem!important}.divide-y-5>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-5>:not(template):not(:first-child){padding-top:2rem!important}.divide-y-5>:not(template):not(:last-child){padding-bottom:2rem!important}.divide-x-5>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-5>:not(template):not(:first-child){padding-left:2rem!important}.divide-x-5>:not(template):not(:last-child){padding-right:2rem!important}.divide-y-6>:not(template)~:not(template){border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-y-6>:not(template):not(:first-child){padding-top:2.5rem!important}.divide-y-6>:not(template):not(:last-child){padding-bottom:2.5rem!important}.divide-x-6>:not(template)~:not(template){border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)!important}.divide-x-6>:not(template):not(:first-child){padding-left:2.5rem!important}.divide-x-6>:not(template):not(:last-child){padding-right:2.5rem!important}.divide-y-fill{display:flex;flex-direction:column;height:100%}.divide-y-fill>:not(template){flex:1;display:flex;justify-content:center;flex-direction:column}.icon{--tblr-icon-size:1.25rem;width:var(--tblr-icon-size);height:var(--tblr-icon-size);font-size:var(--tblr-icon-size);vertical-align:bottom;stroke-width:1.5}.icon:hover{text-decoration:none}.icon-inline{--tblr-icon-size:1rem;vertical-align:-.2rem}.icon-filled{fill:currentColor}.icon-sm{--tblr-icon-size:1rem;stroke-width:1}.icon-md{--tblr-icon-size:2.5rem;stroke-width:1}.icon-lg{--tblr-icon-size:3.5rem;stroke-width:1}.icon-pulse{transition:all .15s ease 0s;animation:pulse 2s ease infinite;animation-fill-mode:both}.icon-tada{transition:all .15s ease 0s;animation:tada 3s ease infinite;animation-fill-mode:both}.icon-rotate{transition:all .15s ease 0s;animation:rotate-360 3s linear infinite;animation-fill-mode:both}.img-responsive{--tblr-img-responsive-ratio:75%;background:no-repeat center/cover;padding-top:var(--tblr-img-responsive-ratio)}.img-responsive-grid{padding-top:calc(var(--tblr-img-responsive-ratio) - var(--tblr-gutter-y)/ 2)}.img-responsive-1x1{--tblr-img-responsive-ratio:100%}.img-responsive-2x1{--tblr-img-responsive-ratio:50%}.img-responsive-1x2{--tblr-img-responsive-ratio:200%}.img-responsive-3x1{--tblr-img-responsive-ratio:33.3333333333%}.img-responsive-1x3{--tblr-img-responsive-ratio:300%}.img-responsive-4x1{--tblr-img-responsive-ratio:25%}.img-responsive-1x4{--tblr-img-responsive-ratio:400%}.img-responsive-4x3{--tblr-img-responsive-ratio:75%}.img-responsive-3x4{--tblr-img-responsive-ratio:133.3333333333%}.img-responsive-16x9{--tblr-img-responsive-ratio:56.25%}.img-responsive-9x16{--tblr-img-responsive-ratio:177.7777777778%}.img-responsive-21x9{--tblr-img-responsive-ratio:42.8571428571%}.img-responsive-9x21{--tblr-img-responsive-ratio:233.3333333333%}.img-bg{background:no-repeat center/cover}textarea[cols]{height:auto}.col-form-label,.form-label{display:block;font-weight:var(--tblr-font-weight-medium)}.col-form-label.required:after,.form-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-label-description{float:right;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-gray-500)}.form-hint{display:block;color:var(--tblr-gray-500)}.form-hint:last-child{margin-bottom:0}.form-hint+.form-control{margin-top:.25rem}.form-label+.form-hint{margin-top:-.25rem}.form-control+.form-hint,.form-select+.form-hint,.input-group+.form-hint{margin-top:.5rem;color:var(--tblr-gray-500)}.form-select:-moz-focusring{color:var(--tblr-body-color)}.form-control:-webkit-autofill{box-shadow:0 0 0 1000px var(--tblr-body-bg) inset;color:var(--tblr-body-color);-webkit-text-fill-color:var(--tblr-body-color)}.form-control.disabled,.form-control:disabled{color:var(--tblr-gray-500);-webkit-user-select:none;-moz-user-select:none;user-select:none}.form-control[size]{width:auto}.form-control-light{background-color:var(--tblr-gray-100);border-color:transparent}.form-control-dark{background-color:rgba(0,0,0,.1);color:#fff;border-color:transparent}.form-control-dark:focus{background-color:rgba(0,0,0,.1);box-shadow:none;border-color:rgba(255,255,255,.24)}.form-control-dark::-moz-placeholder{color:rgba(255,255,255,.6)}.form-control-dark::placeholder{color:rgba(255,255,255,.6)}.form-control-rounded{border-radius:10rem}.form-control-flush{padding:0;background:0 0!important;border-color:transparent!important;resize:none;box-shadow:none!important;line-height:inherit}.form-footer{margin-top:2rem}.form-fieldset{padding:1rem;margin-bottom:1rem;background:var(--tblr-body-bg);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius)}fieldset:empty{display:none}.form-help{display:inline-flex;font-weight:var(--tblr-font-weight-bold);align-items:center;justify-content:center;width:1.125rem;height:1.125rem;font-size:.75rem;color:var(--tblr-gray-500);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--tblr-gray-100);border-radius:100rem;transition:background-color .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-help{transition:none}}.form-help:hover,.form-help[aria-describedby]{color:#fff;background:var(--tblr-primary)}.input-group{box-shadow:var(--tblr-box-shadow-input);border-radius:var(--tblr-border-radius)}.input-group .btn,.input-group .form-control{box-shadow:none}.input-group-link{font-size:.75rem}.input-group-flat:focus-within{box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25);border-radius:var(--tblr-border-radius)}.input-group-flat:focus-within .form-control,.input-group-flat:focus-within .input-group-text{border-color:#83b7e8!important}.input-group-flat .form-control:focus{border-color:var(--tblr-border-color);box-shadow:none}.input-group-flat .form-control:not(:last-child){border-right:0}.input-group-flat .form-control:not(:first-child){border-left:0}.input-group-flat .input-group-text{background:var(--tblr-bg-forms);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group-flat .input-group-text{transition:none}}.input-group-flat .input-group-text:first-child{padding-right:0}.input-group-flat .input-group-text:last-child{padding-left:0}.form-file-button{margin-left:0;border-left:0}label[for=floating-input]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-icon{position:relative}.input-icon .form-control:not(:last-child),.input-icon .form-select:not(:last-child){padding-right:2.5rem}.input-icon .form-control:not(:first-child),.input-icon .form-select:not(:last-child){padding-left:2.5rem}.input-icon-addon{position:absolute;top:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;min-width:2.5rem;color:var(--tblr-icon-color);pointer-events:none;font-size:1.2em}.input-icon-addon:last-child{right:0;left:auto}.form-colorinput{position:relative;display:inline-block;margin:0;line-height:1;cursor:pointer}.form-colorinput-input{position:absolute;z-index:-1;opacity:0}.form-colorinput-color{display:block;width:1.5rem;height:1.5rem;color:#fff;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);border-radius:3px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.form-colorinput-color:before{position:absolute;top:0;left:0;width:100%;height:100%;content:"";background:no-repeat center center/1.25rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-colorinput-color:before{transition:none}}.form-colorinput-input:checked~.form-colorinput-color:before{opacity:1}.form-colorinput-input:focus~.form-colorinput-color{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-colorinput-light .form-colorinput-color:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23182433' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-imagecheck{position:relative;margin:0;cursor:pointer}.form-imagecheck-input{position:absolute;z-index:-1;opacity:0}.form-imagecheck-figure{position:relative;display:block;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px}.form-imagecheck-input:focus~.form-imagecheck-figure{border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-imagecheck-input:checked~.form-imagecheck-figure{border-color:var(--tblr-primary)}.form-imagecheck-figure:before{position:absolute;top:.25rem;left:.25rem;z-index:1;display:block;width:1.25rem;height:1.25rem;color:#fff;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--tblr-bg-forms);border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:var(--tblr-border-radius);transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-figure:before{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure:before{background-color:var(--tblr-primary);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e");background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-imagecheck-input[type=radio]~.form-imagecheck-figure:before{border-radius:50%}.form-imagecheck-input[type=radio]:checked~.form-imagecheck-figure:before{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-imagecheck-image{max-width:100%;display:block;opacity:.64;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-image{transition:none}}.form-imagecheck-image:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.form-imagecheck-image:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-image,.form-imagecheck:hover .form-imagecheck-image{opacity:1}.form-imagecheck-caption{padding:.25rem;font-size:.765625rem;color:var(--tblr-secondary);text-align:center;transition:color .3s}@media (prefers-reduced-motion:reduce){.form-imagecheck-caption{transition:none}}.form-imagecheck-input:checked~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck-input:focus~.form-imagecheck-figure .form-imagecheck-caption,.form-imagecheck:hover .form-imagecheck-caption{color:var(--tblr-body-color)}.form-selectgroup{display:inline-flex;margin:0 -.5rem -.5rem 0;flex-wrap:wrap}.form-selectgroup .form-selectgroup-item{margin:0 .5rem .5rem 0}.form-selectgroup-vertical{flex-direction:column}.form-selectgroup-item{display:block;position:relative}.form-selectgroup-input{position:absolute;top:0;left:0;z-index:-1;opacity:0}.form-selectgroup-label{position:relative;display:block;min-width:calc(1.4285714286em + .875rem + calc(var(--tblr-border-width) * 2));margin:0;padding:.4375rem .75rem;font-size:.875rem;line-height:1.4285714286;color:var(--tblr-secondary);background:var(--tblr-bg-forms);text-align:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);border-radius:3px;box-shadow:var(--tblr-box-shadow-input);transition:border-color .3s,background .3s,color .3s}@media (prefers-reduced-motion:reduce){.form-selectgroup-label{transition:none}}.form-selectgroup-label .icon:only-child{margin:0 -.25rem}.form-selectgroup-label:hover{color:var(--tblr-body-color)}.form-selectgroup-check{display:inline-block;width:1.25rem;height:1.25rem;border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);vertical-align:middle;box-shadow:var(--tblr-box-shadow-input)}.form-selectgroup-input[type=checkbox]+.form-selectgroup-label .form-selectgroup-check{border-radius:var(--tblr-border-radius)}.form-selectgroup-input[type=radio]+.form-selectgroup-label .form-selectgroup-check{border-radius:50%}.form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-check{background-color:var(--tblr-primary);background-repeat:repeat;background-position:center;background-size:1.25rem;border-color:var(--tblr-border-color-translucent)}.form-selectgroup-input[type=checkbox]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8.5l2.5 2.5l5.5 -5.5'/%3e%3c/svg%3e")}.form-selectgroup-input[type=radio]:checked+.form-selectgroup-label .form-selectgroup-check{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3ccircle r='3' fill='%23ffffff' cx='8' cy='8' /%3e%3c/svg%3e")}.form-selectgroup-check-floated{position:absolute;top:.4375rem;right:.4375rem}.form-selectgroup-input:checked+.form-selectgroup-label{z-index:1;color:var(--tblr-primary);background:rgba(var(--tblr-primary-rgb),.04);border-color:var(--tblr-primary)}.form-selectgroup-input:focus+.form-selectgroup-label{z-index:2;color:var(--tblr-primary);border-color:var(--tblr-primary);box-shadow:0 0 0 .25rem rgba(var(--tblr-primary-rgb),.25)}.form-selectgroup-boxes .form-selectgroup-label{text-align:left;padding:1.25rem 1rem;color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label{color:inherit}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-title{color:var(--tblr-primary)}.form-selectgroup-boxes .form-selectgroup-input:checked+.form-selectgroup-label .form-selectgroup-label-content{opacity:1}.form-selectgroup-pills{flex-wrap:wrap;align-items:flex-start}.form-selectgroup-pills .form-selectgroup-item{flex-grow:0}.form-selectgroup-pills .form-selectgroup-label{border-radius:50px}.form-control-color::-webkit-color-swatch{border:none}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.form-control::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-tertiary-bg))}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--tblr-btn-color,var(--tblr-secondary-bg))}.form-check{-webkit-user-select:none;-moz-user-select:none;user-select:none}.form-check.form-check-highlight .form-check-input:not(:checked)~.form-check-label{color:var(--tblr-secondary)}.form-check .form-check-label-off{color:var(--tblr-secondary)}.form-check .form-check-input:checked~.form-check-label-off{display:none}.form-check .form-check-input:not(:checked)~.form-check-label-on{display:none}.form-check-input{background-size:1.25rem;margin-top:0;box-shadow:var(--tblr-box-shadow-input)}.form-switch .form-check-input{transition:background-color .3s,background-position .3s}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-check-label{display:block}.form-check-label.required:after{content:"*";margin-left:.25rem;color:#d63939}.form-check-description{display:block;color:var(--tblr-secondary);font-size:.75rem;margin-top:.25rem}.form-check-single{margin:0}.form-check-single .form-check-input{margin:0}.form-switch .form-check-input{height:1.25rem;margin-top:0}.form-switch-lg{padding-left:3.5rem;min-height:1.5rem}.form-switch-lg .form-check-input{height:1.5rem;width:2.75rem;background-size:1.5rem;margin-left:-3.5rem}.form-switch-lg .form-check-label{padding-top:.125rem}.form-check-input:checked{border:none}.form-control.is-invalid-lite,.form-control.is-valid-lite,.form-select.is-invalid-lite,.form-select.is-valid-lite{border-color:var(--tblr-border-color)!important}.legend{--tblr-legend-size:0.75em;display:inline-block;background:var(--tblr-border-color);width:var(--tblr-legend-size);height:var(--tblr-legend-size);border-radius:var(--tblr-border-radius-sm);border:1px solid var(--tblr-border-color-translucent)}.list-group{margin-left:0;margin-right:0}.list-group-header{background:var(--tblr-bg-surface-tertiary);padding:.5rem 1.25rem;font-size:.75rem;font-weight:var(--tblr-font-weight-medium);line-height:1;text-transform:uppercase;color:var(--tblr-gray-500);border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.list-group-flush>.list-group-header:last-child{border-bottom-width:0}.list-group-item{background-color:inherit}.list-group-item.active{background-color:rgba(var(--tblr-secondary-rgb),.08);border-left-color:#066fd1;border-left-width:2px}.list-group-item:active,.list-group-item:focus,.list-group-item:hover{background-color:rgba(var(--tblr-secondary-rgb),.08)}.list-group-item.disabled,.list-group-item:disabled{color:#6c7a91;background-color:rgba(var(--tblr-secondary-rgb),.08)}.list-bordered .list-item{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);margin-top:-1px}.list-bordered .list-item:first-child{border-top:none}.list-group-hoverable .list-group-item-actions{opacity:0;transition:opacity .3s}@media (prefers-reduced-motion:reduce){.list-group-hoverable .list-group-item-actions{transition:none}}.list-group-hoverable .list-group-item-actions.show,.list-group-hoverable .list-group-item:hover .list-group-item-actions{opacity:1}.list-group-transparent{--tblr-list-group-border-radius:0;margin:0 -1.25rem}.list-group-transparent .list-group-item{background:0 0;border:0}.list-group-transparent .list-group-item .icon{color:var(--tblr-secondary)}.list-group-transparent .list-group-item.active{font-weight:var(--tblr-font-weight-bold);color:inherit;background:var(--tblr-active-bg)}.list-group-transparent .list-group-item.active .icon{color:inherit}.list-separated{display:flex;flex-direction:column;gap:1rem}.list-inline{margin:0}.list-inline-item:not(:last-child){margin-right:auto;margin-inline-end:.5rem}.list-inline-dots .list-inline-item+.list-inline-item:before{content:" · ";margin-inline-end:.5rem}.loader{position:relative;display:block;width:2.5rem;height:2.5rem;color:#066fd1;vertical-align:middle}.loader:after{position:absolute;top:0;left:0;width:100%;height:100%;content:"";border:1px var(--tblr-border-style);border-color:transparent;border-top-color:currentColor;border-left-color:currentColor;border-radius:100rem;animation:rotate-360 .6s linear;animation-iteration-count:infinite}.dimmer{position:relative}.dimmer .loader{position:absolute;top:50%;right:0;left:0;display:none;margin:0 auto;transform:translateY(-50%)}.dimmer.active .loader{display:block}.dimmer.active .dimmer-content{pointer-events:none;opacity:.1}@keyframes animated-dots{0%{transform:translateX(-100%)}}.animated-dots{display:inline-block;overflow:hidden;vertical-align:bottom}.animated-dots:after{display:inline-block;content:"...";animation:animated-dots 1.2s steps(4,jump-none) infinite}.modal-content>.btn-close,.modal-header>.btn-close{position:absolute;top:0;right:0;width:3.5rem;height:3.5rem;margin:0;padding:0;z-index:10}.modal-body{scrollbar-color:rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),0.16)}.modal-body::-webkit-scrollbar{width:1rem;height:1rem;-webkit-transition:background .3s;transition:background .3s}@media (prefers-reduced-motion:reduce){.modal-body::-webkit-scrollbar{-webkit-transition:none;transition:none}}.modal-body::-webkit-scrollbar-thumb{border-radius:1rem;border:5px solid transparent;box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.16)}.modal-body::-webkit-scrollbar-track{background:0 0}.modal-body:hover::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 1rem rgba(var(--tblr-scrollbar-color,var(--tblr-body-color-rgb)),.32)}.modal-body::-webkit-scrollbar-corner{background:0 0}.modal-body .modal-title{margin-bottom:1rem}.modal-body+.modal-body{border-top:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.modal-status{position:absolute;top:0;left:0;right:0;height:2px;background:var(--tblr-secondary);border-radius:var(--tblr-border-radius-lg) var(--tblr-border-radius-lg) 0 0}.modal-header{align-items:center;min-height:3.5rem;background:0 0;padding:0 3.5rem 0 1.5rem}.modal-title{font-size:1rem;font-weight:var(--tblr-font-weight-bold);color:inherit;line-height:1.4285714286}.modal-footer{padding-top:.75rem;padding-bottom:.75rem}.modal-blur{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-full-width{max-width:none;margin:0 .5rem}.nav-vertical,.nav-vertical .nav{flex-direction:column;flex-wrap:nowrap}.nav-vertical .nav{margin-left:1.25rem;border-left:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);padding-left:.5rem}.nav-vertical .nav-item.show .nav-link,.nav-vertical .nav-link.active{font-weight:var(--tblr-font-weight-medium)}.nav-vertical.nav-pills{margin:0 -.75rem}.nav-bordered{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)}.nav-bordered .nav-item+.nav-item{margin-left:1.25rem}.nav-bordered .nav-link{padding-left:0;padding-right:0;margin:0 0 calc(-1 * var(--tblr-border-width));border:0;border-bottom:2px var(--tblr-border-style) transparent}.nav-bordered .nav-item.show .nav-link,.nav-bordered .nav-link.active{color:var(--tblr-primary);border-color:var(--tblr-primary)}.nav-link{display:flex;transition:color .3s,background-color .3s;align-items:center}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{background-color:var(--tblr-nav-link-hover-bg)}.nav-link-toggle{margin-left:auto;padding:0 .25rem;transition:transform .3s}@media (prefers-reduced-motion:reduce){.nav-link-toggle{transition:none}}.nav-link-toggle:after{content:"";display:inline-block;vertical-align:.306em;width:.36em;height:.36em;border-bottom:1px var(--tblr-border-style);border-left:1px var(--tblr-border-style);margin-right:.1em;margin-left:.4em;transform:rotate(-45deg)}.nav-link-toggle:after{margin:0}.nav-link[aria-expanded=true] .nav-link-toggle{transform:rotate(180deg)}.nav-link-icon{width:1.25rem;height:1.25rem;margin-right:.5rem;color:inherit}.nav-link-icon svg{display:block;height:100%}.nav-fill .nav-item .nav-link{justify-content:center}.stars{display:inline-flex;color:#8a97ab;font-size:.75rem}.stars .star:not(:first-child){margin-left:.25rem}.pagination{-webkit-user-select:none;-moz-user-select:none;user-select:none}.page-link{min-width:1.75rem;border-radius:var(--tblr-border-radius)}.page-item{text-align:center}.page-item:not(.active) .page-link:hover{background:0 0}.page-item.page-next,.page-item.page-prev{flex:0 0 50%;text-align:left}.page-item.page-next{margin-left:auto;text-align:right}.page-item-subtitle{margin-bottom:2px;font-size:12px;color:var(--tblr-secondary);text-transform:uppercase}.page-item.disabled .page-item-subtitle{color:var(--tblr-disabled-color)}.page-item-title{font-size:1rem;font-weight:var(--tblr-font-weight-normal);color:var(--tblr-body-color)}.page-link:hover .page-item-title{color:#066fd1}.page-item.disabled .page-item-title{color:var(--tblr-disabled-color)}@keyframes progress-indeterminate{0%{right:100%;left:-35%}100%,60%{right:-90%;left:100%}}.progress{position:relative;width:100%;line-height:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{background:var(--tblr-progress-bg)}.progress::-webkit-progress-value{background-color:var(--tblr-primary)}.progress::-moz-progress-bar{background-color:var(--tblr-primary)}.progress::-ms-fill{background-color:var(--tblr-primary);border:none}.progress-sm{height:.25rem}.progress-bar{height:100%}.progress-bar-indeterminate:after,.progress-bar-indeterminate:before{position:absolute;top:0;bottom:0;left:0;content:"";background-color:inherit;will-change:left,right}.progress-bar-indeterminate:before{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}.progress-separated .progress-bar{box-shadow:0 0 0 2px var(--tblr-card-bg,var(--tblr-bg-surface))}.progressbg{position:relative;padding:.25rem .5rem;display:flex}.progressbg-text{position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progressbg-progress{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;height:100%;background:0 0;pointer-events:none}.progressbg-value{font-weight:var(--tblr-font-weight-medium);margin-left:auto;padding-left:2rem}.ribbon{--tblr-ribbon-margin:0.25rem;--tblr-ribbon-border-radius:var(--tblr-border-radius);position:absolute;top:.75rem;right:calc(-1 * var(--tblr-ribbon-margin));z-index:1;padding:.25rem .75rem;font-size:.625rem;font-weight:var(--tblr-font-weight-bold);line-height:1;color:#fff;text-align:center;text-transform:uppercase;background:var(--tblr-primary);border-color:var(--tblr-primary);border-radius:var(--tblr-ribbon-border-radius) 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;min-width:2rem}.ribbon:before{position:absolute;right:0;bottom:100%;width:0;height:0;content:"";filter:brightness(70%);border:calc(var(--tblr-ribbon-margin) * .5) var(--tblr-border-style);border-color:inherit;border-top-color:transparent;border-right-color:transparent}.ribbon.bg-blue{border-color:var(--tblr-blue)}.ribbon.bg-blue-lt{border-color:rgba(var(--tblr-blue-rgb),.1)!important}.ribbon.bg-azure{border-color:var(--tblr-azure)}.ribbon.bg-azure-lt{border-color:rgba(var(--tblr-azure-rgb),.1)!important}.ribbon.bg-indigo{border-color:var(--tblr-indigo)}.ribbon.bg-indigo-lt{border-color:rgba(var(--tblr-indigo-rgb),.1)!important}.ribbon.bg-purple{border-color:var(--tblr-purple)}.ribbon.bg-purple-lt{border-color:rgba(var(--tblr-purple-rgb),.1)!important}.ribbon.bg-pink{border-color:var(--tblr-pink)}.ribbon.bg-pink-lt{border-color:rgba(var(--tblr-pink-rgb),.1)!important}.ribbon.bg-red{border-color:var(--tblr-red)}.ribbon.bg-red-lt{border-color:rgba(var(--tblr-red-rgb),.1)!important}.ribbon.bg-orange{border-color:var(--tblr-orange)}.ribbon.bg-orange-lt{border-color:rgba(var(--tblr-orange-rgb),.1)!important}.ribbon.bg-yellow{border-color:var(--tblr-yellow)}.ribbon.bg-yellow-lt{border-color:rgba(var(--tblr-yellow-rgb),.1)!important}.ribbon.bg-lime{border-color:var(--tblr-lime)}.ribbon.bg-lime-lt{border-color:rgba(var(--tblr-lime-rgb),.1)!important}.ribbon.bg-green{border-color:var(--tblr-green)}.ribbon.bg-green-lt{border-color:rgba(var(--tblr-green-rgb),.1)!important}.ribbon.bg-teal{border-color:var(--tblr-teal)}.ribbon.bg-teal-lt{border-color:rgba(var(--tblr-teal-rgb),.1)!important}.ribbon.bg-cyan{border-color:var(--tblr-cyan)}.ribbon.bg-cyan-lt{border-color:rgba(var(--tblr-cyan-rgb),.1)!important}.ribbon .icon{width:1.25rem;height:1.25rem;font-size:1.25rem}.ribbon-top{top:calc(-1 * var(--tblr-ribbon-margin));right:.75rem;width:2rem;padding:.5rem 0;border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-top:before{top:0;right:100%;bottom:auto;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-top.ribbon-start{right:auto;left:.75rem}.ribbon-top.ribbon-start:before{top:0;right:100%;left:auto}.ribbon-start{right:auto;left:calc(-1 * var(--tblr-ribbon-margin));border-radius:0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius)}.ribbon-start:before{top:auto;bottom:100%;left:0;border-color:inherit;border-top-color:transparent;border-left-color:transparent}.ribbon-bottom{top:auto;bottom:.75rem}.ribbon-bookmark{padding-left:.25rem;border-radius:0 0 var(--tblr-ribbon-border-radius) 0}.ribbon-bookmark:after{position:absolute;top:0;right:100%;display:block;width:0;height:0;content:"";border:1rem var(--tblr-border-style);border-color:inherit;border-right-width:0;border-left-color:transparent;border-left-width:.5rem}.ribbon-bookmark.ribbon-left{padding-right:.5rem}.ribbon-bookmark.ribbon-left:after{right:auto;left:100%;border-right-color:transparent;border-right-width:.5rem;border-left-width:0}.ribbon-bookmark.ribbon-top{padding-right:0;padding-bottom:.25rem;padding-left:0;border-radius:0 var(--tblr-ribbon-border-radius) 0 0}.ribbon-bookmark.ribbon-top:after{top:100%;right:0;left:0;border-color:inherit;border-width:1rem;border-top-width:0;border-bottom-color:transparent;border-bottom-width:.5rem}.markdown{line-height:1.7142857143}.markdown>:first-child{margin-top:0}.markdown>:last-child,.markdown>:last-child .highlight{margin-bottom:0}@media (min-width:768px){.markdown>.hr,.markdown>hr{margin-top:3em;margin-bottom:3em}}.markdown>.h1,.markdown>.h2,.markdown>.h3,.markdown>.h4,.markdown>.h5,.markdown>.h6,.markdown>h1,.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{font-weight:var(--tblr-font-weight-bold)}.markdown>blockquote{font-size:1rem;margin:1.5rem 0;padding:.5rem 1.5rem}.markdown>img,.markdown>p>img{border-radius:var(--tblr-border-radius)}.placeholder:not(.btn):not([class*=bg-]){background-color:currentColor!important}.placeholder:not(.avatar):not([class*=card-img-]){border-radius:var(--tblr-border-radius)}.nav-segmented{--tblr-nav-bg:var(--tblr-bg-surface-tertiary);--tblr-nav-padding:2px;--tblr-nav-height:2.5rem;--tblr-nav-gap:.25rem;--tblr-nav-active-bg:var(--tblr-bg-surface);--tblr-nav-font-size:inherit;--tblr-nav-radius:6px;--tblr-nav-link-disabled-color:var(--tblr-disabled-color);--tblr-nav-link-gap:.25rem;--tblr-nav-link-padding-x:.75rem;--tblr-nav-link-icon-size:1.25rem;display:inline-flex;flex-wrap:wrap;gap:var(--tblr-nav-gap);padding:var(--tblr-nav-padding);list-style:none;background:var(--tblr-nav-bg);border-radius:calc(var(--tblr-nav-radius) + var(--tblr-nav-padding));box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}.nav-segmented .nav-link{display:inline-flex;gap:calc(.25rem + var(--tblr-nav-link-gap));align-items:center;margin:0;font-size:var(--tblr-nav-font-size);min-width:calc(var(--tblr-nav-height) - 2 * var(--tblr-nav-padding));height:calc(var(--tblr-nav-height) - 2 * var(--tblr-nav-padding));padding:0 calc(var(--tblr-nav-link-padding-x) - 2px);border:1px solid transparent;background:0 0;color:var(--tblr-secondary);text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .3s,color .3s;border-radius:var(--tblr-nav-radius);flex-grow:1;justify-content:center}.nav-segmented .nav-link.hover,.nav-segmented .nav-link:hover{background:rgba(0,0,0,.04);color:var(--tblr-body-color)}.nav-segmented .nav-link.disabled,.nav-segmented .nav-link:disabled{color:var(--tblr-nav-link-disabled-color);cursor:not-allowed}.nav-segmented .nav-link-input:checked+.nav-link,.nav-segmented .nav-link.active{color:var(--tblr-body-color);background:var(--tblr-nav-active-bg);border-color:var(--tblr-border-color)}.nav-segmented .nav-link-input{display:none}.nav-segmented .nav-link-icon{width:var(--tblr-nav-link-icon-size);height:var(--tblr-nav-link-icon-size);margin:0 -.25rem;color:inherit}.nav-segmented-vertical{flex-direction:column}.nav-segmented-vertical .nav-link{justify-content:flex-start}.nav-sm{--tblr-nav-height:2rem;--tblr-nav-font-size:var(--tblr-font-size-h5);--tblr-nav-radius:4px;--tblr-nav-link-padding-x:.5rem;--tblr-nav-link-gap:.25rem;--tblr-nav-link-icon-size:1rem}.nav-lg{--tblr-nav-height:3rem;--tblr-nav-font-size:var(--tblr-font-size-h3);--tblr-nav-radius:8px;--tblr-nav-link-padding-x:1rem;--tblr-nav-link-gap:.5rem;--tblr-nav-link-icon-size:1.5rem}.steps{--tblr-steps-color:var(--tblr-primary);--tblr-steps-inactive-color:var(--tblr-border-color);--tblr-steps-dot-size:.5rem;--tblr-steps-border-width:2px;display:flex;flex-wrap:nowrap;width:100%;padding:0;margin:0;list-style:none}.steps-blue{--tblr-steps-color:var(--tblr-blue)}.steps-azure{--tblr-steps-color:var(--tblr-azure)}.steps-indigo{--tblr-steps-color:var(--tblr-indigo)}.steps-purple{--tblr-steps-color:var(--tblr-purple)}.steps-pink{--tblr-steps-color:var(--tblr-pink)}.steps-red{--tblr-steps-color:var(--tblr-red)}.steps-orange{--tblr-steps-color:var(--tblr-orange)}.steps-yellow{--tblr-steps-color:var(--tblr-yellow)}.steps-lime{--tblr-steps-color:var(--tblr-lime)}.steps-green{--tblr-steps-color:var(--tblr-green)}.steps-teal{--tblr-steps-color:var(--tblr-teal)}.steps-cyan{--tblr-steps-color:var(--tblr-cyan)}.step-item{position:relative;flex:1 1 0;min-height:1rem;margin-top:0;color:inherit;text-align:center;cursor:default;padding-top:calc(var(--tblr-steps-dot-size))}a.step-item{cursor:pointer}a.step-item:hover{color:inherit}.step-item:after,.step-item:before{background:var(--tblr-steps-color)}.step-item:not(:last-child):after{position:absolute;left:50%;width:100%;content:"";transform:translateY(-50%)}.step-item:after{top:calc(var(--tblr-steps-dot-size) * .5);height:var(--tblr-steps-border-width)}.step-item:before{content:"";position:absolute;top:0;left:50%;z-index:1;box-sizing:content-box;display:flex;align-items:center;justify-content:center;border-radius:100rem;transform:translateX(-50%);color:var(--tblr-white);width:var(--tblr-steps-dot-size);height:var(--tblr-steps-dot-size)}.step-item.active{font-weight:var(--tblr-font-weight-bold)}.step-item.active:after{background:var(--tblr-steps-inactive-color)}.step-item.active~.step-item{color:var(--tblr-disabled-color)}.step-item.active~.step-item:after,.step-item.active~.step-item:before{background:var(--tblr-steps-inactive-color)}.steps-counter{--tblr-steps-dot-size:1.5rem;counter-reset:steps}.steps-counter .step-item{counter-increment:steps}.steps-counter .step-item:before{content:counter(steps)}.steps-vertical{--tblr-steps-dot-offset:6px;flex-direction:column}.steps-vertical.steps-counter{--tblr-steps-dot-offset:-2px}.steps-vertical .step-item{text-align:left;padding-top:0;padding-left:calc(var(--tblr-steps-dot-size) + 1rem);min-height:auto}.steps-vertical .step-item:not(:first-child){margin-top:1rem}.steps-vertical .step-item:before{top:var(--tblr-steps-dot-offset);left:0;transform:translate(0,0)}.steps-vertical .step-item:not(:last-child):after{position:absolute;content:"";transform:translateX(-50%);top:var(--tblr-steps-dot-offset);left:calc(var(--tblr-steps-dot-size) * .5);width:var(--tblr-steps-border-width);height:calc(100% + 1rem)}@keyframes status-pulsate-main{40%{transform:scale(1.25,1.25)}60%{transform:scale(1.25,1.25)}}@keyframes status-pulsate-secondary{10%{transform:scale(1,1)}30%{transform:scale(3,3)}80%{transform:scale(3,3)}100%{transform:scale(1,1)}}@keyframes status-pulsate-tertiary{25%{transform:scale(1,1)}80%{transform:scale(3,3);opacity:0}100%{transform:scale(3,3);opacity:0}}.status{--tblr-status-height:1.5rem;--tblr-status-color:#6c7a91;--tblr-status-color-rgb:108,122,145;display:inline-flex;align-items:center;height:var(--tblr-status-height);padding:.25rem .75rem;gap:.5rem;color:var(--tblr-status-color);background:rgba(var(--tblr-status-color-rgb),.1);font-size:.875rem;text-transform:none;letter-spacing:normal;border-radius:100rem;font-weight:var(--tblr-font-weight-medium);line-height:1;margin:0}.status .status-dot{background:var(--tblr-status-color)}.status .icon{font-size:1.25rem}.status-lite{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color)!important;background:0 0!important;color:var(--tblr-body-color)!important}.status-primary{--tblr-status-color:#066fd1;--tblr-status-color-rgb:6,111,209}.status-secondary{--tblr-status-color:#6c7a91;--tblr-status-color-rgb:108,122,145}.status-success{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-info{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-warning{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-danger{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-light{--tblr-status-color:#f6f8fb;--tblr-status-color-rgb:246,248,251}.status-dark{--tblr-status-color:#182433;--tblr-status-color-rgb:24,36,51}.status-muted{--tblr-status-color:#6c7a91;--tblr-status-color-rgb:108,122,145}.status-blue{--tblr-status-color:#066fd1;--tblr-status-color-rgb:6,111,209}.status-azure{--tblr-status-color:#4299e1;--tblr-status-color-rgb:66,153,225}.status-indigo{--tblr-status-color:#4263eb;--tblr-status-color-rgb:66,99,235}.status-purple{--tblr-status-color:#ae3ec9;--tblr-status-color-rgb:174,62,201}.status-pink{--tblr-status-color:#d6336c;--tblr-status-color-rgb:214,51,108}.status-red{--tblr-status-color:#d63939;--tblr-status-color-rgb:214,57,57}.status-orange{--tblr-status-color:#f76707;--tblr-status-color-rgb:247,103,7}.status-yellow{--tblr-status-color:#f59f00;--tblr-status-color-rgb:245,159,0}.status-lime{--tblr-status-color:#74b816;--tblr-status-color-rgb:116,184,22}.status-green{--tblr-status-color:#2fb344;--tblr-status-color-rgb:47,179,68}.status-teal{--tblr-status-color:#0ca678;--tblr-status-color-rgb:12,166,120}.status-cyan{--tblr-status-color:#17a2b8;--tblr-status-color-rgb:23,162,184}.status-x{--tblr-status-color:#000000;--tblr-status-color-rgb:0,0,0}.status-facebook{--tblr-status-color:#1877f2;--tblr-status-color-rgb:24,119,242}.status-twitter{--tblr-status-color:#1da1f2;--tblr-status-color-rgb:29,161,242}.status-linkedin{--tblr-status-color:#0a66c2;--tblr-status-color-rgb:10,102,194}.status-google{--tblr-status-color:#dc4e41;--tblr-status-color-rgb:220,78,65}.status-youtube{--tblr-status-color:#ff0000;--tblr-status-color-rgb:255,0,0}.status-vimeo{--tblr-status-color:#1ab7ea;--tblr-status-color-rgb:26,183,234}.status-dribbble{--tblr-status-color:#ea4c89;--tblr-status-color-rgb:234,76,137}.status-github{--tblr-status-color:#181717;--tblr-status-color-rgb:24,23,23}.status-instagram{--tblr-status-color:#e4405f;--tblr-status-color-rgb:228,64,95}.status-pinterest{--tblr-status-color:#bd081c;--tblr-status-color-rgb:189,8,28}.status-vk{--tblr-status-color:#6383a8;--tblr-status-color-rgb:99,131,168}.status-rss{--tblr-status-color:#ffa500;--tblr-status-color-rgb:255,165,0}.status-flickr{--tblr-status-color:#0063dc;--tblr-status-color-rgb:0,99,220}.status-bitbucket{--tblr-status-color:#0052cc;--tblr-status-color-rgb:0,82,204}.status-tabler{--tblr-status-color:#066fd1;--tblr-status-color-rgb:6,111,209}.status-dot{--tblr-status-dot-color:var(--tblr-status-color, #6c7a91);--tblr-status-size:0.5rem;position:relative;display:inline-block;width:var(--tblr-status-size);height:var(--tblr-status-size);background:var(--tblr-status-dot-color);border-radius:100rem}.status-dot-animated:before{content:"";position:absolute;inset:0;z-index:0;background:inherit;border-radius:inherit;opacity:.6;animation:1s linear 2s backwards infinite status-pulsate-tertiary}.status-indicator{--tblr-status-indicator-size:2.5rem;--tblr-status-indicator-color:var(--tblr-status-color, #6c7a91);display:block;position:relative;width:var(--tblr-status-indicator-size);height:var(--tblr-status-indicator-size)}.status-indicator-circle{--tblr-status-circle-size:.75rem;position:absolute;left:50%;top:50%;margin:calc(var(--tblr-status-circle-size)/ -2) 0 0 calc(var(--tblr-status-circle-size)/ -2);width:var(--tblr-status-circle-size);height:var(--tblr-status-circle-size);border-radius:100rem;background:var(--tblr-status-color)}.status-indicator-circle:first-child{z-index:3}.status-indicator-circle:nth-child(2){z-index:2;opacity:.1}.status-indicator-circle:nth-child(3){z-index:1;opacity:.3}.status-indicator-animated .status-indicator-circle:first-child{animation:2s linear 1s infinite backwards status-pulsate-main}.status-indicator-animated .status-indicator-circle:nth-child(2){animation:2s linear 1s infinite backwards status-pulsate-secondary}.status-indicator-animated .status-indicator-circle:nth-child(3){animation:2s linear 1s infinite backwards status-pulsate-tertiary}.switch-icon{display:inline-block;line-height:1;border:0;padding:0;background:0 0;width:1.25rem;height:1.25rem;vertical-align:bottom;position:relative;cursor:pointer}.switch-icon.disabled{pointer-events:none;opacity:.4}.switch-icon:focus{outline:0}.switch-icon svg{display:block;width:100%;height:100%}.switch-icon .switch-icon-a,.switch-icon .switch-icon-b{display:block;width:100%;height:100%}.switch-icon .switch-icon-a{opacity:1}.switch-icon .switch-icon-b{position:absolute;top:0;left:0;opacity:0}.switch-icon.active .switch-icon-a{opacity:0}.switch-icon.active .switch-icon-b{opacity:1}.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:opacity .5s}@media (prefers-reduced-motion:reduce){.switch-icon-fade .switch-icon-a,.switch-icon-fade .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:opacity .5s,transform 0s .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale .switch-icon-a,.switch-icon-scale .switch-icon-b{transition:none}}.switch-icon-scale .switch-icon-b{transform:scale(1.5)}.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:opacity 0s,transform .5s}@media (prefers-reduced-motion:reduce){.switch-icon-scale.active .switch-icon-a,.switch-icon-scale.active .switch-icon-b{transition:none}}.switch-icon-scale.active .switch-icon-b{transform:scale(1)}.switch-icon-flip{perspective:10em}.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{backface-visibility:hidden;transform-style:preserve-3d;transition:opacity 0s .2s,transform .4s ease-in-out}@media (prefers-reduced-motion:reduce){.switch-icon-flip .switch-icon-a,.switch-icon-flip .switch-icon-b{transition:none}}.switch-icon-flip .switch-icon-a{opacity:1;transform:rotateY(0)}.switch-icon-flip .switch-icon-b{opacity:1;transform:rotateY(-180deg)}.switch-icon-flip.active .switch-icon-a{opacity:1;transform:rotateY(180deg)}.switch-icon-flip.active .switch-icon-b{opacity:1;transform:rotateY(0)}.switch-icon-slide-down,.switch-icon-slide-left,.switch-icon-slide-right,.switch-icon-slide-up{overflow:hidden}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:opacity .3s,transform .3s}@media (prefers-reduced-motion:reduce){.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-a,.switch-icon-slide-up .switch-icon-b{transition:none}}.switch-icon-slide-down .switch-icon-a,.switch-icon-slide-left .switch-icon-a,.switch-icon-slide-right .switch-icon-a,.switch-icon-slide-up .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b,.switch-icon-slide-left .switch-icon-b,.switch-icon-slide-right .switch-icon-b,.switch-icon-slide-up .switch-icon-b{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-a,.switch-icon-slide-left.active .switch-icon-a,.switch-icon-slide-right.active .switch-icon-a,.switch-icon-slide-up.active .switch-icon-a{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-b,.switch-icon-slide-left.active .switch-icon-b,.switch-icon-slide-right.active .switch-icon-b,.switch-icon-slide-up.active .switch-icon-b{transform:translateY(0)}.switch-icon-slide-left .switch-icon-a{transform:translateX(0)}.switch-icon-slide-left .switch-icon-b{transform:translateX(100%)}.switch-icon-slide-left.active .switch-icon-a{transform:translateX(-100%)}.switch-icon-slide-left.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-right .switch-icon-a{transform:translateX(0)}.switch-icon-slide-right .switch-icon-b{transform:translateX(-100%)}.switch-icon-slide-right.active .switch-icon-a{transform:translateX(100%)}.switch-icon-slide-right.active .switch-icon-b{transform:translateX(0)}.switch-icon-slide-down .switch-icon-a{transform:translateY(0)}.switch-icon-slide-down .switch-icon-b{transform:translateY(-100%)}.switch-icon-slide-down.active .switch-icon-a{transform:translateY(100%)}.switch-icon-slide-down.active .switch-icon-b{transform:translateY(0)}.markdown>table thead th,.table thead th{background:var(--tblr-bg-surface-tertiary);font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);padding-top:.5rem;padding-bottom:.5rem;white-space:nowrap}@media print{.markdown>table thead th,.table thead th{background:0 0}}.table-responsive .markdown>table,.table-responsive .table{margin-bottom:0}.table-responsive+.card-footer{border-top:0}.table-transparent thead th{background:0 0}.table-nowrap>:not(caption)>*>*{white-space:nowrap}.table-vcenter>:not(caption)>*>*{vertical-align:middle}.table-center>:not(caption)>*>*{text-align:center}.td-truncate{max-width:1px;width:100%}.table-mobile{display:block}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr{display:flex;flex-direction:column}.table-mobile td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile .btn{display:block}@media (max-width:575.98px){.table-mobile-sm{display:block}.table-mobile-sm thead{display:none}.table-mobile-sm tbody,.table-mobile-sm tr{display:flex;flex-direction:column}.table-mobile-sm td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-sm td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-sm tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-sm .btn{display:block}}@media (max-width:767.98px){.table-mobile-md{display:block}.table-mobile-md thead{display:none}.table-mobile-md tbody,.table-mobile-md tr{display:flex;flex-direction:column}.table-mobile-md td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-md td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-md tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-md .btn{display:block}}@media (max-width:991.98px){.table-mobile-lg{display:block}.table-mobile-lg thead{display:none}.table-mobile-lg tbody,.table-mobile-lg tr{display:flex;flex-direction:column}.table-mobile-lg td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-lg td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-lg tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-lg .btn{display:block}}@media (max-width:1199.98px){.table-mobile-xl{display:block}.table-mobile-xl thead{display:none}.table-mobile-xl tbody,.table-mobile-xl tr{display:flex;flex-direction:column}.table-mobile-xl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xl td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xl .btn{display:block}}@media (max-width:1399.98px){.table-mobile-xxl{display:block}.table-mobile-xxl thead{display:none}.table-mobile-xxl tbody,.table-mobile-xxl tr{display:flex;flex-direction:column}.table-mobile-xxl td{display:block;padding:.75rem .75rem!important;border:none;color:var(--tblr-body-color)!important}.table-mobile-xxl td[data-label]:before{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);content:attr(data-label);display:block}.table-mobile-xxl tr{border-bottom:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent)}.table-mobile-xxl .btn{display:block}}.table-sort{font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;border:0;background:inherit;display:block;width:100%;text-align:inherit;transition:color .3s;margin:-.5rem -.75rem;padding:.5rem .75rem}@media (prefers-reduced-motion:reduce){.table-sort{transition:none}}.table-sort.asc,.table-sort.desc,.table-sort:hover{color:var(--tblr-body-color)}.table-sort:after{content:"";display:inline-flex;width:1rem;height:1rem;vertical-align:bottom;-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,");background:currentColor;margin-left:.25rem}.table-sort.asc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-sort.desc:after{-webkit-mask-image:url("data:image/svg+xml,");mask-image:url("data:image/svg+xml,")}.table-borderless thead th{background:0 0}.table-selectable tbody tr:has(.table-selectable-check:checked){background-color:var(--tblr-active-bg)}.tag{--tblr-tag-height:1.5rem;border:1px solid var(--tblr-border-color);display:inline-flex;align-items:center;height:var(--tblr-tag-height);border-radius:var(--tblr-border-radius);padding:0 .5rem;background:var(--tblr-bg-surface);box-shadow:var(--tblr-box-shadow-input);gap:.5rem}.tag .btn-close{margin-right:-.25rem;margin-left:-.125rem;padding:0;width:1rem;height:1rem;font-size:.5rem}.tag-badge{--tblr-badge-font-size:0.625rem;--tblr-badge-padding-x:.25rem;--tblr-badge-padding-y:.125rem;margin-right:-.25rem}.tag-avatar,.tag-check,.tag-flag,.tag-icon,.tag-payment{margin-left:-.25rem}.tag-icon{color:var(--tblr-secondary);margin-right:-.125rem;width:1rem;height:1rem}.tag-check{width:1rem;height:1rem;background-size:1rem}.tags-list{--tblr-list-gap:0.5rem;display:flex;flex-wrap:wrap;gap:var(--tblr-list-gap)}.toast{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color-translucent);box-shadow:rgba(24,36,51,.04) 0 2px 4px 0}.toast .toast-header{-webkit-user-select:none;-moz-user-select:none;user-select:none}.toast button[data-bs-dismiss=toast]{outline:0}.toast-primary{--tblr-toast-color:#066fd1}.toast-secondary{--tblr-toast-color:#6c7a91}.toast-success{--tblr-toast-color:#2fb344}.toast-info{--tblr-toast-color:#4299e1}.toast-warning{--tblr-toast-color:#f76707}.toast-danger{--tblr-toast-color:#d63939}.toast-light{--tblr-toast-color:#f6f8fb}.toast-dark{--tblr-toast-color:#182433}.toast-muted{--tblr-toast-color:#6c7a91}.toast-blue{--tblr-toast-color:#066fd1}.toast-azure{--tblr-toast-color:#4299e1}.toast-indigo{--tblr-toast-color:#4263eb}.toast-purple{--tblr-toast-color:#ae3ec9}.toast-pink{--tblr-toast-color:#d6336c}.toast-red{--tblr-toast-color:#d63939}.toast-orange{--tblr-toast-color:#f76707}.toast-yellow{--tblr-toast-color:#f59f00}.toast-lime{--tblr-toast-color:#74b816}.toast-green{--tblr-toast-color:#2fb344}.toast-teal{--tblr-toast-color:#0ca678}.toast-cyan{--tblr-toast-color:#17a2b8}.toast-x{--tblr-toast-color:#000000}.toast-facebook{--tblr-toast-color:#1877f2}.toast-twitter{--tblr-toast-color:#1da1f2}.toast-linkedin{--tblr-toast-color:#0a66c2}.toast-google{--tblr-toast-color:#dc4e41}.toast-youtube{--tblr-toast-color:#ff0000}.toast-vimeo{--tblr-toast-color:#1ab7ea}.toast-dribbble{--tblr-toast-color:#ea4c89}.toast-github{--tblr-toast-color:#181717}.toast-instagram{--tblr-toast-color:#e4405f}.toast-pinterest{--tblr-toast-color:#bd081c}.toast-vk{--tblr-toast-color:#6383a8}.toast-rss{--tblr-toast-color:#ffa500}.toast-flickr{--tblr-toast-color:#0063dc}.toast-bitbucket{--tblr-toast-color:#0052cc}.toast-tabler{--tblr-toast-color:#066fd1}.toolbar{display:flex;flex-wrap:nowrap;flex-shrink:0;margin:0 -.5rem}.toolbar>*{margin:0 .5rem}.tracking{--tblr-tracking-height:1.5rem;--tblr-tracking-gap-width:0.125rem;--tblr-tracking-block-border-radius:var(--tblr-border-radius);display:flex;gap:var(--tblr-tracking-gap-width)}.tracking-squares{--tblr-tracking-block-border-radius:var(--tblr-border-radius-sm)}.tracking-squares .tracking-block{height:auto}.tracking-squares .tracking-block:before{content:"";display:block;padding-top:100%}.tracking-block{flex:1;border-radius:var(--tblr-tracking-block-border-radius);height:var(--tblr-tracking-height);min-width:.25rem;background:var(--tblr-border-color)}.timeline{--tblr-timeline-icon-size:2.5rem;position:relative;list-style:none;padding:0}.timeline-event{position:relative}.timeline-event:not(:last-child){margin-bottom:var(--tblr-page-padding)}.timeline-event:not(:last-child):before{content:"";position:absolute;top:var(--tblr-timeline-icon-size);left:calc(var(--tblr-timeline-icon-size)/ 2);bottom:calc(-1 * var(--tblr-page-padding));width:var(--tblr-border-width);background-color:var(--tblr-border-color);border-radius:var(--tblr-border-radius)}.timeline-event-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:var(--tblr-timeline-icon-size,2.5rem);height:var(--tblr-timeline-icon-size,2.5rem);background:var(--tblr-gray-200);color:var(--tblr-secondary);border-radius:var(--tblr-border-radius);z-index:5}.timeline-event-card{margin-left:calc(var(--tblr-timeline-icon-size,2.5rem) + var(--tblr-page-padding))}.timeline-simple .timeline-event-icon{display:none}.timeline-simple .timeline-event-card{margin-left:0}.hr-text{display:flex;align-items:center;margin:2rem 0;font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary);height:1px}.hr-text:after,.hr-text:before{flex:1 1 auto;height:1px;background-color:var(--tblr-border-color)}.hr-text:before{content:"";margin-right:.5rem}.hr-text:after{content:"";margin-left:.5rem}.hr-text>:first-child{padding-right:.5rem;padding-left:0;color:var(--tblr-secondary)}.hr-text.hr-text-left:before,.hr-text.hr-text-start:before{content:none}.hr-text.hr-text-left>:first-child,.hr-text.hr-text-start>:first-child{padding-right:.5rem;padding-left:.5rem}.hr-text.hr-text-end:before,.hr-text.hr-text-right:before{content:""}.hr-text.hr-text-end:after,.hr-text.hr-text-right:after{content:none}.hr-text.hr-text-end>:first-child,.hr-text.hr-text-right>:first-child{padding-right:0;padding-left:.5rem}.card>.hr-text{margin:0}.hr-text-spaceless{margin:-.5rem 0}.lead{line-height:1.4}a{-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}.h1 a,.h2 a,.h3 a,.h4 a,.h5 a,.h6 a,h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}.h1 a:hover,.h2 a:hover,.h3 a:hover,.h4 a:hover,.h5 a:hover,.h6 a:hover,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:inherit}.h1,h1{font-size:var(--tblr-font-size-h1);line-height:var(--tblr-line-height-h1)}.h2,h2{font-size:var(--tblr-font-size-h2);line-height:var(--tblr-line-height-h2)}.h3,h3{font-size:var(--tblr-font-size-h3);line-height:var(--tblr-line-height-h3)}.h4,h4{font-size:var(--tblr-font-size-h4);line-height:var(--tblr-line-height-h4)}.h5,h5{font-size:var(--tblr-font-size-h5);line-height:var(--tblr-line-height-h5)}.h6,h6{font-size:var(--tblr-font-size-h6);line-height:var(--tblr-line-height-h6)}.strong,b,strong{font-weight:var(--tblr-font-weight-bold)}blockquote{padding:1rem 1rem 1rem;border-left:2px var(--tblr-border-style) var(--tblr-border-color)}blockquote p{margin-bottom:1rem}blockquote cite{display:block;text-align:right}blockquote cite:before{content:"— "}ol,ul{padding-left:1.5rem}.hr,hr{margin:2rem 0}dl dd:last-child{margin-bottom:0}pre{padding:1rem;background:var(--tblr-bg-surface-dark);color:var(--tblr-light);border-radius:var(--tblr-border-radius)}pre code{background:0 0;padding:0}code{background:var(--tblr-code-bg);padding:2px 4px;border-radius:var(--tblr-border-radius)}abbr{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}.kbd,kbd{border:var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);display:inline-block;box-sizing:border-box;max-width:100%;font-size:var(--tblr-font-size-h5);font-weight:var(--tblr-font-weight-medium);line-height:1;vertical-align:baseline;border-radius:var(--tblr-border-radius)}img{max-width:100%;height:auto}.list-unstyled{margin-left:0}::-moz-selection{background-color:color-mix(in srgb,var(--tblr-primary) 10%,transparent)}.text-selected,::selection{background-color:color-mix(in srgb,var(--tblr-primary) 10%,transparent)}.text-selected{display:inline-block}[class*=" link-"].disabled,[class^=link-].disabled{color:var(--tblr-disabled-color)!important;pointer-events:none}a:hover:has(.icon){text-decoration:none}.subheader{font-size:.75rem;font-weight:var(--tblr-font-weight-bold);text-transform:uppercase;letter-spacing:.04em;line-height:1rem;color:var(--tblr-secondary)}.mention{display:inline-block;box-shadow:var(--tblr-box-shadow-border);border-radius:var(--tblr-border-radius-pill);line-height:1.3333333333em;font-size:.8571428571em;color:var(--tblr-body-color);background:var(--tblr-bg-surface-tertiary);padding:.1666666667em .6666666667em;font-weight:var(--tblr-font-weight-medium)}a.mention{cursor:pointer}a.mention.hover,a.mention:hover{background:var(--tblr-bg-surface-secondary);text-decoration:underline}.mention-app,.mention-avatar,.mention-color{width:1.1666666667em;height:1.1666666667em;border-radius:var(--tblr-border-radius-pill);margin:-.1666666667em .3333333333em 0 -.3333333333em;display:inline-flex;background:no-repeat center center/cover;box-shadow:var(--tblr-box-shadow-border);vertical-align:middle;text-align:center}.mention-app{box-shadow:none;background:0 0;border-radius:0}.mention-count{color:var(--tblr-secondary);margin-left:.6666666667em}.text-incorrect{background:color-mix(in srgb,var(--tblr-red) 4%,transparent);background:color-mix(in srgb,var(--tblr-red) 4%,transparent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--tblr-red)}.text-correct{background:color-mix(in srgb,var(--tblr-green) 4%,transparent);background:color-mix(in srgb,var(--tblr-green) 4%,transparent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--tblr-green)}.chart{display:block;min-height:10rem}.chart text{font-family:inherit}.chart-sm{height:2.5rem}.chart-lg{height:15rem}.chart-square{height:5.75rem}.chart-sparkline{position:relative;width:4rem;height:2.5rem;line-height:1;min-height:0!important}.chart-sparkline-sm{height:1.5rem}.chart-sparkline-square{width:2.5rem}.chart-sparkline-wide{width:6rem}.chart-sparkline-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.625rem}.chart-sparkline-label .icon{width:1rem;height:1rem;font-size:1rem}.offcanvas-header{border-bottom:var(--tblr-border-width) var(--tblr-border-style) rgba(4,32,69,.1)}.offcanvas-footer{padding:1.5rem 1.5rem}.offcanvas-title{font-size:1rem;font-weight:var(--tblr-font-weight-medium);line-height:1.5rem}.offcanvas-narrow{width:20rem}.chat-bubbles{display:flex;flex-direction:column;gap:1rem}.chat-bubble{background:var(--tblr-bg-surface-secondary);border-radius:var(--tblr-border-radius-lg);padding:1rem;position:relative}.chat-bubble-me{background-color:var(--tblr-primary-lt);box-shadow:none}.chat-bubble-title{margin-bottom:.25rem}.chat-bubble-author{font-weight:600}.chat-bubble-date{color:var(--tblr-secondary)}.chat-bubble-body>:last-child{margin-bottom:0}.signature{border:var(--tblr-border-width) solid var(--tblr-border-color);padding:var(--tblr-spacer-1);border-radius:var(--tblr-border-radius)}.signature-canvas{border:var(--tblr-border-width) dashed var(--tblr-border-color);border-radius:var(--tblr-border-radius-sm);display:block;cursor:crosshair;width:100%}.bg-white-overlay{color:#fff;background-color:rgba(246,248,251,.24)}.bg-dark-overlay{color:#fff;background-color:rgba(24,36,51,.24)}.bg-cover{background-repeat:no-repeat;background-size:cover;background-position:center}.bg-primary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-primary-rgb),var(--tblr-bg-opacity))!important}.bg-primary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-primary-lt-rgb),var(--tblr-bg-opacity))!important}.border-primary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-primary-rgb),var(--tblr-border-opacity))!important}.bg-secondary{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-secondary-rgb),var(--tblr-bg-opacity))!important}.bg-secondary-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-secondary-lt-rgb),var(--tblr-bg-opacity))!important}.border-secondary{--tblr-border-opacity:1;border-color:rgba(var(--tblr-secondary-rgb),var(--tblr-border-opacity))!important}.bg-success{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-success-rgb),var(--tblr-bg-opacity))!important}.bg-success-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-success-lt-rgb),var(--tblr-bg-opacity))!important}.border-success{--tblr-border-opacity:1;border-color:rgba(var(--tblr-success-rgb),var(--tblr-border-opacity))!important}.bg-info{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-info-rgb),var(--tblr-bg-opacity))!important}.bg-info-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-info-lt-rgb),var(--tblr-bg-opacity))!important}.border-info{--tblr-border-opacity:1;border-color:rgba(var(--tblr-info-rgb),var(--tblr-border-opacity))!important}.bg-warning{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-warning-rgb),var(--tblr-bg-opacity))!important}.bg-warning-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-warning-lt-rgb),var(--tblr-bg-opacity))!important}.border-warning{--tblr-border-opacity:1;border-color:rgba(var(--tblr-warning-rgb),var(--tblr-border-opacity))!important}.bg-danger{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-danger-rgb),var(--tblr-bg-opacity))!important}.bg-danger-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-danger-lt-rgb),var(--tblr-bg-opacity))!important}.border-danger{--tblr-border-opacity:1;border-color:rgba(var(--tblr-danger-rgb),var(--tblr-border-opacity))!important}.bg-light{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-light-rgb),var(--tblr-bg-opacity))!important}.bg-light-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-light-lt-rgb),var(--tblr-bg-opacity))!important}.border-light{--tblr-border-opacity:1;border-color:rgba(var(--tblr-light-rgb),var(--tblr-border-opacity))!important}.bg-dark{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dark-rgb),var(--tblr-bg-opacity))!important}.bg-dark-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dark-lt-rgb),var(--tblr-bg-opacity))!important}.border-dark{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dark-rgb),var(--tblr-border-opacity))!important}.bg-muted{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-muted-rgb),var(--tblr-bg-opacity))!important}.bg-muted-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-muted-lt-rgb),var(--tblr-bg-opacity))!important}.border-muted{--tblr-border-opacity:1;border-color:rgba(var(--tblr-muted-rgb),var(--tblr-border-opacity))!important}.bg-blue{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-blue-rgb),var(--tblr-bg-opacity))!important}.bg-blue-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-blue-lt-rgb),var(--tblr-bg-opacity))!important}.border-blue{--tblr-border-opacity:1;border-color:rgba(var(--tblr-blue-rgb),var(--tblr-border-opacity))!important}.bg-azure{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-azure-rgb),var(--tblr-bg-opacity))!important}.bg-azure-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-azure-lt-rgb),var(--tblr-bg-opacity))!important}.border-azure{--tblr-border-opacity:1;border-color:rgba(var(--tblr-azure-rgb),var(--tblr-border-opacity))!important}.bg-indigo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-indigo-rgb),var(--tblr-bg-opacity))!important}.bg-indigo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-indigo-lt-rgb),var(--tblr-bg-opacity))!important}.border-indigo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-indigo-rgb),var(--tblr-border-opacity))!important}.bg-purple{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-purple-rgb),var(--tblr-bg-opacity))!important}.bg-purple-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-purple-lt-rgb),var(--tblr-bg-opacity))!important}.border-purple{--tblr-border-opacity:1;border-color:rgba(var(--tblr-purple-rgb),var(--tblr-border-opacity))!important}.bg-pink{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pink-rgb),var(--tblr-bg-opacity))!important}.bg-pink-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pink-lt-rgb),var(--tblr-bg-opacity))!important}.border-pink{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pink-rgb),var(--tblr-border-opacity))!important}.bg-red{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-red-rgb),var(--tblr-bg-opacity))!important}.bg-red-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-red-lt-rgb),var(--tblr-bg-opacity))!important}.border-red{--tblr-border-opacity:1;border-color:rgba(var(--tblr-red-rgb),var(--tblr-border-opacity))!important}.bg-orange{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-orange-rgb),var(--tblr-bg-opacity))!important}.bg-orange-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-orange-lt-rgb),var(--tblr-bg-opacity))!important}.border-orange{--tblr-border-opacity:1;border-color:rgba(var(--tblr-orange-rgb),var(--tblr-border-opacity))!important}.bg-yellow{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-yellow-rgb),var(--tblr-bg-opacity))!important}.bg-yellow-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-yellow-lt-rgb),var(--tblr-bg-opacity))!important}.border-yellow{--tblr-border-opacity:1;border-color:rgba(var(--tblr-yellow-rgb),var(--tblr-border-opacity))!important}.bg-lime{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-lime-rgb),var(--tblr-bg-opacity))!important}.bg-lime-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-lime-lt-rgb),var(--tblr-bg-opacity))!important}.border-lime{--tblr-border-opacity:1;border-color:rgba(var(--tblr-lime-rgb),var(--tblr-border-opacity))!important}.bg-green{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-green-rgb),var(--tblr-bg-opacity))!important}.bg-green-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-green-lt-rgb),var(--tblr-bg-opacity))!important}.border-green{--tblr-border-opacity:1;border-color:rgba(var(--tblr-green-rgb),var(--tblr-border-opacity))!important}.bg-teal{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-teal-rgb),var(--tblr-bg-opacity))!important}.bg-teal-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-teal-lt-rgb),var(--tblr-bg-opacity))!important}.border-teal{--tblr-border-opacity:1;border-color:rgba(var(--tblr-teal-rgb),var(--tblr-border-opacity))!important}.bg-cyan{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-cyan-rgb),var(--tblr-bg-opacity))!important}.bg-cyan-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-cyan-lt-rgb),var(--tblr-bg-opacity))!important}.border-cyan{--tblr-border-opacity:1;border-color:rgba(var(--tblr-cyan-rgb),var(--tblr-border-opacity))!important}.bg-x{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-x-rgb),var(--tblr-bg-opacity))!important}.bg-x-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-x-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-x-lt-rgb),var(--tblr-bg-opacity))!important}.border-x{--tblr-border-opacity:1;border-color:rgba(var(--tblr-x-rgb),var(--tblr-border-opacity))!important}.bg-facebook{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-facebook-rgb),var(--tblr-bg-opacity))!important}.bg-facebook-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-facebook-lt-rgb),var(--tblr-bg-opacity))!important}.border-facebook{--tblr-border-opacity:1;border-color:rgba(var(--tblr-facebook-rgb),var(--tblr-border-opacity))!important}.bg-twitter{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-twitter-rgb),var(--tblr-bg-opacity))!important}.bg-twitter-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-twitter-lt-rgb),var(--tblr-bg-opacity))!important}.border-twitter{--tblr-border-opacity:1;border-color:rgba(var(--tblr-twitter-rgb),var(--tblr-border-opacity))!important}.bg-linkedin{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-bg-opacity))!important}.bg-linkedin-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-linkedin-lt-rgb),var(--tblr-bg-opacity))!important}.border-linkedin{--tblr-border-opacity:1;border-color:rgba(var(--tblr-linkedin-rgb),var(--tblr-border-opacity))!important}.bg-google{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-google-rgb),var(--tblr-bg-opacity))!important}.bg-google-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-google-lt-rgb),var(--tblr-bg-opacity))!important}.border-google{--tblr-border-opacity:1;border-color:rgba(var(--tblr-google-rgb),var(--tblr-border-opacity))!important}.bg-youtube{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-youtube-rgb),var(--tblr-bg-opacity))!important}.bg-youtube-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-youtube-lt-rgb),var(--tblr-bg-opacity))!important}.border-youtube{--tblr-border-opacity:1;border-color:rgba(var(--tblr-youtube-rgb),var(--tblr-border-opacity))!important}.bg-vimeo{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-bg-opacity))!important}.bg-vimeo-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vimeo-lt-rgb),var(--tblr-bg-opacity))!important}.border-vimeo{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vimeo-rgb),var(--tblr-border-opacity))!important}.bg-dribbble{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-bg-opacity))!important}.bg-dribbble-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-dribbble-lt-rgb),var(--tblr-bg-opacity))!important}.border-dribbble{--tblr-border-opacity:1;border-color:rgba(var(--tblr-dribbble-rgb),var(--tblr-border-opacity))!important}.bg-github{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-github-rgb),var(--tblr-bg-opacity))!important}.bg-github-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-github-lt-rgb),var(--tblr-bg-opacity))!important}.border-github{--tblr-border-opacity:1;border-color:rgba(var(--tblr-github-rgb),var(--tblr-border-opacity))!important}.bg-instagram{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-instagram-rgb),var(--tblr-bg-opacity))!important}.bg-instagram-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-instagram-lt-rgb),var(--tblr-bg-opacity))!important}.border-instagram{--tblr-border-opacity:1;border-color:rgba(var(--tblr-instagram-rgb),var(--tblr-border-opacity))!important}.bg-pinterest{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-bg-opacity))!important}.bg-pinterest-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-pinterest-lt-rgb),var(--tblr-bg-opacity))!important}.border-pinterest{--tblr-border-opacity:1;border-color:rgba(var(--tblr-pinterest-rgb),var(--tblr-border-opacity))!important}.bg-vk{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-vk-rgb),var(--tblr-bg-opacity))!important}.bg-vk-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-vk-lt-rgb),var(--tblr-bg-opacity))!important}.border-vk{--tblr-border-opacity:1;border-color:rgba(var(--tblr-vk-rgb),var(--tblr-border-opacity))!important}.bg-rss{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-rss-rgb),var(--tblr-bg-opacity))!important}.bg-rss-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-rss-lt-rgb),var(--tblr-bg-opacity))!important}.border-rss{--tblr-border-opacity:1;border-color:rgba(var(--tblr-rss-rgb),var(--tblr-border-opacity))!important}.bg-flickr{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-flickr-rgb),var(--tblr-bg-opacity))!important}.bg-flickr-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-flickr-lt-rgb),var(--tblr-bg-opacity))!important}.border-flickr{--tblr-border-opacity:1;border-color:rgba(var(--tblr-flickr-rgb),var(--tblr-border-opacity))!important}.bg-bitbucket{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-bg-opacity))!important}.bg-bitbucket-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-bitbucket-lt-rgb),var(--tblr-bg-opacity))!important}.border-bitbucket{--tblr-border-opacity:1;border-color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-border-opacity))!important}.bg-tabler{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-tabler-rgb),var(--tblr-bg-opacity))!important}.bg-tabler-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-tabler-lt-rgb),var(--tblr-bg-opacity))!important}.border-tabler{--tblr-border-opacity:1;border-color:rgba(var(--tblr-tabler-rgb),var(--tblr-border-opacity))!important}.bg-white{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-white-rgb),var(--tblr-bg-opacity))!important}.bg-white-lt{--tblr-bg-opacity:1;--tblr-text-opacity:1;color:rgba(var(--tblr-white-rgb),var(--tblr-text-opacity))!important;background-color:rgba(var(--tblr-white-lt-rgb),var(--tblr-bg-opacity))!important}.border-white{--tblr-border-opacity:1;border-color:rgba(var(--tblr-white-rgb),var(--tblr-border-opacity))!important}.text-primary{--tblr-text-opacity:1;color:rgba(var(--tblr-primary-rgb),var(--tblr-text-opacity))!important}.text-primary-fg{color:var(--tblr-primary-fg)!important}.text-secondary{--tblr-text-opacity:1;color:rgba(var(--tblr-secondary-rgb),var(--tblr-text-opacity))!important}.text-secondary-fg{color:var(--tblr-secondary-fg)!important}.text-success{--tblr-text-opacity:1;color:rgba(var(--tblr-success-rgb),var(--tblr-text-opacity))!important}.text-success-fg{color:var(--tblr-success-fg)!important}.text-info{--tblr-text-opacity:1;color:rgba(var(--tblr-info-rgb),var(--tblr-text-opacity))!important}.text-info-fg{color:var(--tblr-info-fg)!important}.text-warning{--tblr-text-opacity:1;color:rgba(var(--tblr-warning-rgb),var(--tblr-text-opacity))!important}.text-warning-fg{color:var(--tblr-warning-fg)!important}.text-danger{--tblr-text-opacity:1;color:rgba(var(--tblr-danger-rgb),var(--tblr-text-opacity))!important}.text-danger-fg{color:var(--tblr-danger-fg)!important}.text-light{--tblr-text-opacity:1;color:rgba(var(--tblr-light-rgb),var(--tblr-text-opacity))!important}.text-light-fg{color:var(--tblr-light-fg)!important}.text-dark{--tblr-text-opacity:1;color:rgba(var(--tblr-dark-rgb),var(--tblr-text-opacity))!important}.text-dark-fg{color:var(--tblr-dark-fg)!important}.text-muted{--tblr-text-opacity:1;color:rgba(var(--tblr-muted-rgb),var(--tblr-text-opacity))!important}.text-muted-fg{color:var(--tblr-muted-fg)!important}.text-blue{--tblr-text-opacity:1;color:rgba(var(--tblr-blue-rgb),var(--tblr-text-opacity))!important}.text-blue-fg{color:var(--tblr-blue-fg)!important}.text-azure{--tblr-text-opacity:1;color:rgba(var(--tblr-azure-rgb),var(--tblr-text-opacity))!important}.text-azure-fg{color:var(--tblr-azure-fg)!important}.text-indigo{--tblr-text-opacity:1;color:rgba(var(--tblr-indigo-rgb),var(--tblr-text-opacity))!important}.text-indigo-fg{color:var(--tblr-indigo-fg)!important}.text-purple{--tblr-text-opacity:1;color:rgba(var(--tblr-purple-rgb),var(--tblr-text-opacity))!important}.text-purple-fg{color:var(--tblr-purple-fg)!important}.text-pink{--tblr-text-opacity:1;color:rgba(var(--tblr-pink-rgb),var(--tblr-text-opacity))!important}.text-pink-fg{color:var(--tblr-pink-fg)!important}.text-red{--tblr-text-opacity:1;color:rgba(var(--tblr-red-rgb),var(--tblr-text-opacity))!important}.text-red-fg{color:var(--tblr-red-fg)!important}.text-orange{--tblr-text-opacity:1;color:rgba(var(--tblr-orange-rgb),var(--tblr-text-opacity))!important}.text-orange-fg{color:var(--tblr-orange-fg)!important}.text-yellow{--tblr-text-opacity:1;color:rgba(var(--tblr-yellow-rgb),var(--tblr-text-opacity))!important}.text-yellow-fg{color:var(--tblr-yellow-fg)!important}.text-lime{--tblr-text-opacity:1;color:rgba(var(--tblr-lime-rgb),var(--tblr-text-opacity))!important}.text-lime-fg{color:var(--tblr-lime-fg)!important}.text-green{--tblr-text-opacity:1;color:rgba(var(--tblr-green-rgb),var(--tblr-text-opacity))!important}.text-green-fg{color:var(--tblr-green-fg)!important}.text-teal{--tblr-text-opacity:1;color:rgba(var(--tblr-teal-rgb),var(--tblr-text-opacity))!important}.text-teal-fg{color:var(--tblr-teal-fg)!important}.text-cyan{--tblr-text-opacity:1;color:rgba(var(--tblr-cyan-rgb),var(--tblr-text-opacity))!important}.text-cyan-fg{color:var(--tblr-cyan-fg)!important}.text-x{--tblr-text-opacity:1;color:rgba(var(--tblr-x-rgb),var(--tblr-text-opacity))!important}.text-x-fg{color:var(--tblr-x-fg)!important}.text-facebook{--tblr-text-opacity:1;color:rgba(var(--tblr-facebook-rgb),var(--tblr-text-opacity))!important}.text-facebook-fg{color:var(--tblr-facebook-fg)!important}.text-twitter{--tblr-text-opacity:1;color:rgba(var(--tblr-twitter-rgb),var(--tblr-text-opacity))!important}.text-twitter-fg{color:var(--tblr-twitter-fg)!important}.text-linkedin{--tblr-text-opacity:1;color:rgba(var(--tblr-linkedin-rgb),var(--tblr-text-opacity))!important}.text-linkedin-fg{color:var(--tblr-linkedin-fg)!important}.text-google{--tblr-text-opacity:1;color:rgba(var(--tblr-google-rgb),var(--tblr-text-opacity))!important}.text-google-fg{color:var(--tblr-google-fg)!important}.text-youtube{--tblr-text-opacity:1;color:rgba(var(--tblr-youtube-rgb),var(--tblr-text-opacity))!important}.text-youtube-fg{color:var(--tblr-youtube-fg)!important}.text-vimeo{--tblr-text-opacity:1;color:rgba(var(--tblr-vimeo-rgb),var(--tblr-text-opacity))!important}.text-vimeo-fg{color:var(--tblr-vimeo-fg)!important}.text-dribbble{--tblr-text-opacity:1;color:rgba(var(--tblr-dribbble-rgb),var(--tblr-text-opacity))!important}.text-dribbble-fg{color:var(--tblr-dribbble-fg)!important}.text-github{--tblr-text-opacity:1;color:rgba(var(--tblr-github-rgb),var(--tblr-text-opacity))!important}.text-github-fg{color:var(--tblr-github-fg)!important}.text-instagram{--tblr-text-opacity:1;color:rgba(var(--tblr-instagram-rgb),var(--tblr-text-opacity))!important}.text-instagram-fg{color:var(--tblr-instagram-fg)!important}.text-pinterest{--tblr-text-opacity:1;color:rgba(var(--tblr-pinterest-rgb),var(--tblr-text-opacity))!important}.text-pinterest-fg{color:var(--tblr-pinterest-fg)!important}.text-vk{--tblr-text-opacity:1;color:rgba(var(--tblr-vk-rgb),var(--tblr-text-opacity))!important}.text-vk-fg{color:var(--tblr-vk-fg)!important}.text-rss{--tblr-text-opacity:1;color:rgba(var(--tblr-rss-rgb),var(--tblr-text-opacity))!important}.text-rss-fg{color:var(--tblr-rss-fg)!important}.text-flickr{--tblr-text-opacity:1;color:rgba(var(--tblr-flickr-rgb),var(--tblr-text-opacity))!important}.text-flickr-fg{color:var(--tblr-flickr-fg)!important}.text-bitbucket{--tblr-text-opacity:1;color:rgba(var(--tblr-bitbucket-rgb),var(--tblr-text-opacity))!important}.text-bitbucket-fg{color:var(--tblr-bitbucket-fg)!important}.text-tabler{--tblr-text-opacity:1;color:rgba(var(--tblr-tabler-rgb),var(--tblr-text-opacity))!important}.text-tabler-fg{color:var(--tblr-tabler-fg)!important}.bg-gray-50{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-50-rgb),var(--tblr-bg-opacity))!important}.text-gray-50-fg{color:#f6f8fb!important}.bg-gray-100{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-100-rgb),var(--tblr-bg-opacity))!important}.text-gray-100-fg{color:#eef3f6!important}.bg-gray-200{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-200-rgb),var(--tblr-bg-opacity))!important}.text-gray-200-fg{color:#dce1e7!important}.bg-gray-300{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-300-rgb),var(--tblr-bg-opacity))!important}.text-gray-300-fg{color:#b8c4d4!important}.bg-gray-400{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-400-rgb),var(--tblr-bg-opacity))!important}.text-gray-400-fg{color:#8a97ab!important}.bg-gray-500{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-500-rgb),var(--tblr-bg-opacity))!important}.text-gray-500-fg{color:#6c7a91!important}.bg-gray-600{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-600-rgb),var(--tblr-bg-opacity))!important}.text-gray-600-fg{color:#49566c!important}.bg-gray-700{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-700-rgb),var(--tblr-bg-opacity))!important}.text-gray-700-fg{color:#3a4859!important}.bg-gray-800{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-800-rgb),var(--tblr-bg-opacity))!important}.text-gray-800-fg{color:#182433!important}.bg-gray-900{--tblr-bg-opacity:1;background-color:rgba(var(--tblr-gray-900-rgb),var(--tblr-bg-opacity))!important}.text-gray-900-fg{color:#040a11!important}.bg-surface{background-color:var(--tblr-bg-surface)!important}.bg-surface-secondary{background-color:var(--tblr-bg-surface-secondary)!important}.bg-surface-tertiary{background-color:var(--tblr-bg-surface-tertiary)!important}.scrollable{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.hover{overflow-y:hidden}.scrollable.hover>*{margin-top:-1px}.scrollable.hover:active,.scrollable.hover:focus,.scrollable.hover:hover{overflow:visible;overflow-y:auto}.touch .scrollable{overflow-y:auto!important}.scroll-x,.scroll-y{overflow:hidden;-webkit-overflow-scrolling:touch}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}.no-scroll{overflow:hidden}.w-0{width:0!important}.h-0{height:0!important}.w-1{width:.25rem!important}.h-1{height:.25rem!important}.w-2{width:.5rem!important}.h-2{height:.5rem!important}.w-3{width:1rem!important}.h-3{height:1rem!important}.w-4{width:1.5rem!important}.h-4{height:1.5rem!important}.w-5{width:2rem!important}.h-5{height:2rem!important}.w-6{width:2.5rem!important}.h-6{height:2.5rem!important}.w-auto{width:auto!important}.h-auto{height:auto!important}.w-px{width:1px!important}.h-px{height:1px!important}.w-full{width:100%!important}.h-full{height:100%!important}.opacity-0{opacity:calc(0 / 100)!important}.opacity-5{opacity:calc(5 / 100)!important}.opacity-10{opacity:calc(10 / 100)!important}.opacity-15{opacity:calc(15 / 100)!important}.opacity-20{opacity:calc(20 / 100)!important}.opacity-25{opacity:calc(25 / 100)!important}.opacity-30{opacity:calc(30 / 100)!important}.opacity-35{opacity:calc(35 / 100)!important}.opacity-40{opacity:calc(40 / 100)!important}.opacity-45{opacity:calc(45 / 100)!important}.opacity-50{opacity:calc(50 / 100)!important}.opacity-55{opacity:calc(55 / 100)!important}.opacity-60{opacity:calc(60 / 100)!important}.opacity-65{opacity:calc(65 / 100)!important}.opacity-70{opacity:calc(70 / 100)!important}.opacity-75{opacity:calc(75 / 100)!important}.opacity-80{opacity:calc(80 / 100)!important}.opacity-85{opacity:calc(85 / 100)!important}.opacity-90{opacity:calc(90 / 100)!important}.opacity-95{opacity:calc(95 / 100)!important}.opacity-100{opacity:calc(100 / 100)!important}.hover-shadow-sm:hover{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.hover-shadow:hover{box-shadow:rgba(var(--tblr-body-color-rgb),.04) 0 2px 4px 0!important}.hover-shadow-lg:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.hover-shadow-none:hover{box-shadow:none!important}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto} +/*# sourceMappingURL=tabler.min.css.map */ \ No newline at end of file diff --git a/app/static/css/theme.css b/app/static/css/theme.css new file mode 100644 index 0000000..0419b7e --- /dev/null +++ b/app/static/css/theme.css @@ -0,0 +1,165 @@ +/* Custom theme with unique color palette */ +:root { + /* Base Colors - Teal and Purple Theme */ + --primary-color: #3a86ff; + --secondary-color: #8338ec; + --accent-color: #ff006e; + --success-color: #06d6a0; + --info-color: #0dcaf0; + --warning-color: #ffbe0b; + --danger-color: #ef476f; + + /* Light Mode */ + --bg-color: #f8fafc; + --card-bg: #ffffff; + --text-color: #1a1d23; + --text-muted: #64748b; + --border-color: rgba(226, 232, 240, 0.8); + --hover-bg: rgba(226, 232, 240, 0.4); +} + +[data-bs-theme="dark"] { + /* Dark Mode */ + --bg-color: #0f172a; + --card-bg: #1e293b; + --text-color: #e2e8f0; + --text-muted: #94a3b8; + --border-color: rgba(51, 65, 85, 0.7); + --hover-bg: rgba(51, 65, 85, 0.4); +} + +/* Override Bootstrap classes */ +.btn-primary { + background-color: var(--primary-color); + border-color: var(--primary-color); +} + +.btn-primary:hover { + background-color: #2563eb; + border-color: #2563eb; +} + +.btn-secondary { + background-color: var(--secondary-color); + border-color: var(--secondary-color); +} + +.btn-outline-primary { + color: var(--primary-color); + border-color: var(--primary-color); +} + +.text-primary { + color: var(--primary-color) !important; +} + +.bg-primary { + background-color: var(--primary-color) !important; +} + +/* Card styling */ +.card { + border-radius: 10px; + overflow: hidden; + transition: box-shadow 0.2s ease; + border: 1px solid var(--border-color); + background-color: var(--card-bg); +} + +.card:hover { + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08); +} + +.card-header { + background-color: transparent; + border-bottom: 1px solid var(--border-color); + padding: 1rem 1.25rem; +} + +.card-title { + margin-bottom: 0; + color: var(--text-color); +} + +/* Table styling */ +.table { + --bs-table-hover-bg: var(--hover-bg); +} + +/* Custom scrollbar */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: rgba(100, 116, 139, 0.5); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(100, 116, 139, 0.7); +} + +/* Improved form controls */ +.form-control, +.form-select { + border-radius: 8px; + border: 1px solid var(--border-color); + padding: 0.5rem 0.75rem; + background-color: var(--card-bg); + color: var(--text-color); +} + +.form-control:focus, +.form-select:focus { + border-color: var(--primary-color); + box-shadow: 0 0 0 0.2rem rgba(58, 134, 255, 0.25); +} + +/* Sidebar enhancements */ +.sidebar { + background: linear-gradient(to bottom, #1a1d23, #0f172a); + box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); +} + +[data-bs-theme="light"] .sidebar { + background: linear-gradient(to bottom, #f1f5f9, #e2e8f0); +} + +.sidebar-item:hover { + background-color: rgba(255, 255, 255, 0.1); +} + +[data-bs-theme="light"] .sidebar-item:hover { + background-color: rgba(0, 0, 0, 0.05); +} + +/* Animation for page transitions */ +.page-transition { + animation: fadeIn 0.3s ease-in-out; +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px); + } + + to { + opacity: 1; + transform: translateY(0); + } +} + +/* Pill badges */ +.badge { + border-radius: 50rem; + padding: 0.35em 0.65em; + font-weight: 500; + font-size: 0.75em; +} \ No newline at end of file diff --git a/app/static/img/favicon.png b/app/static/img/favicon.png new file mode 100644 index 0000000..82339b3 Binary files /dev/null and b/app/static/img/favicon.png differ diff --git a/app/static/js/app.js b/app/static/js/app.js index aca5674..eb0322e 100644 --- a/app/static/js/app.js +++ b/app/static/js/app.js @@ -1,3 +1,7 @@ +/** + * DITTO Application JavaScript + * Modern ES6+ syntax with proper error handling + */ document.addEventListener('DOMContentLoaded', () => { console.log('App script loaded.'); @@ -76,8 +80,121 @@ document.addEventListener('DOMContentLoaded', () => { // Initialize notifications initNotifications(); }); + + // Initialize Bootstrap components + initBootstrapComponents(); + + // Setup sidebar toggle functionality + setupSidebar(); + + // Add form validation + setupFormValidation(); }); +/** + * Initialize Bootstrap components + */ +function initBootstrapComponents() { + // Initialize all tooltips + const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]'); + tooltipTriggerList.forEach(el => { + try { + new bootstrap.Tooltip(el); + } catch (e) { + console.warn('Error initializing tooltip:', e); + } + }); + + // Initialize all popovers + const popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]'); + popoverTriggerList.forEach(el => { + try { + new bootstrap.Popover(el); + } catch (e) { + console.warn('Error initializing popover:', e); + } + }); +} + +/** + * Setup sidebar toggle functionality + */ +function setupSidebar() { + const sidebarToggler = document.querySelector('.sidebar-toggler'); + const sidebar = document.querySelector('.sidebar'); + + if (sidebarToggler && sidebar) { + sidebarToggler.addEventListener('click', () => { + sidebar.classList.toggle('show'); + }); + + // Close sidebar when clicking outside on mobile + document.addEventListener('click', (event) => { + const isClickInside = sidebar.contains(event.target) || + sidebarToggler.contains(event.target); + + if (!isClickInside && sidebar.classList.contains('show') && window.innerWidth < 992) { + sidebar.classList.remove('show'); + } + }); + } +} + +/** + * Setup form validation + */ +function setupFormValidation() { + // Add custom validation for forms + const forms = document.querySelectorAll('.needs-validation'); + + forms.forEach(form => { + form.addEventListener('submit', event => { + if (!form.checkValidity()) { + event.preventDefault(); + event.stopPropagation(); + } + + form.classList.add('was-validated'); + }, false); + }); +} + +/** + * Safe query selector with error handling + * @param {string} selector - CSS selector + * @param {Element} parent - Parent element (optional) + * @returns {Element|null} - The selected element or null + */ +function $(selector, parent = document) { + try { + return parent.querySelector(selector); + } catch (e) { + console.warn(`Error selecting "${selector}":`, e); + return null; + } +} + +/** + * Format date for display + * @param {string|Date} date - Date to format + * @returns {string} - Formatted date string + */ +function formatDate(date) { + try { + const d = new Date(date); + return d.toLocaleDateString(undefined, { + year: 'numeric', + month: 'short', + day: 'numeric', + hour: '2-digit', + minute: '2-digit' + }); + } catch (e) { + console.warn('Error formatting date:', e); + return String(date); + } +} + function initTiptapEditor(element) { // Load required Tiptap scripts const editorContainer = document.getElementById('editor-container'); diff --git a/app/static/libs/tabler-icons/tabler-icons.min.css b/app/static/libs/tabler-icons/tabler-icons.min.css new file mode 100644 index 0000000..050e817 --- /dev/null +++ b/app/static/libs/tabler-icons/tabler-icons.min.css @@ -0,0 +1,4 @@ +/*! + * Tabler Icons 1.119.0 by tabler - https://tabler.io + * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE + */@font-face{font-family:tabler-icons;font-style:normal;font-weight:400;src:url(fonts/tabler-icons.eot);src:url(fonts/tabler-icons.eot?#iefix) format("embedded-opentype"),url(fonts/tabler-icons.woff2) format("woff2"),url(fonts/tabler-icons.woff) format("woff"),url(fonts/tabler-icons.ttf) format("truetype"),url(fonts/tabler-icons.svg#tabler-icons) format("svg")}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:tabler-icons;src:url(fonts/tabler-icons.svg#tabler-icons) format("svg")}}.ti{font-family:tabler-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-123:before{content:"\f554"}.ti-24-hours:before{content:"\f5e7"}.ti-2fa:before{content:"\eca0"}.ti-360:before{content:"\f62f"}.ti-360-view:before{content:"\f566"}.ti-3d-cube-sphere:before{content:"\ecd7"}.ti-3d-cube-sphere-off:before{content:"\f3b5"}.ti-3d-rotate:before{content:"\f020"}.ti-a-b:before{content:"\ec36"}.ti-a-b-2:before{content:"\f25f"}.ti-a-b-off:before{content:"\f0a6"}.ti-abacus:before{content:"\f05c"}.ti-abacus-off:before{content:"\f3b6"}.ti-abc:before{content:"\f567"}.ti-access-point:before{content:"\ed1b"}.ti-access-point-off:before{content:"\ed1a"}.ti-accessible:before{content:"\eba9"}.ti-accessible-off:before{content:"\f0a7"}.ti-activity:before{content:"\ed23"}.ti-activity-heartbeat:before{content:"\f0db"}.ti-ad:before{content:"\ea02"}.ti-ad-2:before{content:"\ef1f"}.ti-ad-off:before{content:"\f3b7"}.ti-address-book:before{content:"\f021"}.ti-address-book-off:before{content:"\f3b8"}.ti-adjustments:before{content:"\ea03"}.ti-adjustments-alt:before{content:"\ec37"}.ti-adjustments-horizontal:before{content:"\ec38"}.ti-adjustments-off:before{content:"\f0a8"}.ti-aerial-lift:before{content:"\edfe"}.ti-affiliate:before{content:"\edff"}.ti-air-balloon:before{content:"\f4a6"}.ti-air-conditioning:before{content:"\f3a2"}.ti-air-conditioning-disabled:before{content:"\f542"}.ti-alarm:before{content:"\ea04"}.ti-alarm-minus:before{content:"\f630"}.ti-alarm-off:before{content:"\f0a9"}.ti-alarm-plus:before{content:"\f631"}.ti-alarm-snooze:before{content:"\f632"}.ti-album:before{content:"\f022"}.ti-album-off:before{content:"\f3b9"}.ti-alert-circle:before{content:"\ea05"}.ti-alert-octagon:before{content:"\ecc6"}.ti-alert-triangle:before{content:"\ea06"}.ti-alien:before{content:"\ebde"}.ti-align-box-bottom-center:before{content:"\f530"}.ti-align-box-bottom-left:before{content:"\f531"}.ti-align-box-bottom-right:before{content:"\f532"}.ti-align-box-left-bottom:before{content:"\f533"}.ti-align-box-left-middle:before{content:"\f534"}.ti-align-box-left-top:before{content:"\f535"}.ti-align-box-right-bottom:before{content:"\f536"}.ti-align-box-right-middle:before{content:"\f537"}.ti-align-box-right-top:before{content:"\f538"}.ti-align-box-top-center:before{content:"\f539"}.ti-align-box-top-left:before{content:"\f53a"}.ti-align-box-top-right:before{content:"\f53b"}.ti-align-center:before{content:"\ea07"}.ti-align-justified:before{content:"\ea08"}.ti-align-left:before{content:"\ea09"}.ti-align-right:before{content:"\ea0a"}.ti-alpha:before{content:"\f543"}.ti-alphabet-cyrillic:before{content:"\f1df"}.ti-alphabet-greek:before{content:"\f1e0"}.ti-alphabet-latin:before{content:"\f1e1"}.ti-ambulance:before{content:"\ebf5"}.ti-ampersand:before{content:"\f229"}.ti-analyze:before{content:"\f3a3"}.ti-analyze-off:before{content:"\f3ba"}.ti-anchor:before{content:"\eb76"}.ti-anchor-off:before{content:"\f0f7"}.ti-angle:before{content:"\ef20"}.ti-ankh:before{content:"\f1cd"}.ti-antenna:before{content:"\f094"}.ti-antenna-bars-1:before{content:"\ecc7"}.ti-antenna-bars-2:before{content:"\ecc8"}.ti-antenna-bars-3:before{content:"\ecc9"}.ti-antenna-bars-4:before{content:"\ecca"}.ti-antenna-bars-5:before{content:"\eccb"}.ti-antenna-bars-off:before{content:"\f0aa"}.ti-antenna-off:before{content:"\f3bb"}.ti-aperture:before{content:"\eb58"}.ti-aperture-off:before{content:"\f3bc"}.ti-api:before{content:"\effd"}.ti-api-app:before{content:"\effc"}.ti-api-app-off:before{content:"\f0ab"}.ti-api-off:before{content:"\f0f8"}.ti-app-window:before{content:"\efe6"}.ti-apple:before{content:"\ef21"}.ti-apps:before{content:"\ebb6"}.ti-apps-off:before{content:"\f0ac"}.ti-archive:before{content:"\ea0b"}.ti-archive-off:before{content:"\f0ad"}.ti-armchair:before{content:"\ef9e"}.ti-armchair-2:before{content:"\efe7"}.ti-armchair-2-off:before{content:"\f3bd"}.ti-armchair-off:before{content:"\f3be"}.ti-arrow-autofit-content:before{content:"\ef31"}.ti-arrow-autofit-down:before{content:"\ef32"}.ti-arrow-autofit-height:before{content:"\ef33"}.ti-arrow-autofit-left:before{content:"\ef34"}.ti-arrow-autofit-right:before{content:"\ef35"}.ti-arrow-autofit-up:before{content:"\ef36"}.ti-arrow-autofit-width:before{content:"\ef37"}.ti-arrow-back:before{content:"\ea0c"}.ti-arrow-back-up:before{content:"\eb77"}.ti-arrow-badge-down:before{content:"\f60b"}.ti-arrow-badge-left:before{content:"\f60c"}.ti-arrow-badge-right:before{content:"\f60d"}.ti-arrow-badge-up:before{content:"\f60e"}.ti-arrow-bar-down:before{content:"\ea0d"}.ti-arrow-bar-left:before{content:"\ea0e"}.ti-arrow-bar-right:before{content:"\ea0f"}.ti-arrow-bar-to-down:before{content:"\ec88"}.ti-arrow-bar-to-left:before{content:"\ec89"}.ti-arrow-bar-to-right:before{content:"\ec8a"}.ti-arrow-bar-to-up:before{content:"\ec8b"}.ti-arrow-bar-up:before{content:"\ea10"}.ti-arrow-bear-left:before{content:"\f045"}.ti-arrow-bear-left-2:before{content:"\f044"}.ti-arrow-bear-right:before{content:"\f047"}.ti-arrow-bear-right-2:before{content:"\f046"}.ti-arrow-big-down:before{content:"\edda"}.ti-arrow-big-down-line:before{content:"\efe8"}.ti-arrow-big-down-lines:before{content:"\efe9"}.ti-arrow-big-left:before{content:"\eddb"}.ti-arrow-big-left-line:before{content:"\efea"}.ti-arrow-big-left-lines:before{content:"\efeb"}.ti-arrow-big-right:before{content:"\eddc"}.ti-arrow-big-right-line:before{content:"\efec"}.ti-arrow-big-right-lines:before{content:"\efed"}.ti-arrow-big-top:before{content:"\eddd"}.ti-arrow-big-up-line:before{content:"\efee"}.ti-arrow-big-up-lines:before{content:"\efef"}.ti-arrow-bounce:before{content:"\f3a4"}.ti-arrow-curve-left:before{content:"\f048"}.ti-arrow-curve-right:before{content:"\f049"}.ti-arrow-down:before{content:"\ea16"}.ti-arrow-down-bar:before{content:"\ed98"}.ti-arrow-down-circle:before{content:"\ea11"}.ti-arrow-down-left:before{content:"\ea13"}.ti-arrow-down-left-circle:before{content:"\ea12"}.ti-arrow-down-rhombus:before{content:"\f61d"}.ti-arrow-down-right:before{content:"\ea15"}.ti-arrow-down-right-circle:before{content:"\ea14"}.ti-arrow-down-square:before{content:"\ed9a"}.ti-arrow-down-tail:before{content:"\ed9b"}.ti-arrow-fork:before{content:"\f04a"}.ti-arrow-forward:before{content:"\ea17"}.ti-arrow-forward-up:before{content:"\eb78"}.ti-arrow-guide:before{content:"\f22a"}.ti-arrow-iteration:before{content:"\f578"}.ti-arrow-left:before{content:"\ea19"}.ti-arrow-left-bar:before{content:"\ed9c"}.ti-arrow-left-circle:before{content:"\ea18"}.ti-arrow-left-rhombus:before{content:"\f61e"}.ti-arrow-left-right:before{content:"\f04b"}.ti-arrow-left-square:before{content:"\ed9d"}.ti-arrow-left-tail:before{content:"\ed9e"}.ti-arrow-loop-left:before{content:"\ed9f"}.ti-arrow-loop-left-2:before{content:"\f04c"}.ti-arrow-loop-right:before{content:"\eda0"}.ti-arrow-loop-right-2:before{content:"\f04d"}.ti-arrow-merge:before{content:"\f04e"}.ti-arrow-merge-both:before{content:"\f23b"}.ti-arrow-merge-left:before{content:"\f23c"}.ti-arrow-merge-right:before{content:"\f23d"}.ti-arrow-move-down:before{content:"\f2ba"}.ti-arrow-move-left:before{content:"\f2bb"}.ti-arrow-move-right:before{content:"\f2bc"}.ti-arrow-move-up:before{content:"\f2bd"}.ti-arrow-narrow-down:before{content:"\ea1a"}.ti-arrow-narrow-left:before{content:"\ea1b"}.ti-arrow-narrow-right:before{content:"\ea1c"}.ti-arrow-narrow-up:before{content:"\ea1d"}.ti-arrow-ramp-left:before{content:"\ed3c"}.ti-arrow-ramp-left-2:before{content:"\f04f"}.ti-arrow-ramp-left-3:before{content:"\f050"}.ti-arrow-ramp-right:before{content:"\ed3d"}.ti-arrow-ramp-right-2:before{content:"\f051"}.ti-arrow-ramp-right-3:before{content:"\f052"}.ti-arrow-right:before{content:"\ea1f"}.ti-arrow-right-bar:before{content:"\eda1"}.ti-arrow-right-circle:before{content:"\ea1e"}.ti-arrow-right-rhombus:before{content:"\f61f"}.ti-arrow-right-square:before{content:"\eda2"}.ti-arrow-right-tail:before{content:"\eda3"}.ti-arrow-rotary-first-left:before{content:"\f053"}.ti-arrow-rotary-first-right:before{content:"\f054"}.ti-arrow-rotary-last-left:before{content:"\f055"}.ti-arrow-rotary-last-right:before{content:"\f056"}.ti-arrow-rotary-left:before{content:"\f057"}.ti-arrow-rotary-right:before{content:"\f058"}.ti-arrow-rotary-straight:before{content:"\f059"}.ti-arrow-roundabout-left:before{content:"\f22b"}.ti-arrow-roundabout-right:before{content:"\f22c"}.ti-arrow-sharp-turn-left:before{content:"\f05a"}.ti-arrow-sharp-turn-right:before{content:"\f05b"}.ti-arrow-up:before{content:"\ea25"}.ti-arrow-up-bar:before{content:"\eda4"}.ti-arrow-up-circle:before{content:"\ea20"}.ti-arrow-up-left:before{content:"\ea22"}.ti-arrow-up-left-circle:before{content:"\ea21"}.ti-arrow-up-rhombus:before{content:"\f620"}.ti-arrow-up-right:before{content:"\ea24"}.ti-arrow-up-right-circle:before{content:"\ea23"}.ti-arrow-up-square:before{content:"\eda6"}.ti-arrow-up-tail:before{content:"\eda7"}.ti-arrow-wave-left-down:before{content:"\eda8"}.ti-arrow-wave-left-up:before{content:"\eda9"}.ti-arrow-wave-right-down:before{content:"\edaa"}.ti-arrow-wave-right-up:before{content:"\edab"}.ti-arrow-zig-zag:before{content:"\f4a7"}.ti-arrows-cross:before{content:"\effe"}.ti-arrows-diagonal:before{content:"\ea27"}.ti-arrows-diagonal-2:before{content:"\ea26"}.ti-arrows-diagonal-minimize:before{content:"\ef39"}.ti-arrows-diagonal-minimize-2:before{content:"\ef38"}.ti-arrows-diff:before{content:"\f296"}.ti-arrows-double-ne-sw:before{content:"\edde"}.ti-arrows-double-nw-se:before{content:"\eddf"}.ti-arrows-double-se-nw:before{content:"\ede0"}.ti-arrows-double-sw-ne:before{content:"\ede1"}.ti-arrows-down:before{content:"\edad"}.ti-arrows-down-up:before{content:"\edac"}.ti-arrows-exchange:before{content:"\f1f4"}.ti-arrows-exchange-2:before{content:"\f1f3"}.ti-arrows-horizontal:before{content:"\eb59"}.ti-arrows-join:before{content:"\edaf"}.ti-arrows-join-2:before{content:"\edae"}.ti-arrows-left:before{content:"\edb1"}.ti-arrows-left-down:before{content:"\ee00"}.ti-arrows-left-right:before{content:"\edb0"}.ti-arrows-maximize:before{content:"\ea28"}.ti-arrows-minimize:before{content:"\ea29"}.ti-arrows-move:before{content:"\f22f"}.ti-arrows-move-horizontal:before{content:"\f22d"}.ti-arrows-move-vertical:before{content:"\f22e"}.ti-arrows-random:before{content:"\f095"}.ti-arrows-right:before{content:"\edb3"}.ti-arrows-right-down:before{content:"\ee01"}.ti-arrows-right-left:before{content:"\edb2"}.ti-arrows-shuffle:before{content:"\f000"}.ti-arrows-shuffle-2:before{content:"\efff"}.ti-arrows-sort:before{content:"\eb5a"}.ti-arrows-split:before{content:"\edb5"}.ti-arrows-split-2:before{content:"\edb4"}.ti-arrows-transfer-down:before{content:"\f2cc"}.ti-arrows-transfer-up:before{content:"\f2cd"}.ti-arrows-up:before{content:"\edb7"}.ti-arrows-up-down:before{content:"\edb6"}.ti-arrows-up-left:before{content:"\ee02"}.ti-arrows-up-right:before{content:"\ee03"}.ti-arrows-vertical:before{content:"\eb5b"}.ti-artboard:before{content:"\ea2a"}.ti-artboard-off:before{content:"\f0ae"}.ti-article:before{content:"\f1e2"}.ti-article-off:before{content:"\f3bf"}.ti-aspect-ratio:before{content:"\ed30"}.ti-aspect-ratio-off:before{content:"\f0af"}.ti-assembly:before{content:"\f24d"}.ti-assembly-off:before{content:"\f3c0"}.ti-asset:before{content:"\f1ce"}.ti-asterisk:before{content:"\efd5"}.ti-asterisk-simple:before{content:"\efd4"}.ti-at:before{content:"\ea2b"}.ti-at-off:before{content:"\f0b0"}.ti-atom:before{content:"\eb79"}.ti-atom-2:before{content:"\ebdf"}.ti-atom-off:before{content:"\f0f9"}.ti-augmented-reality:before{content:"\f023"}.ti-augmented-reality-2:before{content:"\f37e"}.ti-augmented-reality-off:before{content:"\f3c1"}.ti-award:before{content:"\ea2c"}.ti-award-off:before{content:"\f0fa"}.ti-axe:before{content:"\ef9f"}.ti-axis-x:before{content:"\ef45"}.ti-axis-y:before{content:"\ef46"}.ti-baby-bottle:before{content:"\f5d2"}.ti-baby-carriage:before{content:"\f05d"}.ti-backhoe:before{content:"\ed86"}.ti-backpack:before{content:"\ef47"}.ti-backpack-off:before{content:"\f3c2"}.ti-backspace:before{content:"\ea2d"}.ti-badge:before{content:"\efc2"}.ti-badge-3d:before{content:"\f555"}.ti-badge-4k:before{content:"\f556"}.ti-badge-8k:before{content:"\f557"}.ti-badge-ad:before{content:"\f558"}.ti-badge-ar:before{content:"\f559"}.ti-badge-cc:before{content:"\f55a"}.ti-badge-hd:before{content:"\f55b"}.ti-badge-off:before{content:"\f0fb"}.ti-badge-sd:before{content:"\f55c"}.ti-badge-tm:before{content:"\f55d"}.ti-badge-vo:before{content:"\f55e"}.ti-badge-vr:before{content:"\f55f"}.ti-badge-wc:before{content:"\f560"}.ti-badges:before{content:"\efc3"}.ti-badges-off:before{content:"\f0fc"}.ti-baguette:before{content:"\f3a5"}.ti-ball-american-football:before{content:"\ee04"}.ti-ball-american-football-off:before{content:"\f3c3"}.ti-ball-baseball:before{content:"\efa0"}.ti-ball-basketball:before{content:"\ec28"}.ti-ball-bowling:before{content:"\ec29"}.ti-ball-football:before{content:"\ee06"}.ti-ball-football-off:before{content:"\ee05"}.ti-ball-tennis:before{content:"\ec2a"}.ti-ball-volleyball:before{content:"\ec2b"}.ti-ballon:before{content:"\ef3a"}.ti-ballon-off:before{content:"\f0fd"}.ti-ballpen:before{content:"\f06e"}.ti-ballpen-off:before{content:"\f0b1"}.ti-ban:before{content:"\ea2e"}.ti-bandage:before{content:"\eb7a"}.ti-bandage-off:before{content:"\f3c4"}.ti-barbell:before{content:"\eff0"}.ti-barbell-off:before{content:"\f0b2"}.ti-barcode:before{content:"\ebc6"}.ti-barcode-off:before{content:"\f0b3"}.ti-barrel:before{content:"\f0b4"}.ti-barrel-off:before{content:"\f0fe"}.ti-barrier-block:before{content:"\f00e"}.ti-barrier-block-off:before{content:"\f0b5"}.ti-baseline:before{content:"\f024"}.ti-basket:before{content:"\ebe1"}.ti-basket-off:before{content:"\f0b6"}.ti-bat:before{content:"\f284"}.ti-bath:before{content:"\ef48"}.ti-bath-off:before{content:"\f0ff"}.ti-battery:before{content:"\ea34"}.ti-battery-1:before{content:"\ea2f"}.ti-battery-2:before{content:"\ea30"}.ti-battery-3:before{content:"\ea31"}.ti-battery-4:before{content:"\ea32"}.ti-battery-automotive:before{content:"\ee07"}.ti-battery-charging:before{content:"\ea33"}.ti-battery-charging-2:before{content:"\ef3b"}.ti-battery-eco:before{content:"\ef3c"}.ti-battery-off:before{content:"\ed1c"}.ti-beach:before{content:"\ef3d"}.ti-beach-off:before{content:"\f0b7"}.ti-bed:before{content:"\eb5c"}.ti-bed-off:before{content:"\f100"}.ti-beer:before{content:"\efa1"}.ti-beer-off:before{content:"\f101"}.ti-bell:before{content:"\ea35"}.ti-bell-minus:before{content:"\ede2"}.ti-bell-off:before{content:"\ece9"}.ti-bell-plus:before{content:"\ede3"}.ti-bell-ringing:before{content:"\ed07"}.ti-bell-ringing-2:before{content:"\ede4"}.ti-bell-school:before{content:"\f05e"}.ti-bell-x:before{content:"\ede5"}.ti-bell-z:before{content:"\eff1"}.ti-beta:before{content:"\f544"}.ti-bible:before{content:"\efc4"}.ti-bike:before{content:"\ea36"}.ti-bike-off:before{content:"\f0b8"}.ti-binary:before{content:"\ee08"}.ti-binary-off:before{content:"\f3c5"}.ti-binary-tree:before{content:"\f5d4"}.ti-binary-tree-2:before{content:"\f5d3"}.ti-biohazard:before{content:"\ecb8"}.ti-biohazard-off:before{content:"\f0b9"}.ti-blade:before{content:"\f4bd"}.ti-bleach:before{content:"\f2f3"}.ti-bleach-chlorine:before{content:"\f2f0"}.ti-bleach-no-chlorine:before{content:"\f2f1"}.ti-bleach-off:before{content:"\f2f2"}.ti-blockquote:before{content:"\ee09"}.ti-bluetooth:before{content:"\ea37"}.ti-bluetooth-connected:before{content:"\ecea"}.ti-bluetooth-off:before{content:"\eceb"}.ti-bluetooth-x:before{content:"\f081"}.ti-blur:before{content:"\ef8c"}.ti-blur-off:before{content:"\f3c6"}.ti-bmp:before{content:"\f3a6"}.ti-bold:before{content:"\eb7b"}.ti-bold-off:before{content:"\f0ba"}.ti-bolt:before{content:"\ea38"}.ti-bolt-off:before{content:"\ecec"}.ti-bomb:before{content:"\f59c"}.ti-bone:before{content:"\edb8"}.ti-bone-off:before{content:"\f0bb"}.ti-bong:before{content:"\f3a7"}.ti-bong-off:before{content:"\f3c7"}.ti-book:before{content:"\ea39"}.ti-book-2:before{content:"\efc5"}.ti-book-download:before{content:"\f070"}.ti-book-off:before{content:"\f0bc"}.ti-book-upload:before{content:"\f071"}.ti-bookmark:before{content:"\ea3a"}.ti-bookmark-off:before{content:"\eced"}.ti-bookmarks:before{content:"\ed08"}.ti-bookmarks-off:before{content:"\f0bd"}.ti-books:before{content:"\eff2"}.ti-books-off:before{content:"\f0be"}.ti-border-all:before{content:"\ea3b"}.ti-border-bottom:before{content:"\ea3c"}.ti-border-horizontal:before{content:"\ea3d"}.ti-border-inner:before{content:"\ea3e"}.ti-border-left:before{content:"\ea3f"}.ti-border-none:before{content:"\ea40"}.ti-border-outer:before{content:"\ea41"}.ti-border-radius:before{content:"\eb7c"}.ti-border-right:before{content:"\ea42"}.ti-border-style:before{content:"\ee0a"}.ti-border-style-2:before{content:"\ef22"}.ti-border-top:before{content:"\ea43"}.ti-border-vertical:before{content:"\ea44"}.ti-bottle:before{content:"\ef0b"}.ti-bottle-off:before{content:"\f3c8"}.ti-bounce-left:before{content:"\f59d"}.ti-bounce-right:before{content:"\f59e"}.ti-bow:before{content:"\f096"}.ti-bowl:before{content:"\f4fa"}.ti-box:before{content:"\ea45"}.ti-box-align-bottom:before{content:"\f2a8"}.ti-box-align-bottom-left:before{content:"\f2ce"}.ti-box-align-bottom-right:before{content:"\f2cf"}.ti-box-align-left:before{content:"\f2a9"}.ti-box-align-right:before{content:"\f2aa"}.ti-box-align-top:before{content:"\f2ab"}.ti-box-align-top-left:before{content:"\f2d0"}.ti-box-align-top-right:before{content:"\f2d1"}.ti-box-margin:before{content:"\ee0b"}.ti-box-model:before{content:"\ee0c"}.ti-box-model-2:before{content:"\ef23"}.ti-box-model-2-off:before{content:"\f3c9"}.ti-box-model-off:before{content:"\f3ca"}.ti-box-multiple:before{content:"\ee17"}.ti-box-multiple-0:before{content:"\ee0d"}.ti-box-multiple-1:before{content:"\ee0e"}.ti-box-multiple-2:before{content:"\ee0f"}.ti-box-multiple-3:before{content:"\ee10"}.ti-box-multiple-4:before{content:"\ee11"}.ti-box-multiple-5:before{content:"\ee12"}.ti-box-multiple-6:before{content:"\ee13"}.ti-box-multiple-7:before{content:"\ee14"}.ti-box-multiple-8:before{content:"\ee15"}.ti-box-multiple-9:before{content:"\ee16"}.ti-box-off:before{content:"\f102"}.ti-box-padding:before{content:"\ee18"}.ti-box-seam:before{content:"\f561"}.ti-braces:before{content:"\ebcc"}.ti-braces-off:before{content:"\f0bf"}.ti-brackets:before{content:"\ebcd"}.ti-brackets-contain:before{content:"\f1e5"}.ti-brackets-contain-end:before{content:"\f1e3"}.ti-brackets-contain-start:before{content:"\f1e4"}.ti-brackets-off:before{content:"\f0c0"}.ti-braile:before{content:"\f545"}.ti-brain:before{content:"\f59f"}.ti-brand-4chan:before{content:"\f494"}.ti-brand-abstract:before{content:"\f495"}.ti-brand-adobe:before{content:"\f0dc"}.ti-brand-adonis-js:before{content:"\f496"}.ti-brand-airbnb:before{content:"\ed68"}.ti-brand-airtable:before{content:"\ef6a"}.ti-brand-algolia:before{content:"\f390"}.ti-brand-alpine-js:before{content:"\f324"}.ti-brand-amazon:before{content:"\f230"}.ti-brand-amd:before{content:"\f653"}.ti-brand-amigo:before{content:"\f5f9"}.ti-brand-amongus:before{content:"\f205"}.ti-brand-android:before{content:"\ec16"}.ti-brand-angular:before{content:"\ef6b"}.ti-brand-ao3:before{content:"\f5e8"}.ti-brand-appgallery:before{content:"\f231"}.ti-brand-apple:before{content:"\ec17"}.ti-brand-apple-arcade:before{content:"\ed69"}.ti-brand-apple-podcast:before{content:"\f1e6"}.ti-brand-appstore:before{content:"\ed24"}.ti-brand-asana:before{content:"\edc5"}.ti-brand-backbone:before{content:"\f325"}.ti-brand-badoo:before{content:"\f206"}.ti-brand-baidu:before{content:"\f5e9"}.ti-brand-bandcamp:before{content:"\f207"}.ti-brand-bandlab:before{content:"\f5fa"}.ti-brand-beats:before{content:"\f208"}.ti-brand-behance:before{content:"\ec6e"}.ti-brand-binance:before{content:"\f5a0"}.ti-brand-bing:before{content:"\edc6"}.ti-brand-bitbucket:before{content:"\edc7"}.ti-brand-blackbery:before{content:"\f568"}.ti-brand-blender:before{content:"\f326"}.ti-brand-blogger:before{content:"\f35a"}.ti-brand-booking:before{content:"\edc8"}.ti-brand-bootstrap:before{content:"\ef3e"}.ti-brand-bulma:before{content:"\f327"}.ti-brand-bumble:before{content:"\f5fb"}.ti-brand-bunpo:before{content:"\f4cf"}.ti-brand-campaignmonitor:before{content:"\f328"}.ti-brand-carbon:before{content:"\f348"}.ti-brand-cashapp:before{content:"\f391"}.ti-brand-chrome:before{content:"\ec18"}.ti-brand-citymapper:before{content:"\f5fc"}.ti-brand-codecov:before{content:"\f329"}.ti-brand-codepen:before{content:"\ec6f"}.ti-brand-codesandbox:before{content:"\ed6a"}.ti-brand-cohost:before{content:"\f5d5"}.ti-brand-coinbase:before{content:"\f209"}.ti-brand-comedy-central:before{content:"\f217"}.ti-brand-coreos:before{content:"\f5fd"}.ti-brand-couchdb:before{content:"\f60f"}.ti-brand-couchsurfing:before{content:"\f392"}.ti-brand-cpp:before{content:"\f5fe"}.ti-brand-css3:before{content:"\ed6b"}.ti-brand-ctemplar:before{content:"\f4d0"}.ti-brand-cucumber:before{content:"\ef6c"}.ti-brand-cupra:before{content:"\f4d1"}.ti-brand-cypress:before{content:"\f333"}.ti-brand-d3:before{content:"\f24e"}.ti-brand-days-counter:before{content:"\f4d2"}.ti-brand-dcos:before{content:"\f32a"}.ti-brand-debian:before{content:"\ef57"}.ti-brand-deliveroo:before{content:"\f4d3"}.ti-brand-deno:before{content:"\f24f"}.ti-brand-denodo:before{content:"\f610"}.ti-brand-deviantart:before{content:"\ecfb"}.ti-brand-dingtalk:before{content:"\f5ea"}.ti-brand-discord:before{content:"\ece3"}.ti-brand-disney:before{content:"\f20a"}.ti-brand-disqus:before{content:"\edc9"}.ti-brand-django:before{content:"\f349"}.ti-brand-docker:before{content:"\edca"}.ti-brand-doctrine:before{content:"\ef6d"}.ti-brand-dolby-digital:before{content:"\f4d4"}.ti-brand-douban:before{content:"\f5ff"}.ti-brand-dribbble:before{content:"\ec19"}.ti-brand-drops:before{content:"\f4d5"}.ti-brand-drupal:before{content:"\f393"}.ti-brand-edge:before{content:"\ecfc"}.ti-brand-elastic:before{content:"\f611"}.ti-brand-ember:before{content:"\f497"}.ti-brand-envato:before{content:"\f394"}.ti-brand-etsy:before{content:"\f654"}.ti-brand-evernote:before{content:"\f600"}.ti-brand-facebook:before{content:"\ec1a"}.ti-brand-figma:before{content:"\ec93"}.ti-brand-finder:before{content:"\f218"}.ti-brand-firebase:before{content:"\ef6e"}.ti-brand-firefox:before{content:"\ecfd"}.ti-brand-flickr:before{content:"\ecfe"}.ti-brand-flightradar24:before{content:"\f4d6"}.ti-brand-flipboard:before{content:"\f20b"}.ti-brand-flutter:before{content:"\f395"}.ti-brand-fortnite:before{content:"\f260"}.ti-brand-foursquare:before{content:"\ecff"}.ti-brand-framer:before{content:"\ec1b"}.ti-brand-funimation:before{content:"\f655"}.ti-brand-gatsby:before{content:"\f396"}.ti-brand-git:before{content:"\ef6f"}.ti-brand-github:before{content:"\ec1c"}.ti-brand-github-copilot:before{content:"\f4a8"}.ti-brand-gitlab:before{content:"\ec1d"}.ti-brand-gmail:before{content:"\efa2"}.ti-brand-google:before{content:"\ec1f"}.ti-brand-google-analytics:before{content:"\edcb"}.ti-brand-google-big-query:before{content:"\f612"}.ti-brand-google-drive:before{content:"\ec1e"}.ti-brand-google-fit:before{content:"\f297"}.ti-brand-google-home:before{content:"\f601"}.ti-brand-google-one:before{content:"\f232"}.ti-brand-google-photos:before{content:"\f20c"}.ti-brand-google-play:before{content:"\ed25"}.ti-brand-google-podcasts:before{content:"\f656"}.ti-brand-grammarly:before{content:"\f32b"}.ti-brand-graphql:before{content:"\f32c"}.ti-brand-gravatar:before{content:"\edcc"}.ti-brand-grindr:before{content:"\f20d"}.ti-brand-guardian:before{content:"\f4fb"}.ti-brand-gumroad:before{content:"\f5d6"}.ti-brand-hbo:before{content:"\f657"}.ti-brand-headlessui:before{content:"\f32d"}.ti-brand-hipchat:before{content:"\edcd"}.ti-brand-html5:before{content:"\ed6c"}.ti-brand-inertia:before{content:"\f34a"}.ti-brand-instagram:before{content:"\ec20"}.ti-brand-intercom:before{content:"\f1cf"}.ti-brand-javascript:before{content:"\ef0c"}.ti-brand-kickstarter:before{content:"\edce"}.ti-brand-kotlin:before{content:"\ed6d"}.ti-brand-laravel:before{content:"\f34b"}.ti-brand-lastfm:before{content:"\f001"}.ti-brand-linkedin:before{content:"\ec8c"}.ti-brand-linktree:before{content:"\f1e7"}.ti-brand-linqpad:before{content:"\f562"}.ti-brand-loom:before{content:"\ef70"}.ti-brand-mailgun:before{content:"\f32e"}.ti-brand-mantine:before{content:"\f32f"}.ti-brand-mastercard:before{content:"\ef49"}.ti-brand-mastodon:before{content:"\f250"}.ti-brand-matrix:before{content:"\f5eb"}.ti-brand-mcdonalds:before{content:"\f251"}.ti-brand-medium:before{content:"\ec70"}.ti-brand-mercedes:before{content:"\f072"}.ti-brand-messenger:before{content:"\ec71"}.ti-brand-meta:before{content:"\efb0"}.ti-brand-miniprogram:before{content:"\f602"}.ti-brand-mixpanel:before{content:"\f397"}.ti-brand-monday:before{content:"\f219"}.ti-brand-mongodb:before{content:"\f613"}.ti-brand-my-oppo:before{content:"\f4d7"}.ti-brand-mysql:before{content:"\f614"}.ti-brand-national-geographic:before{content:"\f603"}.ti-brand-nem:before{content:"\f5a1"}.ti-brand-netbeans:before{content:"\ef71"}.ti-brand-netease-music:before{content:"\f604"}.ti-brand-netflix:before{content:"\edcf"}.ti-brand-nexo:before{content:"\f5a2"}.ti-brand-nextcloud:before{content:"\f4d8"}.ti-brand-nextjs:before{content:"\f0dd"}.ti-brand-nord-vpn:before{content:"\f37f"}.ti-brand-notion:before{content:"\ef7b"}.ti-brand-npm:before{content:"\f569"}.ti-brand-nuxt:before{content:"\f0de"}.ti-brand-nytimes:before{content:"\ef8d"}.ti-brand-office:before{content:"\f398"}.ti-brand-ok-ru:before{content:"\f399"}.ti-brand-onedrive:before{content:"\f5d7"}.ti-brand-onlyfans:before{content:"\f605"}.ti-brand-open-source:before{content:"\edd0"}.ti-brand-openvpn:before{content:"\f39a"}.ti-brand-opera:before{content:"\ec21"}.ti-brand-pagekit:before{content:"\edd1"}.ti-brand-patreon:before{content:"\edd2"}.ti-brand-paypal:before{content:"\ec22"}.ti-brand-paypay:before{content:"\f5ec"}.ti-brand-peanut:before{content:"\f39b"}.ti-brand-pepsi:before{content:"\f261"}.ti-brand-php:before{content:"\ef72"}.ti-brand-picsart:before{content:"\f4d9"}.ti-brand-pinterest:before{content:"\ec8d"}.ti-brand-pocket:before{content:"\ed00"}.ti-brand-polymer:before{content:"\f498"}.ti-brand-powershell:before{content:"\f5ed"}.ti-brand-prisma:before{content:"\f499"}.ti-brand-producthunt:before{content:"\edd3"}.ti-brand-pushbullet:before{content:"\f330"}.ti-brand-pushover:before{content:"\f20e"}.ti-brand-python:before{content:"\ed01"}.ti-brand-qq:before{content:"\f606"}.ti-brand-react:before{content:"\f34c"}.ti-brand-react-native:before{content:"\ef73"}.ti-brand-reason:before{content:"\f49a"}.ti-brand-reddit:before{content:"\ec8e"}.ti-brand-redhat:before{content:"\f331"}.ti-brand-redux:before{content:"\f3a8"}.ti-brand-revolut:before{content:"\f4da"}.ti-brand-safari:before{content:"\ec23"}.ti-brand-samsungpass:before{content:"\f4db"}.ti-brand-sass:before{content:"\edd4"}.ti-brand-sentry:before{content:"\edd5"}.ti-brand-sharik:before{content:"\f4dc"}.ti-brand-shazam:before{content:"\edd6"}.ti-brand-shopee:before{content:"\f252"}.ti-brand-sketch:before{content:"\ec24"}.ti-brand-skype:before{content:"\ed02"}.ti-brand-slack:before{content:"\ec72"}.ti-brand-snapchat:before{content:"\ec25"}.ti-brand-snapseed:before{content:"\f253"}.ti-brand-snowflake:before{content:"\f615"}.ti-brand-socket-io:before{content:"\f49b"}.ti-brand-solidjs:before{content:"\f5ee"}.ti-brand-soundcloud:before{content:"\ed6e"}.ti-brand-spacehey:before{content:"\f4fc"}.ti-brand-spotify:before{content:"\ed03"}.ti-brand-stackoverflow:before{content:"\ef58"}.ti-brand-stackshare:before{content:"\f607"}.ti-brand-steam:before{content:"\ed6f"}.ti-brand-storybook:before{content:"\f332"}.ti-brand-storytel:before{content:"\f608"}.ti-brand-strava:before{content:"\f254"}.ti-brand-stripe:before{content:"\edd7"}.ti-brand-sublime-text:before{content:"\ef74"}.ti-brand-superhuman:before{content:"\f50c"}.ti-brand-supernova:before{content:"\f49c"}.ti-brand-surfshark:before{content:"\f255"}.ti-brand-svelte:before{content:"\f0df"}.ti-brand-symfony:before{content:"\f616"}.ti-brand-tabler:before{content:"\ec8f"}.ti-brand-tailwind:before{content:"\eca1"}.ti-brand-taobao:before{content:"\f5ef"}.ti-brand-ted:before{content:"\f658"}.ti-brand-telegram:before{content:"\ec26"}.ti-brand-tether:before{content:"\f5a3"}.ti-brand-threejs:before{content:"\f5f0"}.ti-brand-tidal:before{content:"\ed70"}.ti-brand-tiktok:before{content:"\ec73"}.ti-brand-tinder:before{content:"\ed71"}.ti-brand-topbuzz:before{content:"\f50d"}.ti-brand-torchain:before{content:"\f5a4"}.ti-brand-toyota:before{content:"\f262"}.ti-brand-trello:before{content:"\f39d"}.ti-brand-tripadvisor:before{content:"\f002"}.ti-brand-tumblr:before{content:"\ed04"}.ti-brand-twilio:before{content:"\f617"}.ti-brand-twitch:before{content:"\ed05"}.ti-brand-twitter:before{content:"\ec27"}.ti-brand-typescript:before{content:"\f5f1"}.ti-brand-uber:before{content:"\ef75"}.ti-brand-ubuntu:before{content:"\ef59"}.ti-brand-unity:before{content:"\f49d"}.ti-brand-unsplash:before{content:"\edd8"}.ti-brand-upwork:before{content:"\f39e"}.ti-brand-valorant:before{content:"\f39f"}.ti-brand-vercel:before{content:"\ef24"}.ti-brand-vimeo:before{content:"\ed06"}.ti-brand-vinted:before{content:"\f20f"}.ti-brand-visa:before{content:"\f380"}.ti-brand-visual-studio:before{content:"\ef76"}.ti-brand-vite:before{content:"\f5f2"}.ti-brand-vivaldi:before{content:"\f210"}.ti-brand-vk:before{content:"\ed72"}.ti-brand-volkswagen:before{content:"\f50e"}.ti-brand-vsco:before{content:"\f334"}.ti-brand-vscode:before{content:"\f3a0"}.ti-brand-vue:before{content:"\f0e0"}.ti-brand-walmart:before{content:"\f211"}.ti-brand-waze:before{content:"\f5d8"}.ti-brand-webflow:before{content:"\f2d2"}.ti-brand-wechat:before{content:"\f5f3"}.ti-brand-weibo:before{content:"\f609"}.ti-brand-whatsapp:before{content:"\ec74"}.ti-brand-windows:before{content:"\ecd8"}.ti-brand-windy:before{content:"\f4dd"}.ti-brand-wish:before{content:"\f212"}.ti-brand-wix:before{content:"\f3a1"}.ti-brand-wordpress:before{content:"\f2d3"}.ti-brand-xbox:before{content:"\f298"}.ti-brand-xing:before{content:"\f21a"}.ti-brand-yahoo:before{content:"\ed73"}.ti-brand-yatse:before{content:"\f213"}.ti-brand-ycombinator:before{content:"\edd9"}.ti-brand-youtube:before{content:"\ec90"}.ti-brand-youtube-kids:before{content:"\f214"}.ti-brand-zalando:before{content:"\f49e"}.ti-brand-zapier:before{content:"\f49f"}.ti-brand-zeit:before{content:"\f335"}.ti-brand-zhihu:before{content:"\f60a"}.ti-brand-zoom:before{content:"\f215"}.ti-brand-zulip:before{content:"\f4de"}.ti-brand-zwift:before{content:"\f216"}.ti-bread:before{content:"\efa3"}.ti-bread-off:before{content:"\f3cb"}.ti-briefcase:before{content:"\ea46"}.ti-briefcase-off:before{content:"\f3cc"}.ti-brightness:before{content:"\eb7f"}.ti-brightness-2:before{content:"\ee19"}.ti-brightness-down:before{content:"\eb7d"}.ti-brightness-half:before{content:"\ee1a"}.ti-brightness-off:before{content:"\f3cd"}.ti-brightness-up:before{content:"\eb7e"}.ti-broadcast:before{content:"\f1e9"}.ti-broadcast-off:before{content:"\f1e8"}.ti-browser:before{content:"\ebb7"}.ti-browser-check:before{content:"\efd6"}.ti-browser-off:before{content:"\f0c1"}.ti-browser-plus:before{content:"\efd7"}.ti-browser-x:before{content:"\efd8"}.ti-brush:before{content:"\ebb8"}.ti-brush-off:before{content:"\f0c2"}.ti-bucket:before{content:"\ea47"}.ti-bucket-droplet:before{content:"\f56a"}.ti-bucket-off:before{content:"\f103"}.ti-bug:before{content:"\ea48"}.ti-bug-off:before{content:"\f0c3"}.ti-building:before{content:"\ea4f"}.ti-building-arch:before{content:"\ea49"}.ti-building-bank:before{content:"\ebe2"}.ti-building-bridge:before{content:"\ea4b"}.ti-building-bridge-2:before{content:"\ea4a"}.ti-building-broadcast-tower:before{content:"\f4be"}.ti-building-carousel:before{content:"\ed87"}.ti-building-castle:before{content:"\ed88"}.ti-building-church:before{content:"\ea4c"}.ti-building-circus:before{content:"\f4bf"}.ti-building-community:before{content:"\ebf6"}.ti-building-cottage:before{content:"\ee1b"}.ti-building-estate:before{content:"\f5a5"}.ti-building-factory:before{content:"\ee1c"}.ti-building-factory-2:before{content:"\f082"}.ti-building-fortress:before{content:"\ed89"}.ti-building-hospital:before{content:"\ea4d"}.ti-building-lighthouse:before{content:"\ed8a"}.ti-building-monument:before{content:"\ed26"}.ti-building-pavilon:before{content:"\ebf7"}.ti-building-skyscraper:before{content:"\ec39"}.ti-building-stadium:before{content:"\f641"}.ti-building-store:before{content:"\ea4e"}.ti-building-tunnel:before{content:"\f5a6"}.ti-building-warehouse:before{content:"\ebe3"}.ti-building-wind-turbine:before{content:"\f4c0"}.ti-bulb:before{content:"\ea51"}.ti-bulb-off:before{content:"\ea50"}.ti-bulldozer:before{content:"\ee1d"}.ti-bus:before{content:"\ebe4"}.ti-bus-off:before{content:"\f3ce"}.ti-bus-stop:before{content:"\f2d4"}.ti-businessplan:before{content:"\ee1e"}.ti-butterfly:before{content:"\efd9"}.ti-c-sharp:before{content:"\f003"}.ti-cactus:before{content:"\f21b"}.ti-cactus-off:before{content:"\f3cf"}.ti-cake:before{content:"\f00f"}.ti-cake-off:before{content:"\f104"}.ti-calculator:before{content:"\eb80"}.ti-calculator-off:before{content:"\f0c4"}.ti-calendar:before{content:"\ea53"}.ti-calendar-due:before{content:"\f621"}.ti-calendar-event:before{content:"\ea52"}.ti-calendar-minus:before{content:"\ebb9"}.ti-calendar-off:before{content:"\ee1f"}.ti-calendar-plus:before{content:"\ebba"}.ti-calendar-stats:before{content:"\ee20"}.ti-calendar-time:before{content:"\ee21"}.ti-camera:before{content:"\ea54"}.ti-camera-minus:before{content:"\ec3a"}.ti-camera-off:before{content:"\ecee"}.ti-camera-plus:before{content:"\ec3b"}.ti-camera-rotate:before{content:"\ee22"}.ti-camera-selfie:before{content:"\ee23"}.ti-campfire:before{content:"\f5a7"}.ti-candle:before{content:"\efc6"}.ti-candy:before{content:"\ef0d"}.ti-candy-off:before{content:"\f0c5"}.ti-cane:before{content:"\f50f"}.ti-cannabis:before{content:"\f4c1"}.ti-capture:before{content:"\ec3c"}.ti-capture-off:before{content:"\f0c6"}.ti-car:before{content:"\ebbb"}.ti-car-crane:before{content:"\ef25"}.ti-car-crash:before{content:"\efa4"}.ti-car-off:before{content:"\f0c7"}.ti-car-turbine:before{content:"\f4fd"}.ti-caravan:before{content:"\ec7c"}.ti-cardboards:before{content:"\ed74"}.ti-cardboards-off:before{content:"\f0c8"}.ti-cards:before{content:"\f510"}.ti-caret-down:before{content:"\eb5d"}.ti-caret-left:before{content:"\eb5e"}.ti-caret-right:before{content:"\eb5f"}.ti-caret-up:before{content:"\eb60"}.ti-carousel-horizontal:before{content:"\f659"}.ti-carousel-vertical:before{content:"\f65a"}.ti-carrot:before{content:"\f21c"}.ti-carrot-off:before{content:"\f3d0"}.ti-cash:before{content:"\ea55"}.ti-cash-banknote:before{content:"\ee25"}.ti-cash-banknote-off:before{content:"\ee24"}.ti-cash-off:before{content:"\f105"}.ti-cast:before{content:"\ea56"}.ti-cast-off:before{content:"\f0c9"}.ti-cat:before{content:"\f65b"}.ti-category:before{content:"\f1f6"}.ti-category-2:before{content:"\f1f5"}.ti-ce:before{content:"\ed75"}.ti-ce-off:before{content:"\f0ca"}.ti-cell:before{content:"\f05f"}.ti-cell-signal-1:before{content:"\f083"}.ti-cell-signal-2:before{content:"\f084"}.ti-cell-signal-3:before{content:"\f085"}.ti-cell-signal-4:before{content:"\f086"}.ti-cell-signal-5:before{content:"\f087"}.ti-cell-signal-off:before{content:"\f088"}.ti-certificate:before{content:"\ed76"}.ti-certificate-2:before{content:"\f073"}.ti-certificate-2-off:before{content:"\f0cb"}.ti-certificate-off:before{content:"\f0cc"}.ti-chair-director:before{content:"\f2d5"}.ti-chalkboard:before{content:"\f34d"}.ti-chalkboard-off:before{content:"\f3d1"}.ti-charging-pile:before{content:"\ee26"}.ti-chart-arcs:before{content:"\ee28"}.ti-chart-arcs-3:before{content:"\ee27"}.ti-chart-area:before{content:"\ea58"}.ti-chart-area-line:before{content:"\ea57"}.ti-chart-arrows:before{content:"\ee2a"}.ti-chart-arrows-vertical:before{content:"\ee29"}.ti-chart-bar:before{content:"\ea59"}.ti-chart-bar-off:before{content:"\f3d2"}.ti-chart-bubble:before{content:"\ec75"}.ti-chart-candle:before{content:"\ea5a"}.ti-chart-circles:before{content:"\ee2b"}.ti-chart-donut:before{content:"\ea5b"}.ti-chart-donut-2:before{content:"\ee2c"}.ti-chart-donut-3:before{content:"\ee2d"}.ti-chart-donut-4:before{content:"\ee2e"}.ti-chart-dots:before{content:"\ee2f"}.ti-chart-dots-2:before{content:"\f097"}.ti-chart-dots-3:before{content:"\f098"}.ti-chart-grid-dots:before{content:"\f4c2"}.ti-chart-histogram:before{content:"\f65c"}.ti-chart-infographic:before{content:"\ee30"}.ti-chart-line:before{content:"\ea5c"}.ti-chart-pie:before{content:"\ea5d"}.ti-chart-pie-2:before{content:"\ee31"}.ti-chart-pie-3:before{content:"\ee32"}.ti-chart-pie-4:before{content:"\ee33"}.ti-chart-pie-off:before{content:"\f3d3"}.ti-chart-ppf:before{content:"\f618"}.ti-chart-radar:before{content:"\ed77"}.ti-chart-sankey:before{content:"\f619"}.ti-chart-treemap:before{content:"\f381"}.ti-check:before{content:"\ea5e"}.ti-checkbox:before{content:"\eba6"}.ti-checklist:before{content:"\f074"}.ti-checks:before{content:"\ebaa"}.ti-checkup-list:before{content:"\ef5a"}.ti-cheese:before{content:"\ef26"}.ti-chef-hat:before{content:"\f21d"}.ti-chef-hat-off:before{content:"\f3d4"}.ti-cherry:before{content:"\f511"}.ti-chess:before{content:"\f382"}.ti-chess-bishop:before{content:"\f56b"}.ti-chess-king:before{content:"\f56c"}.ti-chess-knight:before{content:"\f56d"}.ti-chess-queen:before{content:"\f56e"}.ti-chess-rook:before{content:"\f56f"}.ti-chevron-down:before{content:"\ea5f"}.ti-chevron-down-left:before{content:"\ed09"}.ti-chevron-down-right:before{content:"\ed0a"}.ti-chevron-left:before{content:"\ea60"}.ti-chevron-right:before{content:"\ea61"}.ti-chevron-up:before{content:"\ea62"}.ti-chevron-up-left:before{content:"\ed0b"}.ti-chevron-up-right:before{content:"\ed0c"}.ti-chevrons-down:before{content:"\ea63"}.ti-chevrons-down-left:before{content:"\ed0d"}.ti-chevrons-down-right:before{content:"\ed0e"}.ti-chevrons-left:before{content:"\ea64"}.ti-chevrons-right:before{content:"\ea65"}.ti-chevrons-up:before{content:"\ea66"}.ti-chevrons-up-left:before{content:"\ed0f"}.ti-chevrons-up-right:before{content:"\ed10"}.ti-chisel:before{content:"\f383"}.ti-christmas-tree:before{content:"\ed78"}.ti-christmas-tree-off:before{content:"\f3d5"}.ti-circle:before{content:"\ea6b"}.ti-circle-caret-down:before{content:"\f4a9"}.ti-circle-caret-left:before{content:"\f4aa"}.ti-circle-caret-right:before{content:"\f4ab"}.ti-circle-caret-up:before{content:"\f4ac"}.ti-circle-check:before{content:"\ea67"}.ti-circle-chevron-down:before{content:"\f622"}.ti-circle-chevron-left:before{content:"\f623"}.ti-circle-chevron-right:before{content:"\f624"}.ti-circle-chevron-up:before{content:"\f625"}.ti-circle-chevrons-down:before{content:"\f642"}.ti-circle-chevrons-left:before{content:"\f643"}.ti-circle-chevrons-right:before{content:"\f644"}.ti-circle-chevrons-up:before{content:"\f645"}.ti-circle-dashed:before{content:"\ed27"}.ti-circle-dot:before{content:"\efb1"}.ti-circle-dotted:before{content:"\ed28"}.ti-circle-half:before{content:"\ee3f"}.ti-circle-half-2:before{content:"\eff3"}.ti-circle-half-vertical:before{content:"\ee3e"}.ti-circle-key:before{content:"\f633"}.ti-circle-letter-a:before{content:"\f441"}.ti-circle-letter-b:before{content:"\f442"}.ti-circle-letter-c:before{content:"\f443"}.ti-circle-letter-d:before{content:"\f444"}.ti-circle-letter-e:before{content:"\f445"}.ti-circle-letter-f:before{content:"\f446"}.ti-circle-letter-g:before{content:"\f447"}.ti-circle-letter-h:before{content:"\f448"}.ti-circle-letter-i:before{content:"\f449"}.ti-circle-letter-j:before{content:"\f44a"}.ti-circle-letter-k:before{content:"\f44b"}.ti-circle-letter-l:before{content:"\f44c"}.ti-circle-letter-m:before{content:"\f44d"}.ti-circle-letter-n:before{content:"\f44e"}.ti-circle-letter-o:before{content:"\f44f"}.ti-circle-letter-p:before{content:"\f450"}.ti-circle-letter-q:before{content:"\f451"}.ti-circle-letter-r:before{content:"\f452"}.ti-circle-letter-s:before{content:"\f453"}.ti-circle-letter-t:before{content:"\f454"}.ti-circle-letter-u:before{content:"\f455"}.ti-circle-letter-v:before{content:"\f4ad"}.ti-circle-letter-w:before{content:"\f456"}.ti-circle-letter-x:before{content:"\f4ae"}.ti-circle-letter-y:before{content:"\f457"}.ti-circle-letter-z:before{content:"\f458"}.ti-circle-minus:before{content:"\ea68"}.ti-circle-number-0:before{content:"\ee34"}.ti-circle-number-1:before{content:"\ee35"}.ti-circle-number-2:before{content:"\ee36"}.ti-circle-number-3:before{content:"\ee37"}.ti-circle-number-4:before{content:"\ee38"}.ti-circle-number-5:before{content:"\ee39"}.ti-circle-number-6:before{content:"\ee3a"}.ti-circle-number-7:before{content:"\ee3b"}.ti-circle-number-8:before{content:"\ee3c"}.ti-circle-number-9:before{content:"\ee3d"}.ti-circle-off:before{content:"\ee40"}.ti-circle-plus:before{content:"\ea69"}.ti-circle-rectangle:before{content:"\f010"}.ti-circle-rectangle-off:before{content:"\f0cd"}.ti-circle-square:before{content:"\ece4"}.ti-circle-triangle:before{content:"\f011"}.ti-circle-x:before{content:"\ea6a"}.ti-circles:before{content:"\ece5"}.ti-circles-relation:before{content:"\f4c3"}.ti-circuit-ammeter:before{content:"\f271"}.ti-circuit-battery:before{content:"\f272"}.ti-circuit-bulb:before{content:"\f273"}.ti-circuit-capacitor:before{content:"\f275"}.ti-circuit-capacitor-polarized:before{content:"\f274"}.ti-circuit-cell:before{content:"\f277"}.ti-circuit-cell-plus:before{content:"\f276"}.ti-circuit-changeover:before{content:"\f278"}.ti-circuit-diode:before{content:"\f27a"}.ti-circuit-diode-zener:before{content:"\f279"}.ti-circuit-ground:before{content:"\f27c"}.ti-circuit-ground-digital:before{content:"\f27b"}.ti-circuit-inductor:before{content:"\f27d"}.ti-circuit-motor:before{content:"\f27e"}.ti-circuit-pushbutton:before{content:"\f27f"}.ti-circuit-resistor:before{content:"\f280"}.ti-circuit-switch-closed:before{content:"\f281"}.ti-circuit-switch-open:before{content:"\f282"}.ti-circuit-voltmeter:before{content:"\f283"}.ti-clear-all:before{content:"\ee41"}.ti-clear-formatting:before{content:"\ebe5"}.ti-click:before{content:"\ebbc"}.ti-clipboard:before{content:"\ea6f"}.ti-clipboard-check:before{content:"\ea6c"}.ti-clipboard-copy:before{content:"\f299"}.ti-clipboard-data:before{content:"\f563"}.ti-clipboard-heart:before{content:"\f34e"}.ti-clipboard-list:before{content:"\ea6d"}.ti-clipboard-off:before{content:"\f0ce"}.ti-clipboard-plus:before{content:"\efb2"}.ti-clipboard-text:before{content:"\f089"}.ti-clipboard-typography:before{content:"\f34f"}.ti-clipboard-x:before{content:"\ea6e"}.ti-clock:before{content:"\ea70"}.ti-clock-2:before{content:"\f099"}.ti-clock-cancel:before{content:"\f546"}.ti-clock-edit:before{content:"\f547"}.ti-clock-hour-1:before{content:"\f313"}.ti-clock-hour-10:before{content:"\f314"}.ti-clock-hour-11:before{content:"\f315"}.ti-clock-hour-12:before{content:"\f316"}.ti-clock-hour-2:before{content:"\f317"}.ti-clock-hour-3:before{content:"\f318"}.ti-clock-hour-4:before{content:"\f319"}.ti-clock-hour-5:before{content:"\f31a"}.ti-clock-hour-6:before{content:"\f31b"}.ti-clock-hour-7:before{content:"\f31c"}.ti-clock-hour-8:before{content:"\f31d"}.ti-clock-hour-9:before{content:"\f31e"}.ti-clock-off:before{content:"\f0cf"}.ti-clock-pause:before{content:"\f548"}.ti-clock-play:before{content:"\f549"}.ti-clock-record:before{content:"\f54a"}.ti-clock-stop:before{content:"\f54b"}.ti-clothes-rack:before{content:"\f285"}.ti-clothes-rack-off:before{content:"\f3d6"}.ti-cloud:before{content:"\ea76"}.ti-cloud-computing:before{content:"\f1d0"}.ti-cloud-data-connection:before{content:"\f1d1"}.ti-cloud-download:before{content:"\ea71"}.ti-cloud-fog:before{content:"\ecd9"}.ti-cloud-lock:before{content:"\efdb"}.ti-cloud-lock-open:before{content:"\efda"}.ti-cloud-off:before{content:"\ed3e"}.ti-cloud-rain:before{content:"\ea72"}.ti-cloud-snow:before{content:"\ea73"}.ti-cloud-storm:before{content:"\ea74"}.ti-cloud-upload:before{content:"\ea75"}.ti-clover:before{content:"\f1ea"}.ti-clover-2:before{content:"\f21e"}.ti-clubs:before{content:"\eff4"}.ti-code:before{content:"\ea77"}.ti-code-asterix:before{content:"\f312"}.ti-code-circle:before{content:"\f4ff"}.ti-code-circle-2:before{content:"\f4fe"}.ti-code-dots:before{content:"\f61a"}.ti-code-minus:before{content:"\ee42"}.ti-code-off:before{content:"\f0d0"}.ti-code-plus:before{content:"\ee43"}.ti-coffee:before{content:"\ef0e"}.ti-coffee-off:before{content:"\f106"}.ti-coffin:before{content:"\f579"}.ti-coin:before{content:"\eb82"}.ti-coin-bitcoin:before{content:"\f2be"}.ti-coin-euro:before{content:"\f2bf"}.ti-coin-monero:before{content:"\f4a0"}.ti-coin-off:before{content:"\f0d1"}.ti-coin-pound:before{content:"\f2c0"}.ti-coin-rupee:before{content:"\f2c1"}.ti-coin-yen:before{content:"\f2c2"}.ti-coin-yuan:before{content:"\f2c3"}.ti-coins:before{content:"\f65d"}.ti-color-filter:before{content:"\f5a8"}.ti-color-picker:before{content:"\ebe6"}.ti-color-picker-off:before{content:"\f0d2"}.ti-color-swatch:before{content:"\eb61"}.ti-color-swatch-off:before{content:"\f0d3"}.ti-column-insert-left:before{content:"\ee44"}.ti-column-insert-right:before{content:"\ee45"}.ti-columns:before{content:"\eb83"}.ti-columns-off:before{content:"\f0d4"}.ti-comet:before{content:"\ec76"}.ti-command:before{content:"\ea78"}.ti-command-off:before{content:"\f3d7"}.ti-compass:before{content:"\ea79"}.ti-compass-off:before{content:"\f0d5"}.ti-components:before{content:"\efa5"}.ti-components-off:before{content:"\f0d6"}.ti-cone:before{content:"\efdd"}.ti-cone-2:before{content:"\efdc"}.ti-cone-off:before{content:"\f3d8"}.ti-confetti:before{content:"\ee46"}.ti-confetti-off:before{content:"\f3d9"}.ti-confucius:before{content:"\f58a"}.ti-container:before{content:"\ee47"}.ti-container-off:before{content:"\f107"}.ti-contrast:before{content:"\ec4e"}.ti-contrast-2:before{content:"\efc7"}.ti-contrast-2-off:before{content:"\f3da"}.ti-contrast-off:before{content:"\f3db"}.ti-cooker:before{content:"\f57a"}.ti-cookie:before{content:"\ef0f"}.ti-cookie-man:before{content:"\f4c4"}.ti-cookie-off:before{content:"\f0d7"}.ti-copy:before{content:"\ea7a"}.ti-copy-off:before{content:"\f0d8"}.ti-copyleft:before{content:"\ec3d"}.ti-copyleft-off:before{content:"\f0d9"}.ti-copyright:before{content:"\ea7b"}.ti-copyright-off:before{content:"\f0da"}.ti-corner-down-left:before{content:"\ea7c"}.ti-corner-down-left-double:before{content:"\ee48"}.ti-corner-down-right:before{content:"\ea7d"}.ti-corner-down-right-double:before{content:"\ee49"}.ti-corner-left-down:before{content:"\ea7e"}.ti-corner-left-down-double:before{content:"\ee4a"}.ti-corner-left-up:before{content:"\ea7f"}.ti-corner-left-up-double:before{content:"\ee4b"}.ti-corner-right-down:before{content:"\ea80"}.ti-corner-right-down-double:before{content:"\ee4c"}.ti-corner-right-up:before{content:"\ea81"}.ti-corner-right-up-double:before{content:"\ee4d"}.ti-corner-up-left:before{content:"\ea82"}.ti-corner-up-left-double:before{content:"\ee4e"}.ti-corner-up-right:before{content:"\ea83"}.ti-corner-up-right-double:before{content:"\ee4f"}.ti-cpu:before{content:"\ef8e"}.ti-cpu-2:before{content:"\f075"}.ti-cpu-off:before{content:"\f108"}.ti-crane:before{content:"\ef27"}.ti-crane-off:before{content:"\f109"}.ti-creative-commons:before{content:"\efb3"}.ti-creative-commons-by:before{content:"\f21f"}.ti-creative-commons-nc:before{content:"\f220"}.ti-creative-commons-nd:before{content:"\f221"}.ti-creative-commons-off:before{content:"\f10a"}.ti-creative-commons-sa:before{content:"\f222"}.ti-creative-commons-zero:before{content:"\f223"}.ti-credit-card:before{content:"\ea84"}.ti-credit-card-off:before{content:"\ed11"}.ti-cricket:before{content:"\f09a"}.ti-crop:before{content:"\ea85"}.ti-cross:before{content:"\ef8f"}.ti-cross-off:before{content:"\f10b"}.ti-crosshair:before{content:"\ec3e"}.ti-crown:before{content:"\ed12"}.ti-crown-off:before{content:"\ee50"}.ti-crutches:before{content:"\ef5b"}.ti-crutches-off:before{content:"\f10c"}.ti-crystal-ball:before{content:"\f57b"}.ti-cube-send:before{content:"\f61b"}.ti-cube-unfolded:before{content:"\f61c"}.ti-cup:before{content:"\ef28"}.ti-cup-off:before{content:"\f10d"}.ti-curling:before{content:"\efc8"}.ti-curly-loop:before{content:"\ecda"}.ti-currency:before{content:"\efa6"}.ti-currency-afghani:before{content:"\f65e"}.ti-currency-bahraini:before{content:"\ee51"}.ti-currency-baht:before{content:"\f08a"}.ti-currency-bitcoin:before{content:"\ebab"}.ti-currency-cent:before{content:"\ee53"}.ti-currency-dinar:before{content:"\ee54"}.ti-currency-dirham:before{content:"\ee55"}.ti-currency-dogecoin:before{content:"\ef4b"}.ti-currency-dollar:before{content:"\eb84"}.ti-currency-dollar-australian:before{content:"\ee56"}.ti-currency-dollar-brunei:before{content:"\f36c"}.ti-currency-dollar-canadian:before{content:"\ee57"}.ti-currency-dollar-guyanese:before{content:"\f36d"}.ti-currency-dollar-off:before{content:"\f3dc"}.ti-currency-dollar-singapore:before{content:"\ee58"}.ti-currency-dollar-zimbabwean:before{content:"\f36e"}.ti-currency-dong:before{content:"\f36f"}.ti-currency-dram:before{content:"\f370"}.ti-currency-ethereum:before{content:"\ee59"}.ti-currency-euro:before{content:"\eb85"}.ti-currency-euro-off:before{content:"\f3dd"}.ti-currency-forint:before{content:"\ee5a"}.ti-currency-frank:before{content:"\ee5b"}.ti-currency-guarani:before{content:"\f371"}.ti-currency-hryvnia:before{content:"\f372"}.ti-currency-kip:before{content:"\f373"}.ti-currency-krone-czech:before{content:"\ee5c"}.ti-currency-krone-danish:before{content:"\ee5d"}.ti-currency-krone-swedish:before{content:"\ee5e"}.ti-currency-lari:before{content:"\f374"}.ti-currency-leu:before{content:"\ee5f"}.ti-currency-lira:before{content:"\ee60"}.ti-currency-litecoin:before{content:"\ee61"}.ti-currency-lyd:before{content:"\f375"}.ti-currency-manat:before{content:"\f376"}.ti-currency-monero:before{content:"\f377"}.ti-currency-naira:before{content:"\ee62"}.ti-currency-off:before{content:"\f3de"}.ti-currency-paanga:before{content:"\f378"}.ti-currency-peso:before{content:"\f65f"}.ti-currency-pound:before{content:"\ebac"}.ti-currency-pound-off:before{content:"\f3df"}.ti-currency-quetzal:before{content:"\f379"}.ti-currency-real:before{content:"\ee63"}.ti-currency-renminbi:before{content:"\ee64"}.ti-currency-ripple:before{content:"\ee65"}.ti-currency-riyal:before{content:"\ee66"}.ti-currency-rubel:before{content:"\ee67"}.ti-currency-rufiyaa:before{content:"\f37a"}.ti-currency-rupee:before{content:"\ebad"}.ti-currency-rupee-nepalese:before{content:"\f37b"}.ti-currency-shekel:before{content:"\ee68"}.ti-currency-solana:before{content:"\f4a1"}.ti-currency-som:before{content:"\f37c"}.ti-currency-taka:before{content:"\ee69"}.ti-currency-tenge:before{content:"\f37d"}.ti-currency-tugrik:before{content:"\ee6a"}.ti-currency-won:before{content:"\ee6b"}.ti-currency-yen:before{content:"\ebae"}.ti-currency-yen-off:before{content:"\f3e0"}.ti-currency-yuan:before{content:"\f29a"}.ti-currency-zloty:before{content:"\ee6c"}.ti-current-location:before{content:"\ecef"}.ti-current-location-off:before{content:"\f10e"}.ti-cursor-off:before{content:"\f10f"}.ti-cursor-text:before{content:"\ee6d"}.ti-cut:before{content:"\ea86"}.ti-cylinder:before{content:"\f54c"}.ti-dashboard:before{content:"\ea87"}.ti-dashboard-off:before{content:"\f3e1"}.ti-database:before{content:"\ea88"}.ti-database-export:before{content:"\ee6e"}.ti-database-import:before{content:"\ee6f"}.ti-database-off:before{content:"\ee70"}.ti-deer:before{content:"\f4c5"}.ti-delta:before{content:"\f53c"}.ti-dental:before{content:"\f025"}.ti-dental-broken:before{content:"\f286"}.ti-dental-off:before{content:"\f110"}.ti-details:before{content:"\ee71"}.ti-details-off:before{content:"\f3e2"}.ti-device-airpods:before{content:"\f5a9"}.ti-device-airpods-case:before{content:"\f646"}.ti-device-analytics:before{content:"\ee72"}.ti-device-audio-tape:before{content:"\ee73"}.ti-device-camera-phone:before{content:"\f233"}.ti-device-cctv:before{content:"\ee74"}.ti-device-cctv-off:before{content:"\f3e3"}.ti-device-computer-camera:before{content:"\ee76"}.ti-device-computer-camera-off:before{content:"\ee75"}.ti-device-desktop:before{content:"\ea89"}.ti-device-desktop-analytics:before{content:"\ee77"}.ti-device-desktop-off:before{content:"\ee78"}.ti-device-floppy:before{content:"\eb62"}.ti-device-gamepad:before{content:"\eb63"}.ti-device-gamepad-2:before{content:"\f1d2"}.ti-device-heart-monitor:before{content:"\f060"}.ti-device-ipad:before{content:"\f648"}.ti-device-ipad-horizontal:before{content:"\f647"}.ti-device-landline-phone:before{content:"\f649"}.ti-device-laptop:before{content:"\eb64"}.ti-device-laptop-off:before{content:"\f061"}.ti-device-mobile:before{content:"\ea8a"}.ti-device-mobile-charging:before{content:"\f224"}.ti-device-mobile-message:before{content:"\ee79"}.ti-device-mobile-off:before{content:"\f062"}.ti-device-mobile-rotated:before{content:"\ecdb"}.ti-device-mobile-vibration:before{content:"\eb86"}.ti-device-nintendo:before{content:"\f026"}.ti-device-nintendo-off:before{content:"\f111"}.ti-device-sd-card:before{content:"\f384"}.ti-device-sim:before{content:"\f4b2"}.ti-device-sim-1:before{content:"\f4af"}.ti-device-sim-2:before{content:"\f4b0"}.ti-device-sim-3:before{content:"\f4b1"}.ti-device-speaker:before{content:"\ea8b"}.ti-device-speaker-off:before{content:"\f112"}.ti-device-tablet:before{content:"\ea8c"}.ti-device-tablet-off:before{content:"\f063"}.ti-device-tv:before{content:"\ea8d"}.ti-device-tv-off:before{content:"\f064"}.ti-device-tv-old:before{content:"\f1d3"}.ti-device-watch:before{content:"\ebf9"}.ti-device-watch-off:before{content:"\f065"}.ti-device-watch-stats:before{content:"\ef7d"}.ti-device-watch-stats-2:before{content:"\ef7c"}.ti-devices:before{content:"\eb87"}.ti-devices-2:before{content:"\ed29"}.ti-devices-off:before{content:"\f3e4"}.ti-devices-pc:before{content:"\ee7a"}.ti-devices-pc-off:before{content:"\f113"}.ti-dialpad:before{content:"\f067"}.ti-dialpad-off:before{content:"\f114"}.ti-diamond:before{content:"\eb65"}.ti-diamond-off:before{content:"\f115"}.ti-diamonds:before{content:"\eff5"}.ti-dice:before{content:"\eb66"}.ti-dice-1:before{content:"\f08b"}.ti-dice-2:before{content:"\f08c"}.ti-dice-3:before{content:"\f08d"}.ti-dice-4:before{content:"\f08e"}.ti-dice-5:before{content:"\f08f"}.ti-dice-6:before{content:"\f090"}.ti-dimensions:before{content:"\ee7b"}.ti-direction:before{content:"\ebfb"}.ti-direction-horizontal:before{content:"\ebfa"}.ti-direction-sign:before{content:"\f1f7"}.ti-direction-sign-off:before{content:"\f3e5"}.ti-directions:before{content:"\ea8e"}.ti-directions-off:before{content:"\f116"}.ti-disabled:before{content:"\ea8f"}.ti-disabled-2:before{content:"\ebaf"}.ti-disabled-off:before{content:"\f117"}.ti-disc:before{content:"\ea90"}.ti-disc-golf:before{content:"\f385"}.ti-disc-off:before{content:"\f118"}.ti-discount:before{content:"\ebbd"}.ti-discount-2:before{content:"\ee7c"}.ti-discount-2-off:before{content:"\f3e6"}.ti-discount-check:before{content:"\f1f8"}.ti-discount-off:before{content:"\f3e7"}.ti-divide:before{content:"\ed5c"}.ti-dna:before{content:"\ee7d"}.ti-dna-2:before{content:"\ef5c"}.ti-dna-2-off:before{content:"\f119"}.ti-dna-off:before{content:"\f11a"}.ti-dog:before{content:"\f660"}.ti-dog-bowl:before{content:"\ef29"}.ti-door:before{content:"\ef4e"}.ti-door-enter:before{content:"\ef4c"}.ti-door-exit:before{content:"\ef4d"}.ti-door-off:before{content:"\f11b"}.ti-dots:before{content:"\ea95"}.ti-dots-circle-horizontal:before{content:"\ea91"}.ti-dots-diagonal:before{content:"\ea93"}.ti-dots-diagonal-2:before{content:"\ea92"}.ti-dots-vertical:before{content:"\ea94"}.ti-download:before{content:"\ea96"}.ti-download-off:before{content:"\f11c"}.ti-drag-drop:before{content:"\eb89"}.ti-drag-drop-2:before{content:"\eb88"}.ti-drone:before{content:"\ed79"}.ti-drone-off:before{content:"\ee7e"}.ti-drop-circle:before{content:"\efde"}.ti-droplet:before{content:"\ea97"}.ti-droplet-filled:before{content:"\ee80"}.ti-droplet-filled-2:before{content:"\ee7f"}.ti-droplet-half:before{content:"\ee82"}.ti-droplet-half-2:before{content:"\ee81"}.ti-droplet-off:before{content:"\ee83"}.ti-e-passport:before{content:"\f4df"}.ti-ear:before{content:"\ebce"}.ti-ear-off:before{content:"\ee84"}.ti-ease-in:before{content:"\f573"}.ti-ease-in-control-point:before{content:"\f570"}.ti-ease-in-out:before{content:"\f572"}.ti-ease-in-out-control-points:before{content:"\f571"}.ti-ease-out:before{content:"\f575"}.ti-ease-out-control-point:before{content:"\f574"}.ti-edit:before{content:"\ea98"}.ti-edit-circle:before{content:"\ee85"}.ti-edit-circle-off:before{content:"\f11d"}.ti-edit-off:before{content:"\f11e"}.ti-egg:before{content:"\eb8a"}.ti-egg-cracked:before{content:"\f2d6"}.ti-egg-fried:before{content:"\f386"}.ti-egg-off:before{content:"\f11f"}.ti-eggs:before{content:"\f500"}.ti-elevator:before{content:"\efdf"}.ti-elevator-off:before{content:"\f3e8"}.ti-emergency-bed:before{content:"\ef5d"}.ti-empathize:before{content:"\f29b"}.ti-empathize-off:before{content:"\f3e9"}.ti-emphasis:before{content:"\ebcf"}.ti-engine:before{content:"\ef7e"}.ti-engine-off:before{content:"\f120"}.ti-equal:before{content:"\ee87"}.ti-equal-double:before{content:"\f4e1"}.ti-equal-not:before{content:"\ee86"}.ti-eraser:before{content:"\eb8b"}.ti-eraser-off:before{content:"\f121"}.ti-error-404:before{content:"\f027"}.ti-error-404-off:before{content:"\f122"}.ti-exchange:before{content:"\ebe7"}.ti-exchange-off:before{content:"\f123"}.ti-exclamation-circle:before{content:"\f634"}.ti-exclamation-mark:before{content:"\efb4"}.ti-exclamation-mark-off:before{content:"\f124"}.ti-explicit:before{content:"\f256"}.ti-explicit-off:before{content:"\f3ea"}.ti-exposure:before{content:"\eb8c"}.ti-exposure-0:before{content:"\f29c"}.ti-exposure-minus-1:before{content:"\f29d"}.ti-exposure-minus-2:before{content:"\f29e"}.ti-exposure-off:before{content:"\f3eb"}.ti-exposure-plus-1:before{content:"\f29f"}.ti-exposure-plus-2:before{content:"\f2a0"}.ti-external-link:before{content:"\ea99"}.ti-external-link-off:before{content:"\f125"}.ti-eye:before{content:"\ea9a"}.ti-eye-check:before{content:"\ee88"}.ti-eye-off:before{content:"\ecf0"}.ti-eye-table:before{content:"\ef5e"}.ti-eyeglass:before{content:"\ee8a"}.ti-eyeglass-2:before{content:"\ee89"}.ti-eyeglass-off:before{content:"\f126"}.ti-face-id:before{content:"\ea9b"}.ti-face-id-error:before{content:"\efa7"}.ti-face-mask:before{content:"\efb5"}.ti-face-mask-off:before{content:"\f127"}.ti-fall:before{content:"\ecb9"}.ti-feather:before{content:"\ee8b"}.ti-feather-off:before{content:"\f128"}.ti-fence:before{content:"\ef2a"}.ti-fence-off:before{content:"\f129"}.ti-fidget-spinner:before{content:"\f068"}.ti-file:before{content:"\eaa4"}.ti-file-3d:before{content:"\f032"}.ti-file-alert:before{content:"\ede6"}.ti-file-analytics:before{content:"\ede7"}.ti-file-arrow-left:before{content:"\f033"}.ti-file-arrow-right:before{content:"\f034"}.ti-file-barcode:before{content:"\f035"}.ti-file-broken:before{content:"\f501"}.ti-file-certificate:before{content:"\ed4d"}.ti-file-chart:before{content:"\f036"}.ti-file-check:before{content:"\ea9c"}.ti-file-code:before{content:"\ebd0"}.ti-file-code-2:before{content:"\ede8"}.ti-file-database:before{content:"\f037"}.ti-file-delta:before{content:"\f53d"}.ti-file-description:before{content:"\f028"}.ti-file-diff:before{content:"\ecf1"}.ti-file-digit:before{content:"\efa8"}.ti-file-dislike:before{content:"\ed2a"}.ti-file-dollar:before{content:"\efe0"}.ti-file-dots:before{content:"\f038"}.ti-file-download:before{content:"\ea9d"}.ti-file-euro:before{content:"\efe1"}.ti-file-export:before{content:"\ede9"}.ti-file-function:before{content:"\f53e"}.ti-file-horizontal:before{content:"\ebb0"}.ti-file-import:before{content:"\edea"}.ti-file-infinity:before{content:"\f502"}.ti-file-info:before{content:"\edec"}.ti-file-invoice:before{content:"\eb67"}.ti-file-lambda:before{content:"\f53f"}.ti-file-like:before{content:"\ed2b"}.ti-file-minus:before{content:"\ea9e"}.ti-file-music:before{content:"\ea9f"}.ti-file-off:before{content:"\ecf2"}.ti-file-orientation:before{content:"\f2a1"}.ti-file-pencil:before{content:"\f039"}.ti-file-percent:before{content:"\f540"}.ti-file-phone:before{content:"\ecdc"}.ti-file-plus:before{content:"\eaa0"}.ti-file-power:before{content:"\f03a"}.ti-file-report:before{content:"\eded"}.ti-file-rss:before{content:"\f03b"}.ti-file-scissors:before{content:"\f03c"}.ti-file-search:before{content:"\ed5d"}.ti-file-settings:before{content:"\f029"}.ti-file-shredder:before{content:"\eaa1"}.ti-file-signal:before{content:"\f03d"}.ti-file-spreadsheet:before{content:"\f03e"}.ti-file-stack:before{content:"\f503"}.ti-file-star:before{content:"\f03f"}.ti-file-symlink:before{content:"\ed53"}.ti-file-text:before{content:"\eaa2"}.ti-file-time:before{content:"\f040"}.ti-file-typography:before{content:"\f041"}.ti-file-unknown:before{content:"\f042"}.ti-file-upload:before{content:"\ec91"}.ti-file-vector:before{content:"\f043"}.ti-file-x:before{content:"\eaa3"}.ti-file-zip:before{content:"\ed4e"}.ti-files:before{content:"\edef"}.ti-files-off:before{content:"\edee"}.ti-filter:before{content:"\eaa5"}.ti-filter-off:before{content:"\ed2c"}.ti-fingerprint:before{content:"\ebd1"}.ti-fingerprint-off:before{content:"\f12a"}.ti-fire-hydrant:before{content:"\f3a9"}.ti-fire-hydrant-off:before{content:"\f3ec"}.ti-firetruck:before{content:"\ebe8"}.ti-first-aid-kit:before{content:"\ef5f"}.ti-first-aid-kit-off:before{content:"\f3ed"}.ti-fish:before{content:"\ef2b"}.ti-fish-bone:before{content:"\f287"}.ti-fish-christianity:before{content:"\f58b"}.ti-fish-hook:before{content:"\f1f9"}.ti-fish-hook-off:before{content:"\f3ee"}.ti-fish-off:before{content:"\f12b"}.ti-flag:before{content:"\eaa6"}.ti-flag-2:before{content:"\ee8c"}.ti-flag-2-off:before{content:"\f12c"}.ti-flag-3:before{content:"\ee8d"}.ti-flag-off:before{content:"\f12d"}.ti-flame:before{content:"\ec2c"}.ti-flame-off:before{content:"\f12e"}.ti-flare:before{content:"\ee8e"}.ti-flask:before{content:"\ebd2"}.ti-flask-2:before{content:"\ef60"}.ti-flask-2-off:before{content:"\f12f"}.ti-flask-off:before{content:"\f130"}.ti-flip-flops:before{content:"\f564"}.ti-flip-horizontal:before{content:"\eaa7"}.ti-flip-vertical:before{content:"\eaa8"}.ti-float-center:before{content:"\ebb1"}.ti-float-left:before{content:"\ebb2"}.ti-float-none:before{content:"\ed13"}.ti-float-right:before{content:"\ebb3"}.ti-flower:before{content:"\eff6"}.ti-flower-off:before{content:"\f131"}.ti-focus:before{content:"\eb8d"}.ti-focus-2:before{content:"\ebd3"}.ti-focus-centered:before{content:"\f02a"}.ti-fold:before{content:"\ed56"}.ti-fold-down:before{content:"\ed54"}.ti-fold-up:before{content:"\ed55"}.ti-folder:before{content:"\eaad"}.ti-folder-minus:before{content:"\eaaa"}.ti-folder-off:before{content:"\ed14"}.ti-folder-plus:before{content:"\eaab"}.ti-folder-x:before{content:"\eaac"}.ti-folders:before{content:"\eaae"}.ti-folders-off:before{content:"\f133"}.ti-forbid:before{content:"\ebd5"}.ti-forbid-2:before{content:"\ebd4"}.ti-forklift:before{content:"\ebe9"}.ti-forms:before{content:"\ee8f"}.ti-fountain:before{content:"\f09b"}.ti-fountain-off:before{content:"\f134"}.ti-frame:before{content:"\eaaf"}.ti-frame-off:before{content:"\f135"}.ti-free-rights:before{content:"\efb6"}.ti-fridge:before{content:"\f1fa"}.ti-fridge-off:before{content:"\f3ef"}.ti-friends:before{content:"\eab0"}.ti-friends-off:before{content:"\f136"}.ti-function:before{content:"\f225"}.ti-function-off:before{content:"\f3f0"}.ti-garden-cart:before{content:"\f23e"}.ti-garden-cart-off:before{content:"\f3f1"}.ti-gas-station:before{content:"\ec7d"}.ti-gas-station-off:before{content:"\f137"}.ti-gauge:before{content:"\eab1"}.ti-gauge-off:before{content:"\f138"}.ti-gavel:before{content:"\ef90"}.ti-gender-agender:before{content:"\f0e1"}.ti-gender-androgyne:before{content:"\f0e2"}.ti-gender-bigender:before{content:"\f0e3"}.ti-gender-demiboy:before{content:"\f0e4"}.ti-gender-demigirl:before{content:"\f0e5"}.ti-gender-epicene:before{content:"\f0e6"}.ti-gender-female:before{content:"\f0e7"}.ti-gender-femme:before{content:"\f0e8"}.ti-gender-genderfluid:before{content:"\f0e9"}.ti-gender-genderless:before{content:"\f0ea"}.ti-gender-genderqueer:before{content:"\f0eb"}.ti-gender-hermaphrodite:before{content:"\f0ec"}.ti-gender-intergender:before{content:"\f0ed"}.ti-gender-male:before{content:"\f0ee"}.ti-gender-neutrois:before{content:"\f0ef"}.ti-gender-third:before{content:"\f0f0"}.ti-gender-transgender:before{content:"\f0f1"}.ti-gender-trasvesti:before{content:"\f0f2"}.ti-geometry:before{content:"\ee90"}.ti-ghost:before{content:"\eb8e"}.ti-ghost-2:before{content:"\f57c"}.ti-ghost-off:before{content:"\f3f2"}.ti-gif:before{content:"\f257"}.ti-gift:before{content:"\eb68"}.ti-gift-card:before{content:"\f3aa"}.ti-gift-off:before{content:"\f3f3"}.ti-git-branch:before{content:"\eab2"}.ti-git-branch-deleted:before{content:"\f57d"}.ti-git-cherry-pick:before{content:"\f57e"}.ti-git-commit:before{content:"\eab3"}.ti-git-compare:before{content:"\eab4"}.ti-git-fork:before{content:"\eb8f"}.ti-git-merge:before{content:"\eab5"}.ti-git-pull-request:before{content:"\eab6"}.ti-git-pull-request-closed:before{content:"\ef7f"}.ti-git-pull-request-draft:before{content:"\efb7"}.ti-gizmo:before{content:"\f02b"}.ti-glass:before{content:"\eab8"}.ti-glass-full:before{content:"\eab7"}.ti-glass-off:before{content:"\ee91"}.ti-globe:before{content:"\eab9"}.ti-globe-off:before{content:"\f139"}.ti-go-game:before{content:"\f512"}.ti-golf:before{content:"\ed8c"}.ti-golf-off:before{content:"\f13a"}.ti-gps:before{content:"\ed7a"}.ti-gradienter:before{content:"\f3ab"}.ti-grain:before{content:"\ee92"}.ti-graph:before{content:"\f288"}.ti-graph-off:before{content:"\f3f4"}.ti-grave:before{content:"\f580"}.ti-grave-2:before{content:"\f57f"}.ti-grid-dots:before{content:"\eaba"}.ti-grid-pattern:before{content:"\efc9"}.ti-grill:before{content:"\efa9"}.ti-grill-fork:before{content:"\f35b"}.ti-grill-off:before{content:"\f3f5"}.ti-grill-spatula:before{content:"\f35c"}.ti-grip-horizontal:before{content:"\ec00"}.ti-grip-vertical:before{content:"\ec01"}.ti-growth:before{content:"\ee93"}.ti-guitar-pick:before{content:"\f4c6"}.ti-h-1:before{content:"\ec94"}.ti-h-2:before{content:"\ec95"}.ti-h-3:before{content:"\ec96"}.ti-h-4:before{content:"\ec97"}.ti-h-5:before{content:"\ec98"}.ti-h-6:before{content:"\ec99"}.ti-hammer:before{content:"\ef91"}.ti-hammer-off:before{content:"\f13c"}.ti-hand-click:before{content:"\ef4f"}.ti-hand-finger:before{content:"\ee94"}.ti-hand-finger-off:before{content:"\f13d"}.ti-hand-grab:before{content:"\f091"}.ti-hand-little-finger:before{content:"\ee95"}.ti-hand-middle-finger:before{content:"\ec2d"}.ti-hand-move:before{content:"\ef50"}.ti-hand-off:before{content:"\ed15"}.ti-hand-ring-finger:before{content:"\ee96"}.ti-hand-rock:before{content:"\ee97"}.ti-hand-sanitizer:before{content:"\f5f4"}.ti-hand-stop:before{content:"\ec2e"}.ti-hand-three-fingers:before{content:"\ee98"}.ti-hand-two-fingers:before{content:"\ee99"}.ti-hanger:before{content:"\ee9a"}.ti-hanger-2:before{content:"\f09c"}.ti-hanger-off:before{content:"\f13e"}.ti-hash:before{content:"\eabc"}.ti-haze:before{content:"\efaa"}.ti-heading:before{content:"\ee9b"}.ti-heading-off:before{content:"\f13f"}.ti-headphones:before{content:"\eabd"}.ti-headphones-off:before{content:"\ed1d"}.ti-headset:before{content:"\eb90"}.ti-headset-off:before{content:"\f3f6"}.ti-health-recognition:before{content:"\f1fb"}.ti-heart:before{content:"\eabe"}.ti-heart-broken:before{content:"\ecba"}.ti-heart-handshake:before{content:"\f0f3"}.ti-heart-minus:before{content:"\f140"}.ti-heart-off:before{content:"\f141"}.ti-heart-plus:before{content:"\f142"}.ti-heart-rate-monitor:before{content:"\ef61"}.ti-heartbeat:before{content:"\ef92"}.ti-hearts:before{content:"\f387"}.ti-hearts-off:before{content:"\f3f7"}.ti-helicopter:before{content:"\ed8e"}.ti-helicopter-landing:before{content:"\ed8d"}.ti-helmet:before{content:"\efca"}.ti-helmet-off:before{content:"\f143"}.ti-help:before{content:"\eabf"}.ti-help-off:before{content:"\f3f8"}.ti-hexagon:before{content:"\ec02"}.ti-hexagon-3d:before{content:"\f4c7"}.ti-hexagon-letter-a:before{content:"\f463"}.ti-hexagon-letter-b:before{content:"\f464"}.ti-hexagon-letter-c:before{content:"\f465"}.ti-hexagon-letter-d:before{content:"\f466"}.ti-hexagon-letter-e:before{content:"\f467"}.ti-hexagon-letter-f:before{content:"\f468"}.ti-hexagon-letter-g:before{content:"\f469"}.ti-hexagon-letter-h:before{content:"\f46a"}.ti-hexagon-letter-i:before{content:"\f46b"}.ti-hexagon-letter-j:before{content:"\f46c"}.ti-hexagon-letter-k:before{content:"\f46d"}.ti-hexagon-letter-l:before{content:"\f46e"}.ti-hexagon-letter-m:before{content:"\f46f"}.ti-hexagon-letter-n:before{content:"\f470"}.ti-hexagon-letter-o:before{content:"\f471"}.ti-hexagon-letter-p:before{content:"\f472"}.ti-hexagon-letter-q:before{content:"\f473"}.ti-hexagon-letter-r:before{content:"\f474"}.ti-hexagon-letter-s:before{content:"\f475"}.ti-hexagon-letter-t:before{content:"\f476"}.ti-hexagon-letter-u:before{content:"\f477"}.ti-hexagon-letter-v:before{content:"\f4b3"}.ti-hexagon-letter-w:before{content:"\f478"}.ti-hexagon-letter-x:before{content:"\f479"}.ti-hexagon-letter-y:before{content:"\f47a"}.ti-hexagon-letter-z:before{content:"\f47b"}.ti-hexagon-number-0:before{content:"\f459"}.ti-hexagon-number-1:before{content:"\f45a"}.ti-hexagon-number-2:before{content:"\f45b"}.ti-hexagon-number-3:before{content:"\f45c"}.ti-hexagon-number-4:before{content:"\f45d"}.ti-hexagon-number-5:before{content:"\f45e"}.ti-hexagon-number-6:before{content:"\f45f"}.ti-hexagon-number-7:before{content:"\f460"}.ti-hexagon-number-8:before{content:"\f461"}.ti-hexagon-number-9:before{content:"\f462"}.ti-hexagon-off:before{content:"\ee9c"}.ti-hexagons:before{content:"\f09d"}.ti-hexagons-off:before{content:"\f3f9"}.ti-hierarchy:before{content:"\ee9e"}.ti-hierarchy-2:before{content:"\ee9d"}.ti-hierarchy-3:before{content:"\f289"}.ti-hierarchy-off:before{content:"\f3fa"}.ti-highlight:before{content:"\ef3f"}.ti-highlight-off:before{content:"\f144"}.ti-history:before{content:"\ebea"}.ti-history-off:before{content:"\f3fb"}.ti-history-toggle:before{content:"\f1fc"}.ti-home:before{content:"\eac1"}.ti-home-2:before{content:"\eac0"}.ti-home-bolt:before{content:"\f336"}.ti-home-cancel:before{content:"\f350"}.ti-home-check:before{content:"\f337"}.ti-home-cog:before{content:"\f338"}.ti-home-dollar:before{content:"\f339"}.ti-home-dot:before{content:"\f33a"}.ti-home-down:before{content:"\f33b"}.ti-home-eco:before{content:"\f351"}.ti-home-edit:before{content:"\f352"}.ti-home-exclamation:before{content:"\f33c"}.ti-home-hand:before{content:"\f504"}.ti-home-heart:before{content:"\f353"}.ti-home-infinity:before{content:"\f505"}.ti-home-link:before{content:"\f354"}.ti-home-minus:before{content:"\f33d"}.ti-home-move:before{content:"\f33e"}.ti-home-off:before{content:"\f145"}.ti-home-plus:before{content:"\f33f"}.ti-home-question:before{content:"\f340"}.ti-home-ribbon:before{content:"\f355"}.ti-home-search:before{content:"\f341"}.ti-home-share:before{content:"\f342"}.ti-home-shield:before{content:"\f343"}.ti-home-signal:before{content:"\f356"}.ti-home-star:before{content:"\f344"}.ti-home-stats:before{content:"\f345"}.ti-home-up:before{content:"\f346"}.ti-home-x:before{content:"\f347"}.ti-horse-toy:before{content:"\f28a"}.ti-hotel-service:before{content:"\ef80"}.ti-hourglass:before{content:"\ef93"}.ti-hourglass-empty:before{content:"\f146"}.ti-hourglass-high:before{content:"\f092"}.ti-hourglass-low:before{content:"\f093"}.ti-hourglass-off:before{content:"\f147"}.ti-ice-cream:before{content:"\eac2"}.ti-ice-cream-2:before{content:"\ee9f"}.ti-ice-cream-off:before{content:"\f148"}.ti-ice-skating:before{content:"\efcb"}.ti-icons:before{content:"\f1d4"}.ti-icons-off:before{content:"\f3fc"}.ti-id:before{content:"\eac3"}.ti-id-badge:before{content:"\eff7"}.ti-id-badge-2:before{content:"\f076"}.ti-id-badge-off:before{content:"\f3fd"}.ti-id-off:before{content:"\f149"}.ti-inbox:before{content:"\eac4"}.ti-inbox-off:before{content:"\f14a"}.ti-indent-decrease:before{content:"\eb91"}.ti-indent-increase:before{content:"\eb92"}.ti-infinity:before{content:"\eb69"}.ti-infinity-off:before{content:"\f3fe"}.ti-info-circle:before{content:"\eac5"}.ti-info-square:before{content:"\eac6"}.ti-info-square-rounded:before{content:"\f635"}.ti-inner-shadow-bottom:before{content:"\f520"}.ti-inner-shadow-bottom-left:before{content:"\f51e"}.ti-inner-shadow-bottom-right:before{content:"\f51f"}.ti-inner-shadow-left:before{content:"\f521"}.ti-inner-shadow-right:before{content:"\f522"}.ti-inner-shadow-top:before{content:"\f525"}.ti-inner-shadow-top-left:before{content:"\f523"}.ti-inner-shadow-top-right:before{content:"\f524"}.ti-input-search:before{content:"\f2a2"}.ti-ironing-1:before{content:"\f2f4"}.ti-ironing-2:before{content:"\f2f5"}.ti-ironing-3:before{content:"\f2f6"}.ti-ironing-off:before{content:"\f2f7"}.ti-ironing-steam:before{content:"\f2f9"}.ti-ironing-steam-off:before{content:"\f2f8"}.ti-italic:before{content:"\eb93"}.ti-jacket:before{content:"\f661"}.ti-jetpack:before{content:"\f581"}.ti-jewish-star:before{content:"\f3ff"}.ti-jpg:before{content:"\f3ac"}.ti-jump-rope:before{content:"\ed8f"}.ti-karate:before{content:"\ed32"}.ti-kayak:before{content:"\f1d6"}.ti-kering:before{content:"\efb8"}.ti-key:before{content:"\eac7"}.ti-key-off:before{content:"\f14b"}.ti-keyboard:before{content:"\ebd6"}.ti-keyboard-hide:before{content:"\ec7e"}.ti-keyboard-off:before{content:"\eea0"}.ti-keyboard-show:before{content:"\ec7f"}.ti-keyframe:before{content:"\f576"}.ti-keyframe-align-center:before{content:"\f582"}.ti-keyframe-align-horizontal:before{content:"\f583"}.ti-keyframe-align-vertical:before{content:"\f584"}.ti-keyframes:before{content:"\f585"}.ti-ladder:before{content:"\efe2"}.ti-ladder-off:before{content:"\f14c"}.ti-lambda:before{content:"\f541"}.ti-lamp:before{content:"\efab"}.ti-lamp-2:before{content:"\f09e"}.ti-lamp-off:before{content:"\f14d"}.ti-language:before{content:"\ebbe"}.ti-language-hiragana:before{content:"\ef77"}.ti-language-katakana:before{content:"\ef78"}.ti-language-off:before{content:"\f14e"}.ti-lasso:before{content:"\efac"}.ti-lasso-off:before{content:"\f14f"}.ti-lasso-polygon:before{content:"\f388"}.ti-layers-difference:before{content:"\eac8"}.ti-layers-intersect:before{content:"\eac9"}.ti-layers-intersect-2:before{content:"\eff8"}.ti-layers-linked:before{content:"\eea1"}.ti-layers-off:before{content:"\f150"}.ti-layers-subtract:before{content:"\eaca"}.ti-layers-union:before{content:"\eacb"}.ti-layout:before{content:"\eadb"}.ti-layout-2:before{content:"\eacc"}.ti-layout-align-bottom:before{content:"\eacd"}.ti-layout-align-center:before{content:"\eace"}.ti-layout-align-left:before{content:"\eacf"}.ti-layout-align-middle:before{content:"\ead0"}.ti-layout-align-right:before{content:"\ead1"}.ti-layout-align-top:before{content:"\ead2"}.ti-layout-board:before{content:"\ef95"}.ti-layout-board-split:before{content:"\ef94"}.ti-layout-bottombar:before{content:"\ead3"}.ti-layout-bottombar-collapse:before{content:"\f28b"}.ti-layout-bottombar-expand:before{content:"\f28c"}.ti-layout-cards:before{content:"\ec13"}.ti-layout-collage:before{content:"\f389"}.ti-layout-columns:before{content:"\ead4"}.ti-layout-dashboard:before{content:"\f02c"}.ti-layout-distribute-horizontal:before{content:"\ead5"}.ti-layout-distribute-vertical:before{content:"\ead6"}.ti-layout-grid:before{content:"\edba"}.ti-layout-grid-add:before{content:"\edb9"}.ti-layout-kanban:before{content:"\ec3f"}.ti-layout-list:before{content:"\ec14"}.ti-layout-navbar:before{content:"\ead7"}.ti-layout-navbar-collapse:before{content:"\f28d"}.ti-layout-navbar-expand:before{content:"\f28e"}.ti-layout-off:before{content:"\f151"}.ti-layout-rows:before{content:"\ead8"}.ti-layout-sidebar:before{content:"\eada"}.ti-layout-sidebar-left-collapse:before{content:"\f004"}.ti-layout-sidebar-left-expand:before{content:"\f005"}.ti-layout-sidebar-right:before{content:"\ead9"}.ti-layout-sidebar-right-collapse:before{content:"\f006"}.ti-layout-sidebar-right-expand:before{content:"\f007"}.ti-leaf:before{content:"\ed4f"}.ti-leaf-off:before{content:"\f400"}.ti-lego:before{content:"\eadc"}.ti-lego-off:before{content:"\f401"}.ti-lemon:before{content:"\ef10"}.ti-lemon-2:before{content:"\ef81"}.ti-letter-a:before{content:"\ec50"}.ti-letter-b:before{content:"\ec51"}.ti-letter-c:before{content:"\ec52"}.ti-letter-case:before{content:"\eea5"}.ti-letter-case-lower:before{content:"\eea2"}.ti-letter-case-toggle:before{content:"\eea3"}.ti-letter-case-upper:before{content:"\eea4"}.ti-letter-d:before{content:"\ec53"}.ti-letter-e:before{content:"\ec54"}.ti-letter-f:before{content:"\ec55"}.ti-letter-g:before{content:"\ec56"}.ti-letter-h:before{content:"\ec57"}.ti-letter-i:before{content:"\ec58"}.ti-letter-j:before{content:"\ec59"}.ti-letter-k:before{content:"\ec5a"}.ti-letter-l:before{content:"\ec5b"}.ti-letter-m:before{content:"\ec5c"}.ti-letter-n:before{content:"\ec5d"}.ti-letter-o:before{content:"\ec5e"}.ti-letter-p:before{content:"\ec5f"}.ti-letter-q:before{content:"\ec60"}.ti-letter-r:before{content:"\ec61"}.ti-letter-s:before{content:"\ec62"}.ti-letter-spacing:before{content:"\eea6"}.ti-letter-t:before{content:"\ec63"}.ti-letter-u:before{content:"\ec64"}.ti-letter-v:before{content:"\ec65"}.ti-letter-w:before{content:"\ec66"}.ti-letter-x:before{content:"\ec67"}.ti-letter-y:before{content:"\ec68"}.ti-letter-z:before{content:"\ec69"}.ti-license:before{content:"\ebc0"}.ti-license-off:before{content:"\f153"}.ti-lifebuoy:before{content:"\eadd"}.ti-lifebuoy-off:before{content:"\f154"}.ti-line:before{content:"\ec40"}.ti-line-dashed:before{content:"\eea7"}.ti-line-dotted:before{content:"\eea8"}.ti-line-height:before{content:"\eb94"}.ti-link:before{content:"\eade"}.ti-link-off:before{content:"\f402"}.ti-list:before{content:"\eb6b"}.ti-list-check:before{content:"\eb6a"}.ti-list-details:before{content:"\ef40"}.ti-list-numbers:before{content:"\ef11"}.ti-list-search:before{content:"\eea9"}.ti-live-photo:before{content:"\eadf"}.ti-live-photo-off:before{content:"\f403"}.ti-live-view:before{content:"\ec6b"}.ti-loader:before{content:"\eca3"}.ti-loader-2:before{content:"\f226"}.ti-loader-3:before{content:"\f513"}.ti-loader-quarter:before{content:"\eca2"}.ti-location:before{content:"\eae0"}.ti-location-broken:before{content:"\f2c4"}.ti-location-off:before{content:"\f155"}.ti-lock:before{content:"\eae2"}.ti-lock-access:before{content:"\eeaa"}.ti-lock-access-off:before{content:"\f404"}.ti-lock-off:before{content:"\ed1e"}.ti-lock-open:before{content:"\eae1"}.ti-lock-open-off:before{content:"\f156"}.ti-lock-square:before{content:"\ef51"}.ti-lock-square-rounded:before{content:"\f636"}.ti-logic-and:before{content:"\f240"}.ti-logic-buffer:before{content:"\f241"}.ti-logic-nand:before{content:"\f242"}.ti-logic-nor:before{content:"\f243"}.ti-logic-not:before{content:"\f244"}.ti-logic-or:before{content:"\f245"}.ti-logic-xnor:before{content:"\f246"}.ti-logic-xor:before{content:"\f247"}.ti-login:before{content:"\eba7"}.ti-logout:before{content:"\eba8"}.ti-lollipop:before{content:"\efcc"}.ti-lollipop-off:before{content:"\f157"}.ti-luggage:before{content:"\efad"}.ti-luggage-off:before{content:"\f158"}.ti-lungs:before{content:"\ef62"}.ti-lungs-off:before{content:"\f405"}.ti-macro:before{content:"\eeab"}.ti-macro-off:before{content:"\f406"}.ti-magnet:before{content:"\eae3"}.ti-magnet-off:before{content:"\f159"}.ti-mail:before{content:"\eae5"}.ti-mail-fast:before{content:"\f069"}.ti-mail-forward:before{content:"\eeac"}.ti-mail-off:before{content:"\f15a"}.ti-mail-opened:before{content:"\eae4"}.ti-mailbox:before{content:"\eead"}.ti-mailbox-off:before{content:"\f15b"}.ti-man:before{content:"\eae6"}.ti-manual-gearbox:before{content:"\ed7b"}.ti-map:before{content:"\eae9"}.ti-map-2:before{content:"\eae7"}.ti-map-off:before{content:"\f15c"}.ti-map-pin:before{content:"\eae8"}.ti-map-pin-off:before{content:"\ecf3"}.ti-map-pins:before{content:"\ed5e"}.ti-map-search:before{content:"\ef82"}.ti-markdown:before{content:"\ec41"}.ti-markdown-off:before{content:"\f407"}.ti-marquee:before{content:"\ec77"}.ti-marquee-2:before{content:"\eeae"}.ti-marquee-off:before{content:"\f15d"}.ti-mars:before{content:"\ec80"}.ti-mask:before{content:"\eeb0"}.ti-mask-off:before{content:"\eeaf"}.ti-masks-theater:before{content:"\f263"}.ti-masks-theater-off:before{content:"\f408"}.ti-massage:before{content:"\eeb1"}.ti-matchstick:before{content:"\f577"}.ti-math:before{content:"\ebeb"}.ti-math-1-divide-2:before{content:"\f4e2"}.ti-math-1-divide-3:before{content:"\f4e3"}.ti-math-avg:before{content:"\f0f4"}.ti-math-equal-greater:before{content:"\f4e4"}.ti-math-equal-lower:before{content:"\f4e5"}.ti-math-function:before{content:"\eeb2"}.ti-math-function-off:before{content:"\f15e"}.ti-math-function-y:before{content:"\f4e6"}.ti-math-greater:before{content:"\f4e7"}.ti-math-integral:before{content:"\f4e9"}.ti-math-integral-x:before{content:"\f4e8"}.ti-math-integrals:before{content:"\f4ea"}.ti-math-lower:before{content:"\f4eb"}.ti-math-max:before{content:"\f0f5"}.ti-math-min:before{content:"\f0f6"}.ti-math-not:before{content:"\f4ec"}.ti-math-off:before{content:"\f409"}.ti-math-pi:before{content:"\f4ee"}.ti-math-pi-divide-2:before{content:"\f4ed"}.ti-math-symbols:before{content:"\eeb3"}.ti-math-x-divide-2:before{content:"\f4ef"}.ti-math-x-divide-y:before{content:"\f4f1"}.ti-math-x-divide-y-2:before{content:"\f4f0"}.ti-math-x-minus-x:before{content:"\f4f2"}.ti-math-x-minus-y:before{content:"\f4f3"}.ti-math-x-plus-x:before{content:"\f4f4"}.ti-math-x-plus-y:before{content:"\f4f5"}.ti-math-xy:before{content:"\f4f6"}.ti-math-y-minus-y:before{content:"\f4f7"}.ti-math-y-plus-y:before{content:"\f4f8"}.ti-maximize:before{content:"\eaea"}.ti-maximize-off:before{content:"\f15f"}.ti-meat:before{content:"\ef12"}.ti-meat-off:before{content:"\f40a"}.ti-medal:before{content:"\ec78"}.ti-medal-2:before{content:"\efcd"}.ti-medical-cross:before{content:"\ec2f"}.ti-medical-cross-off:before{content:"\f160"}.ti-medicine-syrup:before{content:"\ef63"}.ti-meeple:before{content:"\f514"}.ti-menorah:before{content:"\f58c"}.ti-menu:before{content:"\eaeb"}.ti-menu-2:before{content:"\ec42"}.ti-menu-order:before{content:"\f5f5"}.ti-message:before{content:"\eaef"}.ti-message-2:before{content:"\eaec"}.ti-message-2-code:before{content:"\f012"}.ti-message-2-off:before{content:"\f40b"}.ti-message-2-share:before{content:"\f077"}.ti-message-chatbot:before{content:"\f38a"}.ti-message-circle:before{content:"\eaed"}.ti-message-circle-2:before{content:"\ed3f"}.ti-message-circle-off:before{content:"\ed40"}.ti-message-code:before{content:"\f013"}.ti-message-dots:before{content:"\eaee"}.ti-message-forward:before{content:"\f28f"}.ti-message-language:before{content:"\efae"}.ti-message-off:before{content:"\ed41"}.ti-message-plus:before{content:"\ec9a"}.ti-message-report:before{content:"\ec9b"}.ti-message-share:before{content:"\f078"}.ti-messages:before{content:"\eb6c"}.ti-messages-off:before{content:"\ed42"}.ti-meteor:before{content:"\f1fd"}.ti-meteor-off:before{content:"\f40c"}.ti-mickey:before{content:"\f2a3"}.ti-microphone:before{content:"\eaf0"}.ti-microphone-2:before{content:"\ef2c"}.ti-microphone-2-off:before{content:"\f40d"}.ti-microphone-off:before{content:"\ed16"}.ti-microscope:before{content:"\ef64"}.ti-microscope-off:before{content:"\f40e"}.ti-microwave:before{content:"\f248"}.ti-microwave-off:before{content:"\f264"}.ti-military-award:before{content:"\f079"}.ti-military-rank:before{content:"\efcf"}.ti-milk:before{content:"\ef13"}.ti-milk-off:before{content:"\f40f"}.ti-milkshake:before{content:"\f4c8"}.ti-minimize:before{content:"\eaf1"}.ti-minus:before{content:"\eaf2"}.ti-minus-vertical:before{content:"\eeb4"}.ti-mist:before{content:"\ec30"}.ti-mist-off:before{content:"\f410"}.ti-moneybag:before{content:"\f506"}.ti-mood-angry:before{content:"\f2de"}.ti-mood-annoyed:before{content:"\f2e0"}.ti-mood-annoyed-2:before{content:"\f2df"}.ti-mood-boy:before{content:"\ed2d"}.ti-mood-confuzed:before{content:"\eaf3"}.ti-mood-crazy-happy:before{content:"\ed90"}.ti-mood-cry:before{content:"\ecbb"}.ti-mood-empty:before{content:"\eeb5"}.ti-mood-happy:before{content:"\eaf4"}.ti-mood-kid:before{content:"\ec03"}.ti-mood-look-left:before{content:"\f2c5"}.ti-mood-look-right:before{content:"\f2c6"}.ti-mood-nerd:before{content:"\f2e1"}.ti-mood-nervous:before{content:"\ef96"}.ti-mood-neutral:before{content:"\eaf5"}.ti-mood-off:before{content:"\f161"}.ti-mood-sad:before{content:"\eaf6"}.ti-mood-sad-2:before{content:"\f2e2"}.ti-mood-sad-dizzy:before{content:"\f2e3"}.ti-mood-sad-squint:before{content:"\f2e4"}.ti-mood-sick:before{content:"\f2e5"}.ti-mood-silence:before{content:"\f2e6"}.ti-mood-sing:before{content:"\f2c7"}.ti-mood-smile:before{content:"\eaf7"}.ti-mood-smile-beam:before{content:"\f2e7"}.ti-mood-smile-dizzy:before{content:"\f2e8"}.ti-mood-suprised:before{content:"\ec04"}.ti-mood-tongue:before{content:"\eb95"}.ti-mood-tongue-wink:before{content:"\f2ea"}.ti-mood-tongue-wink-2:before{content:"\f2e9"}.ti-mood-unamused:before{content:"\f2eb"}.ti-mood-wink:before{content:"\f2ed"}.ti-mood-wink-2:before{content:"\f2ec"}.ti-mood-wrrr:before{content:"\f2ee"}.ti-mood-xd:before{content:"\f2ef"}.ti-moon:before{content:"\eaf8"}.ti-moon-2:before{content:"\ece6"}.ti-moon-off:before{content:"\f162"}.ti-moon-stars:before{content:"\ece7"}.ti-moped:before{content:"\ecbc"}.ti-motorbike:before{content:"\eeb6"}.ti-mountain:before{content:"\ef97"}.ti-mountain-off:before{content:"\f411"}.ti-mouse:before{content:"\eaf9"}.ti-mouse-2:before{content:"\f1d7"}.ti-mouse-off:before{content:"\f163"}.ti-moustache:before{content:"\f4c9"}.ti-movie:before{content:"\eafa"}.ti-movie-off:before{content:"\f164"}.ti-mug:before{content:"\eafb"}.ti-mug-off:before{content:"\f165"}.ti-multiplier-0-5x:before{content:"\ef41"}.ti-multiplier-1-5x:before{content:"\ef42"}.ti-multiplier-1x:before{content:"\ef43"}.ti-multiplier-2x:before{content:"\ef44"}.ti-mushroom:before{content:"\ef14"}.ti-mushroom-off:before{content:"\f412"}.ti-music:before{content:"\eafc"}.ti-music-off:before{content:"\f166"}.ti-navigation:before{content:"\f2c8"}.ti-navigation-off:before{content:"\f413"}.ti-needle:before{content:"\f508"}.ti-needle-thread:before{content:"\f507"}.ti-network:before{content:"\f09f"}.ti-network-off:before{content:"\f414"}.ti-new-section:before{content:"\ebc1"}.ti-news:before{content:"\eafd"}.ti-news-off:before{content:"\f167"}.ti-nfc:before{content:"\eeb7"}.ti-nfc-off:before{content:"\f168"}.ti-no-copyright:before{content:"\efb9"}.ti-no-creative-commons:before{content:"\efba"}.ti-no-derivatives:before{content:"\efbb"}.ti-north-star:before{content:"\f014"}.ti-note:before{content:"\eb6d"}.ti-note-off:before{content:"\f169"}.ti-notebook:before{content:"\eb96"}.ti-notebook-off:before{content:"\f415"}.ti-notes:before{content:"\eb6e"}.ti-notes-off:before{content:"\f16a"}.ti-notification:before{content:"\eafe"}.ti-notification-off:before{content:"\f16b"}.ti-number:before{content:"\f1fe"}.ti-number-0:before{content:"\edf0"}.ti-number-1:before{content:"\edf1"}.ti-number-2:before{content:"\edf2"}.ti-number-3:before{content:"\edf3"}.ti-number-4:before{content:"\edf4"}.ti-number-5:before{content:"\edf5"}.ti-number-6:before{content:"\edf6"}.ti-number-7:before{content:"\edf7"}.ti-number-8:before{content:"\edf8"}.ti-number-9:before{content:"\edf9"}.ti-numbers:before{content:"\f015"}.ti-nurse:before{content:"\ef65"}.ti-octagon:before{content:"\ecbd"}.ti-octagon-off:before{content:"\eeb8"}.ti-old:before{content:"\eeb9"}.ti-olympics:before{content:"\eeba"}.ti-olympics-off:before{content:"\f416"}.ti-om:before{content:"\f58d"}.ti-omega:before{content:"\eb97"}.ti-outbound:before{content:"\f249"}.ti-outlet:before{content:"\ebd7"}.ti-oval:before{content:"\f02e"}.ti-oval-vertical:before{content:"\f02d"}.ti-overline:before{content:"\eebb"}.ti-package:before{content:"\eaff"}.ti-package-off:before{content:"\f16c"}.ti-packages:before{content:"\f2c9"}.ti-packge-export:before{content:"\f07a"}.ti-packge-import:before{content:"\f07b"}.ti-pacman:before{content:"\eebc"}.ti-page-break:before{content:"\ec81"}.ti-paint:before{content:"\eb00"}.ti-paint-off:before{content:"\f16d"}.ti-palette:before{content:"\eb01"}.ti-palette-off:before{content:"\f16e"}.ti-panorama-horizontal:before{content:"\ed33"}.ti-panorama-horizontal-off:before{content:"\f417"}.ti-panorama-vertical:before{content:"\ed34"}.ti-panorama-vertical-off:before{content:"\f418"}.ti-paper-bag:before{content:"\f02f"}.ti-paper-bag-off:before{content:"\f16f"}.ti-paperclip:before{content:"\eb02"}.ti-parachute:before{content:"\ed7c"}.ti-parachute-off:before{content:"\f170"}.ti-parentheses:before{content:"\ebd8"}.ti-parentheses-off:before{content:"\f171"}.ti-parking:before{content:"\eb03"}.ti-parking-off:before{content:"\f172"}.ti-password:before{content:"\f4ca"}.ti-paw:before{content:"\eff9"}.ti-paw-off:before{content:"\f419"}.ti-peace:before{content:"\ecbe"}.ti-pencil:before{content:"\eb04"}.ti-pencil-minus:before{content:"\f1eb"}.ti-pencil-off:before{content:"\f173"}.ti-pencil-plus:before{content:"\f1ec"}.ti-pennant:before{content:"\ed7d"}.ti-pennant-2:before{content:"\f06a"}.ti-pennant-off:before{content:"\f174"}.ti-pentagon:before{content:"\efe3"}.ti-pentagon-off:before{content:"\f41a"}.ti-pentagram:before{content:"\f586"}.ti-pepper:before{content:"\ef15"}.ti-pepper-off:before{content:"\f175"}.ti-percentage:before{content:"\ecf4"}.ti-perfume:before{content:"\f509"}.ti-perspective:before{content:"\eebd"}.ti-perspective-off:before{content:"\f176"}.ti-phone:before{content:"\eb09"}.ti-phone-call:before{content:"\eb05"}.ti-phone-calling:before{content:"\ec43"}.ti-phone-check:before{content:"\ec05"}.ti-phone-incoming:before{content:"\eb06"}.ti-phone-off:before{content:"\ecf5"}.ti-phone-outgoing:before{content:"\eb07"}.ti-phone-pause:before{content:"\eb08"}.ti-phone-plus:before{content:"\ec06"}.ti-phone-x:before{content:"\ec07"}.ti-photo:before{content:"\eb0a"}.ti-photo-cancel:before{content:"\f35d"}.ti-photo-check:before{content:"\f35e"}.ti-photo-down:before{content:"\f35f"}.ti-photo-edit:before{content:"\f360"}.ti-photo-heart:before{content:"\f361"}.ti-photo-minus:before{content:"\f362"}.ti-photo-off:before{content:"\ecf6"}.ti-photo-plus:before{content:"\f363"}.ti-photo-search:before{content:"\f364"}.ti-photo-shield:before{content:"\f365"}.ti-photo-star:before{content:"\f366"}.ti-photo-up:before{content:"\f38b"}.ti-photo-x:before{content:"\f367"}.ti-physotherapist:before{content:"\eebe"}.ti-picture-in-picture:before{content:"\ed35"}.ti-picture-in-picture-off:before{content:"\ed43"}.ti-picture-in-picture-on:before{content:"\ed44"}.ti-picture-in-picture-top:before{content:"\efe4"}.ti-pig:before{content:"\ef52"}.ti-pig-money:before{content:"\f38c"}.ti-pig-off:before{content:"\f177"}.ti-pilcrow:before{content:"\f5f6"}.ti-pill:before{content:"\ec44"}.ti-pill-off:before{content:"\f178"}.ti-pills:before{content:"\ef66"}.ti-pin:before{content:"\ec9c"}.ti-ping-pong:before{content:"\f38d"}.ti-pinned:before{content:"\ed60"}.ti-pinned-off:before{content:"\ed5f"}.ti-pizza:before{content:"\edbb"}.ti-pizza-off:before{content:"\f179"}.ti-placeholder:before{content:"\f626"}.ti-plane:before{content:"\eb6f"}.ti-plane-arrival:before{content:"\eb99"}.ti-plane-departure:before{content:"\eb9a"}.ti-plane-inflight:before{content:"\ef98"}.ti-plane-off:before{content:"\f17a"}.ti-plane-tilt:before{content:"\f1ed"}.ti-planet:before{content:"\ec08"}.ti-planet-off:before{content:"\f17b"}.ti-plant:before{content:"\ed50"}.ti-plant-2:before{content:"\ed7e"}.ti-plant-2-off:before{content:"\f17c"}.ti-plant-off:before{content:"\f17d"}.ti-play-card:before{content:"\eebf"}.ti-play-card-off:before{content:"\f17e"}.ti-player-eject:before{content:"\efbc"}.ti-player-pause:before{content:"\ed45"}.ti-player-play:before{content:"\ed46"}.ti-player-record:before{content:"\ed47"}.ti-player-skip-back:before{content:"\ed48"}.ti-player-skip-forward:before{content:"\ed49"}.ti-player-stop:before{content:"\ed4a"}.ti-player-track-next:before{content:"\ed4b"}.ti-player-track-prev:before{content:"\ed4c"}.ti-playlist:before{content:"\eec0"}.ti-playlist-add:before{content:"\f008"}.ti-playlist-off:before{content:"\f17f"}.ti-playlist-x:before{content:"\f009"}.ti-playstation-circle:before{content:"\f2ad"}.ti-playstation-square:before{content:"\f2ae"}.ti-playstation-triangle:before{content:"\f2af"}.ti-playstation-x:before{content:"\f2b0"}.ti-plug:before{content:"\ebd9"}.ti-plug-connected:before{content:"\f00a"}.ti-plug-connected-x:before{content:"\f0a0"}.ti-plug-off:before{content:"\f180"}.ti-plug-x:before{content:"\f0a1"}.ti-plus:before{content:"\eb0b"}.ti-png:before{content:"\f3ad"}.ti-podium:before{content:"\f1d8"}.ti-podium-off:before{content:"\f41b"}.ti-point:before{content:"\eb0c"}.ti-point-off:before{content:"\f181"}.ti-pointer:before{content:"\f265"}.ti-pokeball:before{content:"\eec1"}.ti-pokeball-off:before{content:"\f41c"}.ti-poker-chip:before{content:"\f515"}.ti-polaroid:before{content:"\eec2"}.ti-polygon:before{content:"\efd0"}.ti-polygon-off:before{content:"\f182"}.ti-poo:before{content:"\f258"}.ti-pool:before{content:"\ed91"}.ti-pool-off:before{content:"\f41d"}.ti-power:before{content:"\eb0d"}.ti-pray:before{content:"\ecbf"}.ti-premium-rights:before{content:"\efbd"}.ti-prescription:before{content:"\ef99"}.ti-presentation:before{content:"\eb70"}.ti-presentation-analytics:before{content:"\eec3"}.ti-presentation-off:before{content:"\f183"}.ti-printer:before{content:"\eb0e"}.ti-printer-off:before{content:"\f184"}.ti-prison:before{content:"\ef79"}.ti-prompt:before{content:"\eb0f"}.ti-propeller:before{content:"\eec4"}.ti-propeller-off:before{content:"\f185"}.ti-pumpkin-scary:before{content:"\f587"}.ti-puzzle:before{content:"\eb10"}.ti-puzzle-2:before{content:"\ef83"}.ti-puzzle-off:before{content:"\f186"}.ti-pyramid:before{content:"\eec5"}.ti-pyramid-off:before{content:"\f187"}.ti-qrcode:before{content:"\eb11"}.ti-qrcode-off:before{content:"\f41e"}.ti-question-circle:before{content:"\f637"}.ti-question-mark:before{content:"\ec9d"}.ti-quote:before{content:"\efbe"}.ti-quote-off:before{content:"\f188"}.ti-radar:before{content:"\f017"}.ti-radar-2:before{content:"\f016"}.ti-radar-off:before{content:"\f41f"}.ti-radio:before{content:"\ef2d"}.ti-radio-off:before{content:"\f420"}.ti-radioactive:before{content:"\ecc0"}.ti-radioactive-off:before{content:"\f189"}.ti-radius-bottom-left:before{content:"\eec6"}.ti-radius-bottom-right:before{content:"\eec7"}.ti-radius-top-left:before{content:"\eec8"}.ti-radius-top-right:before{content:"\eec9"}.ti-rainbow:before{content:"\edbc"}.ti-rainbow-off:before{content:"\f18a"}.ti-rating-12-plus:before{content:"\f266"}.ti-rating-14-plus:before{content:"\f267"}.ti-rating-16-plus:before{content:"\f268"}.ti-rating-18-plus:before{content:"\f269"}.ti-rating-21-plus:before{content:"\f26a"}.ti-razor:before{content:"\f4b5"}.ti-razor-electric:before{content:"\f4b4"}.ti-receipt:before{content:"\edfd"}.ti-receipt-2:before{content:"\edfa"}.ti-receipt-off:before{content:"\edfb"}.ti-receipt-refund:before{content:"\edfc"}.ti-receipt-tax:before{content:"\edbd"}.ti-recharging:before{content:"\eeca"}.ti-record-mail:before{content:"\eb12"}.ti-record-mail-off:before{content:"\f18b"}.ti-rectangle:before{content:"\ed37"}.ti-rectangle-vertical:before{content:"\ed36"}.ti-recycle:before{content:"\eb9b"}.ti-recycle-off:before{content:"\f18c"}.ti-refresh:before{content:"\eb13"}.ti-refresh-alert:before{content:"\ed57"}.ti-refresh-dot:before{content:"\efbf"}.ti-refresh-off:before{content:"\f18d"}.ti-regex:before{content:"\f31f"}.ti-regex-off:before{content:"\f421"}.ti-registered:before{content:"\eb14"}.ti-relation-many-to-many:before{content:"\ed7f"}.ti-relation-one-to-many:before{content:"\ed80"}.ti-relation-one-to-one:before{content:"\ed81"}.ti-reload:before{content:"\f3ae"}.ti-repeat:before{content:"\eb72"}.ti-repeat-off:before{content:"\f18e"}.ti-repeat-once:before{content:"\eb71"}.ti-replace:before{content:"\ebc7"}.ti-replace-off:before{content:"\f422"}.ti-report:before{content:"\eece"}.ti-report-analytics:before{content:"\eecb"}.ti-report-medical:before{content:"\eecc"}.ti-report-money:before{content:"\eecd"}.ti-report-off:before{content:"\f18f"}.ti-report-search:before{content:"\ef84"}.ti-resize:before{content:"\eecf"}.ti-ribbon-health:before{content:"\f58e"}.ti-ripple:before{content:"\ed82"}.ti-ripple-off:before{content:"\f190"}.ti-road:before{content:"\f018"}.ti-road-off:before{content:"\f191"}.ti-road-sign:before{content:"\ecdd"}.ti-robot:before{content:"\f00b"}.ti-robot-off:before{content:"\f192"}.ti-rocket:before{content:"\ec45"}.ti-rocket-off:before{content:"\f193"}.ti-roller-skating:before{content:"\efd1"}.ti-rollercoaster:before{content:"\f0a2"}.ti-rollercoaster-off:before{content:"\f423"}.ti-rosette:before{content:"\f599"}.ti-rosette-number-0:before{content:"\f58f"}.ti-rosette-number-1:before{content:"\f590"}.ti-rosette-number-2:before{content:"\f591"}.ti-rosette-number-3:before{content:"\f592"}.ti-rosette-number-4:before{content:"\f593"}.ti-rosette-number-5:before{content:"\f594"}.ti-rosette-number-6:before{content:"\f595"}.ti-rosette-number-7:before{content:"\f596"}.ti-rosette-number-8:before{content:"\f597"}.ti-rosette-number-9:before{content:"\f598"}.ti-rotate:before{content:"\eb16"}.ti-rotate-2:before{content:"\ebb4"}.ti-rotate-360:before{content:"\ef85"}.ti-rotate-clockwise:before{content:"\eb15"}.ti-rotate-clockwise-2:before{content:"\ebb5"}.ti-rotate-dot:before{content:"\efe5"}.ti-rotate-rectangle:before{content:"\ec15"}.ti-route:before{content:"\eb17"}.ti-route-2:before{content:"\f4b6"}.ti-route-off:before{content:"\f194"}.ti-router:before{content:"\eb18"}.ti-router-off:before{content:"\f424"}.ti-row-insert-bottom:before{content:"\eed0"}.ti-row-insert-top:before{content:"\eed1"}.ti-rss:before{content:"\eb19"}.ti-rubber-stamp:before{content:"\f5ab"}.ti-rubber-stamp-off:before{content:"\f5aa"}.ti-ruler:before{content:"\eb1a"}.ti-ruler-2:before{content:"\eed2"}.ti-ruler-2-off:before{content:"\f195"}.ti-ruler-3:before{content:"\f290"}.ti-ruler-measure:before{content:"\f291"}.ti-ruler-off:before{content:"\f196"}.ti-run:before{content:"\ec82"}.ti-s-turn-down:before{content:"\f516"}.ti-s-turn-left:before{content:"\f517"}.ti-s-turn-right:before{content:"\f518"}.ti-s-turn-up:before{content:"\f519"}.ti-sailboat:before{content:"\ec83"}.ti-sailboat-2:before{content:"\f5f7"}.ti-sailboat-off:before{content:"\f425"}.ti-salad:before{content:"\f50a"}.ti-salt:before{content:"\ef16"}.ti-satellite:before{content:"\eed3"}.ti-satellite-off:before{content:"\f197"}.ti-sausage:before{content:"\ef17"}.ti-scale:before{content:"\ebc2"}.ti-scale-off:before{content:"\f198"}.ti-scale-outline:before{content:"\ef53"}.ti-scale-outline-off:before{content:"\f199"}.ti-scan:before{content:"\ebc8"}.ti-scan-eye:before{content:"\f1ff"}.ti-schema:before{content:"\f200"}.ti-schema-off:before{content:"\f426"}.ti-school:before{content:"\ecf7"}.ti-school-bell:before{content:"\f64a"}.ti-school-off:before{content:"\f19a"}.ti-scissors:before{content:"\eb1b"}.ti-scissors-off:before{content:"\f19b"}.ti-scooter:before{content:"\ec6c"}.ti-scooter-electric:before{content:"\ecc1"}.ti-screen-share:before{content:"\ed18"}.ti-screen-share-off:before{content:"\ed17"}.ti-screenshot:before{content:"\f201"}.ti-scribble:before{content:"\f0a3"}.ti-scribble-off:before{content:"\f427"}.ti-script:before{content:"\f2da"}.ti-script-minus:before{content:"\f2d7"}.ti-script-plus:before{content:"\f2d8"}.ti-script-x:before{content:"\f2d9"}.ti-scuba-mask:before{content:"\eed4"}.ti-scuba-mask-off:before{content:"\f428"}.ti-sdk:before{content:"\f3af"}.ti-search:before{content:"\eb1c"}.ti-search-off:before{content:"\f19c"}.ti-section:before{content:"\eed5"}.ti-section-sign:before{content:"\f019"}.ti-seeding:before{content:"\ed51"}.ti-seeding-off:before{content:"\f19d"}.ti-select:before{content:"\ec9e"}.ti-selector:before{content:"\eb1d"}.ti-send:before{content:"\eb1e"}.ti-send-off:before{content:"\f429"}.ti-seo:before{content:"\f26b"}.ti-separator:before{content:"\ebda"}.ti-separator-horizontal:before{content:"\ec79"}.ti-separator-vertical:before{content:"\ec7a"}.ti-server:before{content:"\eb1f"}.ti-server-2:before{content:"\f07c"}.ti-server-bolt:before{content:"\f320"}.ti-server-cog:before{content:"\f321"}.ti-server-off:before{content:"\f19e"}.ti-servicemark:before{content:"\ec09"}.ti-settings:before{content:"\eb20"}.ti-settings-2:before{content:"\f5ac"}.ti-settings-automation:before{content:"\eed6"}.ti-settings-off:before{content:"\f19f"}.ti-shadow:before{content:"\eed8"}.ti-shadow-off:before{content:"\eed7"}.ti-shape:before{content:"\eb9c"}.ti-shape-2:before{content:"\eed9"}.ti-shape-3:before{content:"\eeda"}.ti-shape-off:before{content:"\f1a0"}.ti-share:before{content:"\eb21"}.ti-share-off:before{content:"\f1a1"}.ti-shield:before{content:"\eb24"}.ti-shield-check:before{content:"\eb22"}.ti-shield-checkered:before{content:"\ef9a"}.ti-shield-chevron:before{content:"\ef9b"}.ti-shield-half:before{content:"\f358"}.ti-shield-half-filled:before{content:"\f357"}.ti-shield-lock:before{content:"\ed58"}.ti-shield-off:before{content:"\ecf8"}.ti-shield-x:before{content:"\eb23"}.ti-ship:before{content:"\ec84"}.ti-ship-off:before{content:"\f42a"}.ti-shirt:before{content:"\ec0a"}.ti-shirt-off:before{content:"\f1a2"}.ti-shirt-sport:before{content:"\f26c"}.ti-shoe:before{content:"\efd2"}.ti-shoe-off:before{content:"\f1a4"}.ti-shopping-bag:before{content:"\f5f8"}.ti-shopping-cart:before{content:"\eb25"}.ti-shopping-cart-discount:before{content:"\eedb"}.ti-shopping-cart-off:before{content:"\eedc"}.ti-shopping-cart-plus:before{content:"\eedd"}.ti-shopping-cart-x:before{content:"\eede"}.ti-shovel:before{content:"\f1d9"}.ti-shredder:before{content:"\eedf"}.ti-sign-left:before{content:"\f06b"}.ti-sign-right:before{content:"\f06c"}.ti-signal-3g:before{content:"\f1ee"}.ti-signal-4g:before{content:"\f1ef"}.ti-signal-4g-plus:before{content:"\f259"}.ti-signal-5g:before{content:"\f1f0"}.ti-signature:before{content:"\eee0"}.ti-signature-off:before{content:"\f1a5"}.ti-sitemap:before{content:"\eb9d"}.ti-sitemap-off:before{content:"\f1a6"}.ti-skateboard:before{content:"\ecc2"}.ti-skateboard-off:before{content:"\f42b"}.ti-skull:before{content:"\f292"}.ti-slash:before{content:"\f4f9"}.ti-slashes:before{content:"\f588"}.ti-sleigh:before{content:"\ef9c"}.ti-slice:before{content:"\ebdb"}.ti-slideshow:before{content:"\ebc9"}.ti-smart-home:before{content:"\ecde"}.ti-smart-home-off:before{content:"\f1a7"}.ti-smoking:before{content:"\ecc4"}.ti-smoking-no:before{content:"\ecc3"}.ti-snowflake:before{content:"\ec0b"}.ti-snowflake-off:before{content:"\f1a8"}.ti-snowman:before{content:"\f26d"}.ti-soccer-field:before{content:"\ed92"}.ti-social:before{content:"\ebec"}.ti-social-off:before{content:"\f1a9"}.ti-sock:before{content:"\eee1"}.ti-sofa:before{content:"\efaf"}.ti-sofa-off:before{content:"\f42c"}.ti-sort-0-9:before{content:"\f54d"}.ti-sort-9-0:before{content:"\f54e"}.ti-sort-a-z:before{content:"\f54f"}.ti-sort-ascending:before{content:"\eb26"}.ti-sort-ascending-2:before{content:"\eee2"}.ti-sort-ascending-letters:before{content:"\ef18"}.ti-sort-ascending-numbers:before{content:"\ef19"}.ti-sort-descending:before{content:"\eb27"}.ti-sort-descending-2:before{content:"\eee3"}.ti-sort-descending-letters:before{content:"\ef1a"}.ti-sort-descending-numbers:before{content:"\ef1b"}.ti-sort-z-a:before{content:"\f550"}.ti-sos:before{content:"\f24a"}.ti-soup:before{content:"\ef2e"}.ti-soup-off:before{content:"\f42d"}.ti-source-code:before{content:"\f4a2"}.ti-space:before{content:"\ec0c"}.ti-space-off:before{content:"\f1aa"}.ti-spacing-horizontal:before{content:"\ef54"}.ti-spacing-vertical:before{content:"\ef55"}.ti-spade:before{content:"\effa"}.ti-speakerphone:before{content:"\ed61"}.ti-speedboat:before{content:"\ed93"}.ti-spider:before{content:"\f293"}.ti-spiral:before{content:"\f294"}.ti-spiral-off:before{content:"\f42e"}.ti-sport-billard:before{content:"\eee4"}.ti-spray:before{content:"\f50b"}.ti-spy:before{content:"\f227"}.ti-spy-off:before{content:"\f42f"}.ti-square:before{content:"\eb2c"}.ti-square-arrow-down:before{content:"\f4b7"}.ti-square-arrow-left:before{content:"\f4b8"}.ti-square-arrow-right:before{content:"\f4b9"}.ti-square-arrow-up:before{content:"\f4ba"}.ti-square-asterisk:before{content:"\f01a"}.ti-square-check:before{content:"\eb28"}.ti-square-chevron-down:before{content:"\f627"}.ti-square-chevron-left:before{content:"\f628"}.ti-square-chevron-right:before{content:"\f629"}.ti-square-chevron-up:before{content:"\f62a"}.ti-square-chevrons-down:before{content:"\f64b"}.ti-square-chevrons-left:before{content:"\f64c"}.ti-square-chevrons-right:before{content:"\f64d"}.ti-square-chevrons-up:before{content:"\f64e"}.ti-square-dot:before{content:"\ed59"}.ti-square-f0:before{content:"\f526"}.ti-square-f1:before{content:"\f527"}.ti-square-f2:before{content:"\f528"}.ti-square-f3:before{content:"\f529"}.ti-square-f4:before{content:"\f52a"}.ti-square-f5:before{content:"\f52b"}.ti-square-f6:before{content:"\f52c"}.ti-square-f7:before{content:"\f52d"}.ti-square-f8:before{content:"\f52e"}.ti-square-f9:before{content:"\f52f"}.ti-square-forbid:before{content:"\ed5b"}.ti-square-forbid-2:before{content:"\ed5a"}.ti-square-half:before{content:"\effb"}.ti-square-key:before{content:"\f638"}.ti-square-letter-a:before{content:"\f47c"}.ti-square-letter-b:before{content:"\f47d"}.ti-square-letter-c:before{content:"\f47e"}.ti-square-letter-d:before{content:"\f47f"}.ti-square-letter-e:before{content:"\f480"}.ti-square-letter-f:before{content:"\f481"}.ti-square-letter-g:before{content:"\f482"}.ti-square-letter-h:before{content:"\f483"}.ti-square-letter-i:before{content:"\f484"}.ti-square-letter-j:before{content:"\f485"}.ti-square-letter-k:before{content:"\f486"}.ti-square-letter-l:before{content:"\f487"}.ti-square-letter-m:before{content:"\f488"}.ti-square-letter-n:before{content:"\f489"}.ti-square-letter-o:before{content:"\f48a"}.ti-square-letter-p:before{content:"\f48b"}.ti-square-letter-q:before{content:"\f48c"}.ti-square-letter-r:before{content:"\f48d"}.ti-square-letter-s:before{content:"\f48e"}.ti-square-letter-t:before{content:"\f48f"}.ti-square-letter-u:before{content:"\f490"}.ti-square-letter-v:before{content:"\f4bb"}.ti-square-letter-w:before{content:"\f491"}.ti-square-letter-x:before{content:"\f4bc"}.ti-square-letter-y:before{content:"\f492"}.ti-square-letter-z:before{content:"\f493"}.ti-square-minus:before{content:"\eb29"}.ti-square-number-0:before{content:"\eee5"}.ti-square-number-1:before{content:"\eee6"}.ti-square-number-2:before{content:"\eee7"}.ti-square-number-3:before{content:"\eee8"}.ti-square-number-4:before{content:"\eee9"}.ti-square-number-5:before{content:"\eeea"}.ti-square-number-6:before{content:"\eeeb"}.ti-square-number-7:before{content:"\eeec"}.ti-square-number-8:before{content:"\eeed"}.ti-square-number-9:before{content:"\eeee"}.ti-square-off:before{content:"\eeef"}.ti-square-plus:before{content:"\eb2a"}.ti-square-root:before{content:"\eef1"}.ti-square-root-2:before{content:"\eef0"}.ti-square-rotated:before{content:"\ecdf"}.ti-square-rotated-forbid:before{content:"\f01c"}.ti-square-rotated-forbid-2:before{content:"\f01b"}.ti-square-rotated-off:before{content:"\eef2"}.ti-square-rounded:before{content:"\f59a"}.ti-square-rounded-arrow-down:before{content:"\f639"}.ti-square-rounded-arrow-left:before{content:"\f63a"}.ti-square-rounded-arrow-right:before{content:"\f63b"}.ti-square-rounded-arrow-up:before{content:"\f63c"}.ti-square-rounded-check:before{content:"\f63d"}.ti-square-rounded-chevron-down:before{content:"\f62b"}.ti-square-rounded-chevron-left:before{content:"\f62c"}.ti-square-rounded-chevron-right:before{content:"\f62d"}.ti-square-rounded-chevron-up:before{content:"\f62e"}.ti-square-rounded-chevrons-down:before{content:"\f64f"}.ti-square-rounded-chevrons-left:before{content:"\f650"}.ti-square-rounded-chevrons-right:before{content:"\f651"}.ti-square-rounded-chevrons-up:before{content:"\f652"}.ti-square-rounded-letter-a:before{content:"\f5ae"}.ti-square-rounded-letter-b:before{content:"\f5af"}.ti-square-rounded-letter-c:before{content:"\f5b0"}.ti-square-rounded-letter-d:before{content:"\f5b1"}.ti-square-rounded-letter-e:before{content:"\f5b2"}.ti-square-rounded-letter-f:before{content:"\f5b3"}.ti-square-rounded-letter-g:before{content:"\f5b4"}.ti-square-rounded-letter-h:before{content:"\f5b5"}.ti-square-rounded-letter-i:before{content:"\f5b6"}.ti-square-rounded-letter-j:before{content:"\f5b7"}.ti-square-rounded-letter-k:before{content:"\f5b8"}.ti-square-rounded-letter-l:before{content:"\f5b9"}.ti-square-rounded-letter-m:before{content:"\f5ba"}.ti-square-rounded-letter-n:before{content:"\f5bb"}.ti-square-rounded-letter-o:before{content:"\f5bc"}.ti-square-rounded-letter-p:before{content:"\f5bd"}.ti-square-rounded-letter-q:before{content:"\f5be"}.ti-square-rounded-letter-r:before{content:"\f5bf"}.ti-square-rounded-letter-s:before{content:"\f5c0"}.ti-square-rounded-letter-t:before{content:"\f5c1"}.ti-square-rounded-letter-u:before{content:"\f5c2"}.ti-square-rounded-letter-v:before{content:"\f5c3"}.ti-square-rounded-letter-w:before{content:"\f5c4"}.ti-square-rounded-letter-x:before{content:"\f5c5"}.ti-square-rounded-letter-y:before{content:"\f5c6"}.ti-square-rounded-letter-z:before{content:"\f5c7"}.ti-square-rounded-minus:before{content:"\f63e"}.ti-square-rounded-number-0:before{content:"\f5c8"}.ti-square-rounded-number-1:before{content:"\f5c9"}.ti-square-rounded-number-2:before{content:"\f5ca"}.ti-square-rounded-number-3:before{content:"\f5cb"}.ti-square-rounded-number-4:before{content:"\f5cc"}.ti-square-rounded-number-5:before{content:"\f5cd"}.ti-square-rounded-number-6:before{content:"\f5ce"}.ti-square-rounded-number-7:before{content:"\f5cf"}.ti-square-rounded-number-8:before{content:"\f5d0"}.ti-square-rounded-number-9:before{content:"\f5d1"}.ti-square-rounded-plus:before{content:"\f63f"}.ti-square-rounded-x:before{content:"\f640"}.ti-square-toggle:before{content:"\eef4"}.ti-square-toggle-horizontal:before{content:"\eef3"}.ti-square-x:before{content:"\eb2b"}.ti-squares-diagonal:before{content:"\eef5"}.ti-squares-filled:before{content:"\eef6"}.ti-stack:before{content:"\eb2d"}.ti-stack-2:before{content:"\eef7"}.ti-stack-3:before{content:"\ef9d"}.ti-stack-pop:before{content:"\f234"}.ti-stack-push:before{content:"\f235"}.ti-stairs:before{content:"\eca6"}.ti-stairs-down:before{content:"\eca4"}.ti-stairs-up:before{content:"\eca5"}.ti-star:before{content:"\eb2e"}.ti-star-half:before{content:"\ed19"}.ti-star-off:before{content:"\ed62"}.ti-stars:before{content:"\ed38"}.ti-stars-off:before{content:"\f430"}.ti-status-change:before{content:"\f3b0"}.ti-steam:before{content:"\f24b"}.ti-steering-wheel:before{content:"\ec7b"}.ti-steering-wheel-off:before{content:"\f431"}.ti-step-into:before{content:"\ece0"}.ti-step-out:before{content:"\ece1"}.ti-stereo-glasses:before{content:"\f4cb"}.ti-stethoscope:before{content:"\edbe"}.ti-stethoscope-off:before{content:"\f432"}.ti-sticker:before{content:"\eb2f"}.ti-storm:before{content:"\f24c"}.ti-storm-off:before{content:"\f433"}.ti-stretching:before{content:"\f2db"}.ti-strikethrough:before{content:"\eb9e"}.ti-submarine:before{content:"\ed94"}.ti-subscript:before{content:"\eb9f"}.ti-subtask:before{content:"\ec9f"}.ti-sum:before{content:"\eb73"}.ti-sum-off:before{content:"\f1ab"}.ti-sun:before{content:"\eb30"}.ti-sun-high:before{content:"\f236"}.ti-sun-low:before{content:"\f237"}.ti-sun-moon:before{content:"\f4a3"}.ti-sun-off:before{content:"\ed63"}.ti-sun-wind:before{content:"\f238"}.ti-sunglasses:before{content:"\f239"}.ti-sunrise:before{content:"\ef1c"}.ti-sunset:before{content:"\ec31"}.ti-sunset-2:before{content:"\f23a"}.ti-superscript:before{content:"\eba0"}.ti-svg:before{content:"\f25a"}.ti-swimming:before{content:"\ec92"}.ti-swipe:before{content:"\f551"}.ti-switch:before{content:"\eb33"}.ti-switch-2:before{content:"\edbf"}.ti-switch-3:before{content:"\edc0"}.ti-switch-horizontal:before{content:"\eb31"}.ti-switch-vertical:before{content:"\eb32"}.ti-sword:before{content:"\f030"}.ti-sword-off:before{content:"\f434"}.ti-swords:before{content:"\f132"}.ti-table:before{content:"\eba1"}.ti-table-alias:before{content:"\f25b"}.ti-table-export:before{content:"\eef8"}.ti-table-import:before{content:"\eef9"}.ti-table-off:before{content:"\eefa"}.ti-table-options:before{content:"\f25c"}.ti-table-shortcut:before{content:"\f25d"}.ti-tag:before{content:"\eb34"}.ti-tag-off:before{content:"\efc0"}.ti-tags:before{content:"\ef86"}.ti-tags-off:before{content:"\efc1"}.ti-tallymark-1:before{content:"\ec46"}.ti-tallymark-2:before{content:"\ec47"}.ti-tallymark-3:before{content:"\ec48"}.ti-tallymark-4:before{content:"\ec49"}.ti-tallymarks:before{content:"\ec4a"}.ti-tank:before{content:"\ed95"}.ti-target:before{content:"\eb35"}.ti-target-arrow:before{content:"\f51a"}.ti-target-off:before{content:"\f1ad"}.ti-teapot:before{content:"\f552"}.ti-telescope:before{content:"\f07d"}.ti-telescope-off:before{content:"\f1ae"}.ti-temperature:before{content:"\eb38"}.ti-temperature-celsius:before{content:"\eb36"}.ti-temperature-fahrenheit:before{content:"\eb37"}.ti-temperature-minus:before{content:"\ebed"}.ti-temperature-off:before{content:"\f1af"}.ti-temperature-plus:before{content:"\ebee"}.ti-template:before{content:"\eb39"}.ti-template-off:before{content:"\f1b0"}.ti-tent:before{content:"\eefb"}.ti-tent-off:before{content:"\f435"}.ti-terminal:before{content:"\ebdc"}.ti-terminal-2:before{content:"\ebef"}.ti-test-pipe:before{content:"\eb3a"}.ti-test-pipe-2:before{content:"\f0a4"}.ti-test-pipe-off:before{content:"\f1b1"}.ti-tex:before{content:"\f4e0"}.ti-text-caption:before{content:"\f4a4"}.ti-text-color:before{content:"\f2dc"}.ti-text-decrease:before{content:"\f202"}.ti-text-direction-ltr:before{content:"\eefc"}.ti-text-direction-rtl:before{content:"\eefd"}.ti-text-increase:before{content:"\f203"}.ti-text-orientation:before{content:"\f2a4"}.ti-text-plus:before{content:"\f2a5"}.ti-text-recognition:before{content:"\f204"}.ti-text-resize:before{content:"\ef87"}.ti-text-size:before{content:"\f2b1"}.ti-text-spellcheck:before{content:"\f2a6"}.ti-text-wrap:before{content:"\ebdd"}.ti-text-wrap-disabled:before{content:"\eca7"}.ti-texture:before{content:"\f51b"}.ti-thermometer:before{content:"\ef67"}.ti-thumb-down:before{content:"\eb3b"}.ti-thumb-down-off:before{content:"\f436"}.ti-thumb-up:before{content:"\eb3c"}.ti-thumb-up-off:before{content:"\f437"}.ti-tic-tac:before{content:"\f51c"}.ti-ticket:before{content:"\eb3d"}.ti-ticket-off:before{content:"\f1b2"}.ti-tie:before{content:"\f07e"}.ti-tilde:before{content:"\f4a5"}.ti-tilt-shift:before{content:"\eefe"}.ti-tilt-shift-off:before{content:"\f1b3"}.ti-timeline:before{content:"\f031"}.ti-timeline-event:before{content:"\f553"}.ti-timeline-event-exclamation:before{content:"\f662"}.ti-timeline-event-minus:before{content:"\f663"}.ti-timeline-event-plus:before{content:"\f664"}.ti-timeline-event-text:before{content:"\f665"}.ti-timeline-event-x:before{content:"\f666"}.ti-tir:before{content:"\ebf0"}.ti-toggle-left:before{content:"\eb3e"}.ti-toggle-right:before{content:"\eb3f"}.ti-toilet-paper:before{content:"\efd3"}.ti-toilet-paper-off:before{content:"\f1b4"}.ti-tool:before{content:"\eb40"}.ti-tools:before{content:"\ebca"}.ti-tools-kitchen:before{content:"\ed64"}.ti-tools-kitchen-2:before{content:"\eeff"}.ti-tools-kitchen-2-off:before{content:"\f1b5"}.ti-tools-kitchen-off:before{content:"\f1b6"}.ti-tools-off:before{content:"\f1b7"}.ti-tooltip:before{content:"\f2dd"}.ti-topology-bus:before{content:"\f5d9"}.ti-topology-complex:before{content:"\f5da"}.ti-topology-full:before{content:"\f5dc"}.ti-topology-full-hierarchy:before{content:"\f5db"}.ti-topology-ring:before{content:"\f5df"}.ti-topology-ring-2:before{content:"\f5dd"}.ti-topology-ring-3:before{content:"\f5de"}.ti-topology-star:before{content:"\f5e5"}.ti-topology-star-2:before{content:"\f5e0"}.ti-topology-star-3:before{content:"\f5e1"}.ti-topology-star-ring:before{content:"\f5e4"}.ti-topology-star-ring-2:before{content:"\f5e2"}.ti-topology-star-ring-3:before{content:"\f5e3"}.ti-torii:before{content:"\f59b"}.ti-tornado:before{content:"\ece2"}.ti-tournament:before{content:"\ecd0"}.ti-tower:before{content:"\f2cb"}.ti-tower-off:before{content:"\f2ca"}.ti-track:before{content:"\ef00"}.ti-tractor:before{content:"\ec0d"}.ti-trademark:before{content:"\ec0e"}.ti-traffic-cone:before{content:"\ec0f"}.ti-traffic-cone-off:before{content:"\f1b8"}.ti-traffic-lights:before{content:"\ed39"}.ti-traffic-lights-off:before{content:"\f1b9"}.ti-train:before{content:"\ed96"}.ti-transfer-in:before{content:"\ef2f"}.ti-transfer-out:before{content:"\ef30"}.ti-transform:before{content:"\f38e"}.ti-transition-bottom:before{content:"\f2b2"}.ti-transition-left:before{content:"\f2b3"}.ti-transition-right:before{content:"\f2b4"}.ti-transition-top:before{content:"\f2b5"}.ti-trash:before{content:"\eb41"}.ti-trash-off:before{content:"\ed65"}.ti-trash-x:before{content:"\ef88"}.ti-tree:before{content:"\ef01"}.ti-trees:before{content:"\ec10"}.ti-trekking:before{content:"\f5ad"}.ti-trending-down:before{content:"\eb42"}.ti-trending-down-2:before{content:"\edc1"}.ti-trending-down-3:before{content:"\edc2"}.ti-trending-up:before{content:"\eb43"}.ti-trending-up-2:before{content:"\edc3"}.ti-trending-up-3:before{content:"\edc4"}.ti-triangle:before{content:"\eb44"}.ti-triangle-inverted:before{content:"\f01d"}.ti-triangle-off:before{content:"\ef02"}.ti-triangle-square-circle:before{content:"\ece8"}.ti-triangles:before{content:"\f0a5"}.ti-trident:before{content:"\ecc5"}.ti-trolley:before{content:"\f4cc"}.ti-trophy:before{content:"\eb45"}.ti-trophy-off:before{content:"\f438"}.ti-trowel:before{content:"\f368"}.ti-truck:before{content:"\ebc4"}.ti-truck-delivery:before{content:"\ec4b"}.ti-truck-loading:before{content:"\f1da"}.ti-truck-off:before{content:"\ef03"}.ti-truck-return:before{content:"\ec4c"}.ti-txt:before{content:"\f3b1"}.ti-typography:before{content:"\ebc5"}.ti-typography-off:before{content:"\f1ba"}.ti-uf-off:before{content:"\f26e"}.ti-ufo:before{content:"\f26f"}.ti-umbrella:before{content:"\ebf1"}.ti-umbrella-off:before{content:"\f1bb"}.ti-underline:before{content:"\eba2"}.ti-unlink:before{content:"\eb46"}.ti-upload:before{content:"\eb47"}.ti-urgent:before{content:"\eb48"}.ti-usb:before{content:"\f00c"}.ti-user:before{content:"\eb4d"}.ti-user-check:before{content:"\eb49"}.ti-user-circle:before{content:"\ef68"}.ti-user-exclamation:before{content:"\ec12"}.ti-user-minus:before{content:"\eb4a"}.ti-user-off:before{content:"\ecf9"}.ti-user-plus:before{content:"\eb4b"}.ti-user-search:before{content:"\ef89"}.ti-user-x:before{content:"\eb4c"}.ti-users:before{content:"\ebf2"}.ti-uv-index:before{content:"\f3b2"}.ti-ux-circle:before{content:"\f369"}.ti-vaccine:before{content:"\ef04"}.ti-vaccine-bottle:before{content:"\ef69"}.ti-vaccine-bottle-off:before{content:"\f439"}.ti-vaccine-off:before{content:"\f1bc"}.ti-vacuum-cleaner:before{content:"\f5e6"}.ti-variable:before{content:"\ef05"}.ti-variable-minus:before{content:"\f36a"}.ti-variable-off:before{content:"\f1bd"}.ti-variable-plus:before{content:"\f36b"}.ti-vector:before{content:"\eca9"}.ti-vector-bezier:before{content:"\ef1d"}.ti-vector-bezier-2:before{content:"\f1a3"}.ti-vector-bezier-arc:before{content:"\f4cd"}.ti-vector-bezier-circle:before{content:"\f4ce"}.ti-vector-off:before{content:"\f1be"}.ti-vector-spline:before{content:"\f565"}.ti-vector-triangle:before{content:"\eca8"}.ti-vector-triangle-off:before{content:"\f1bf"}.ti-venus:before{content:"\ec86"}.ti-versions:before{content:"\ed52"}.ti-versions-off:before{content:"\f1c0"}.ti-video:before{content:"\ed22"}.ti-video-minus:before{content:"\ed1f"}.ti-video-off:before{content:"\ed20"}.ti-video-plus:before{content:"\ed21"}.ti-view-360:before{content:"\ed84"}.ti-view-360-off:before{content:"\f1c1"}.ti-viewfinder:before{content:"\eb4e"}.ti-viewfinder-off:before{content:"\f1c2"}.ti-viewport-narrow:before{content:"\ebf3"}.ti-viewport-wide:before{content:"\ebf4"}.ti-vinyl:before{content:"\f00d"}.ti-vip:before{content:"\f3b3"}.ti-vip-off:before{content:"\f43a"}.ti-virus:before{content:"\eb74"}.ti-virus-off:before{content:"\ed66"}.ti-virus-search:before{content:"\ed67"}.ti-vocabulary:before{content:"\ef1e"}.ti-vocabulary-off:before{content:"\f43b"}.ti-volume:before{content:"\eb51"}.ti-volume-2:before{content:"\eb4f"}.ti-volume-3:before{content:"\eb50"}.ti-volume-off:before{content:"\f1c3"}.ti-walk:before{content:"\ec87"}.ti-wall:before{content:"\ef7a"}.ti-wall-off:before{content:"\f43c"}.ti-wallet:before{content:"\eb75"}.ti-wallet-off:before{content:"\f1c4"}.ti-wallpaper:before{content:"\ef56"}.ti-wallpaper-off:before{content:"\f1c5"}.ti-wand:before{content:"\ebcb"}.ti-wand-off:before{content:"\f1c6"}.ti-wash:before{content:"\f311"}.ti-wash-dry:before{content:"\f304"}.ti-wash-dry-1:before{content:"\f2fa"}.ti-wash-dry-2:before{content:"\f2fb"}.ti-wash-dry-3:before{content:"\f2fc"}.ti-wash-dry-a:before{content:"\f2fd"}.ti-wash-dry-dip:before{content:"\f2fe"}.ti-wash-dry-f:before{content:"\f2ff"}.ti-wash-dry-hang:before{content:"\f300"}.ti-wash-dry-off:before{content:"\f301"}.ti-wash-dry-p:before{content:"\f302"}.ti-wash-dry-shade:before{content:"\f303"}.ti-wash-dry-w:before{content:"\f322"}.ti-wash-dryclean:before{content:"\f305"}.ti-wash-dryclean-off:before{content:"\f323"}.ti-wash-gentle:before{content:"\f306"}.ti-wash-machine:before{content:"\f25e"}.ti-wash-off:before{content:"\f307"}.ti-wash-press:before{content:"\f308"}.ti-wash-temperature-1:before{content:"\f309"}.ti-wash-temperature-2:before{content:"\f30a"}.ti-wash-temperature-3:before{content:"\f30b"}.ti-wash-temperature-4:before{content:"\f30c"}.ti-wash-temperature-5:before{content:"\f30d"}.ti-wash-temperature-6:before{content:"\f30e"}.ti-wash-tumble-dry:before{content:"\f30f"}.ti-wash-tumble-off:before{content:"\f310"}.ti-wave-saw-tool:before{content:"\ecd3"}.ti-wave-sine:before{content:"\ecd4"}.ti-wave-square:before{content:"\ecd5"}.ti-webhook:before{content:"\f01e"}.ti-webhook-off:before{content:"\f43d"}.ti-weight:before{content:"\f589"}.ti-wheelchair:before{content:"\f1db"}.ti-wheelchair-off:before{content:"\f43e"}.ti-whirl:before{content:"\f51d"}.ti-wifi:before{content:"\eb52"}.ti-wifi-0:before{content:"\eba3"}.ti-wifi-1:before{content:"\eba4"}.ti-wifi-2:before{content:"\eba5"}.ti-wifi-off:before{content:"\ecfa"}.ti-wind:before{content:"\ec34"}.ti-wind-off:before{content:"\f1c7"}.ti-windmill:before{content:"\ed85"}.ti-windmill-off:before{content:"\f1c8"}.ti-window:before{content:"\ef06"}.ti-window-maximize:before{content:"\f1f1"}.ti-window-minimize:before{content:"\f1f2"}.ti-window-off:before{content:"\f1c9"}.ti-windsock:before{content:"\f06d"}.ti-wiper:before{content:"\ecab"}.ti-wiper-wash:before{content:"\ecaa"}.ti-woman:before{content:"\eb53"}.ti-wood:before{content:"\f359"}.ti-world:before{content:"\eb54"}.ti-world-download:before{content:"\ef8a"}.ti-world-latitude:before{content:"\ed2e"}.ti-world-longitude:before{content:"\ed2f"}.ti-world-off:before{content:"\f1ca"}.ti-world-upload:before{content:"\ef8b"}.ti-world-www:before{content:"\f38f"}.ti-wrecking-ball:before{content:"\ed97"}.ti-writing:before{content:"\ef08"}.ti-writing-off:before{content:"\f1cb"}.ti-writing-sign:before{content:"\ef07"}.ti-writing-sign-off:before{content:"\f1cc"}.ti-x:before{content:"\eb55"}.ti-xbox-a:before{content:"\f2b6"}.ti-xbox-b:before{content:"\f2b7"}.ti-xbox-x:before{content:"\f2b8"}.ti-xbox-y:before{content:"\f2b9"}.ti-yin-yang:before{content:"\ec35"}.ti-yoga:before{content:"\f01f"}.ti-zeppelin:before{content:"\f270"}.ti-zeppelin-off:before{content:"\f43f"}.ti-zip:before{content:"\f3b4"}.ti-zodiac-aquarius:before{content:"\ecac"}.ti-zodiac-aries:before{content:"\ecad"}.ti-zodiac-cancer:before{content:"\ecae"}.ti-zodiac-capricorn:before{content:"\ecaf"}.ti-zodiac-gemini:before{content:"\ecb0"}.ti-zodiac-leo:before{content:"\ecb1"}.ti-zodiac-libra:before{content:"\ecb2"}.ti-zodiac-pisces:before{content:"\ecb3"}.ti-zodiac-sagittarius:before{content:"\ecb4"}.ti-zodiac-scorpio:before{content:"\ecb5"}.ti-zodiac-taurus:before{content:"\ecb6"}.ti-zodiac-virgo:before{content:"\ecb7"}.ti-zoom-cancel:before{content:"\ec4d"}.ti-zoom-check:before{content:"\ef09"}.ti-zoom-code:before{content:"\f07f"}.ti-zoom-exclamation:before{content:"\f080"}.ti-zoom-in:before{content:"\eb56"}.ti-zoom-in-area:before{content:"\f1dc"}.ti-zoom-money:before{content:"\ef0a"}.ti-zoom-out:before{content:"\eb57"}.ti-zoom-out-area:before{content:"\f1dd"}.ti-zoom-pan:before{content:"\f1de"}.ti-zoom-question:before{content:"\edeb"}.ti-zoom-replace:before{content:"\f2a7"}.ti-zoom-reset:before{content:"\f295"}.ti-zzz:before{content:"\f228"}.ti-zzz-off:before{content:"\f440"} \ No newline at end of file diff --git a/app/templates/auth/register.html b/app/templates/auth/register.html index 1654a5d..b6cd2e5 100644 --- a/app/templates/auth/register.html +++ b/app/templates/auth/register.html @@ -1,11 +1,14 @@ {% extends "layout.html" %} {% block content %} -
-
-
-

Create New Account

+
+
+

Create an account

+
+
+ +
{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} @@ -17,33 +20,37 @@ {% endif %} {% endwith %} - - -
- - -
-
- - -
- - -
-
or
-
-
-
- - Login with existing account - +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ Make sure to use a strong, unique password
+ +
+ + +
+ Already have an account? Sign in
{% endblock %} \ No newline at end of file diff --git a/app/templates/dashboard/app_form.html b/app/templates/dashboard/app_form.html index e9e191d..cabd50c 100644 --- a/app/templates/dashboard/app_form.html +++ b/app/templates/dashboard/app_form.html @@ -6,8 +6,25 @@

- {% if app %}Edit Application{% else %}Add New Application{% endif %} + {{ title }}

+
+ {% if edit_mode %}Edit{% else %}Create{% endif %} application details and configure ports +
+
+
+
+ + + Dashboard + + {% if edit_mode %} + + + View Application + + {% endif %} +
@@ -26,86 +43,148 @@ {% endwith %}
+ action="{{ url_for('dashboard.app_edit', app_id=app.id) if edit_mode else url_for('dashboard.app_new') }}"> +
- + + Choose a unique name for this application
+
+ Select the server where this application runs
+
- -
Markdown is supported
+ +
+
+ + + Markdown formatting is supported. Include details about what this application does, contact info, etc. + +
+
+
+
Preview will be shown here...
+
+
+
+ +
Port Configuration
+ +
+
+ +
+ + +
+
+ +
+ + + + + + + + + + + {% if app and app.ports %} + {% for port in app.ports %} + + + + + + + {% endfor %} + {% endif %} + + +
Port NumberProtocolDescriptionActions
+ + + + + + + +
+
+ Configure the network ports used by this application +
+
+{% endblock %} {% block extra_js %} -{% endblock %} + {% endblock %} \ No newline at end of file diff --git a/app/templates/ipam/subnet_view.html b/app/templates/ipam/subnet_view.html index 84624d1..c0b91a5 100644 --- a/app/templates/ipam/subnet_view.html +++ b/app/templates/ipam/subnet_view.html @@ -155,6 +155,69 @@
+ + +
+
+
+
+

Applications in this Subnet

+
+
+ {% if subnet_apps %} +
+ {% for app in subnet_apps %} +
+
+
+

{{ app.name }}

+ on {{ app.server.hostname }} ({{ app.server.ip_address }}) +
+ +
+
+ {% if app.documentation %} + {{ app.documentation|markdown|truncate(300, true) }} + Read more + {% else %} +

No documentation available for this application.

+ {% endif %} +
+
+ {% endfor %} +
+ {% else %} +
+
+ +
+

No applications found

+

+ No applications are running on servers in this subnet. +

+
+ {% endif %} +
+
+
+
+ + +
+
Usage
+
+
+
+
+ {{ used_ips }} used + {{ total_ips }} total +
+
@@ -185,4 +248,65 @@ + + {% endblock %} \ No newline at end of file diff --git a/app/templates/layout.html b/app/templates/layout.html index 69d1d5d..73fb7cd 100644 --- a/app/templates/layout.html +++ b/app/templates/layout.html @@ -15,10 +15,13 @@ - - + + + {% block styles %}{% endblock %} @@ -267,11 +270,13 @@
  • Logout
  • - @@ -529,6 +534,73 @@ }); }); + {% block scripts %}{% endblock %} diff --git a/app/utils/__pycache__/app_utils.cpython-313.pyc b/app/utils/__pycache__/app_utils.cpython-313.pyc new file mode 100644 index 0000000..1ee55fc Binary files /dev/null and b/app/utils/__pycache__/app_utils.cpython-313.pyc differ diff --git a/app/utils/app_utils.py b/app/utils/app_utils.py new file mode 100644 index 0000000..e4eff2f --- /dev/null +++ b/app/utils/app_utils.py @@ -0,0 +1,129 @@ +from app.core.models import App, Port, Server +from app.core.extensions import db +from flask import flash +import re + + +def validate_app_data(name, server_id, existing_app_id=None): + """ + Validate application data + Returns tuple (valid, error_message) + """ + if not name or not server_id: + return False, "Please fill in all required fields" + + # Check if app exists with same name on same server + query = App.query.filter(App.name == name, App.server_id == server_id) + + # If editing, exclude the current app + if existing_app_id: + query = query.filter(App.id != existing_app_id) + + if query.first(): + return False, f"Application '{name}' already exists on this server" + + return True, None + + +def validate_port_data(port_number, protocol, description=None): + """ + Validate port data + Returns tuple (valid, clean_port_number, error_message) + """ + # Clean and validate port number + try: + port = int(port_number) + if port < 1 or port > 65535: + return False, None, "Port must be between 1 and 65535" + except (ValueError, TypeError): + return False, None, "Invalid port number" + + # Validate protocol + valid_protocols = ["TCP", "UDP", "SCTP", "OTHER"] + if protocol not in valid_protocols: + return False, None, f"Protocol must be one of: {', '.join(valid_protocols)}" + + return True, port, None + + +def process_app_ports(app_id, port_data): + """ + Process port data for an application + port_data should be a list of tuples (port_number, protocol, description) + Returns (success, error_message) + """ + try: + for port_number, protocol, description in port_data: + valid, clean_port, error = validate_port_data( + port_number, protocol, description + ) + if not valid: + continue # Skip invalid ports + + # Check if port already exists + existing_port = Port.query.filter_by( + app_id=app_id, port_number=clean_port + ).first() + if existing_port: + # Update existing port + existing_port.protocol = protocol + existing_port.description = description + else: + # Create new port + new_port = Port( + app_id=app_id, + port_number=clean_port, + protocol=protocol, + description=description, + ) + db.session.add(new_port) + + return True, None + except Exception as e: + db.session.rollback() + return False, str(e) + + +def save_app(name, server_id, documentation, port_data=None, existing_app_id=None): + """ + Save or update an application and its ports + Returns tuple (success, app_object_or_none, error_message) + """ + try: + # Validate input data + valid, error = validate_app_data(name, server_id, existing_app_id) + if not valid: + return False, None, error + + # Create or update app + if existing_app_id: + # Update existing app + app = App.query.get(existing_app_id) + if not app: + return False, None, f"Application with ID {existing_app_id} not found" + + app.name = name + app.server_id = server_id + app.documentation = documentation + else: + # Create new app + app = App(name=name, server_id=server_id, documentation=documentation) + db.session.add(app) + + # Flush to get the app ID if new + db.session.flush() + + # Process ports if provided + if port_data: + success, error = process_app_ports(app.id, port_data) + if not success: + db.session.rollback() + return False, None, f"Error processing ports: {error}" + + # Commit all changes + db.session.commit() + return True, app, None + + except Exception as e: + db.session.rollback() + return False, None, str(e) diff --git a/config.py b/config.py index 7f66bca..924b427 100644 --- a/config.py +++ b/config.py @@ -1,28 +1,36 @@ import os + class Config: """Base config.""" - SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-key-placeholder') + + SECRET_KEY = os.environ.get("SECRET_KEY", "dev-key-placeholder") SQLALCHEMY_TRACK_MODIFICATIONS = False WTF_CSRF_ENABLED = True SESSION_COOKIE_SECURE = False # Set to True in production with HTTPS + class DevelopmentConfig(Config): """Development config.""" + DEBUG = True - SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'sqlite:///app.db') + SQLALCHEMY_DATABASE_URI = os.environ.get("DATABASE_URL", "sqlite:///app.db") SQLALCHEMY_ECHO = True + class ProductionConfig(Config): """Production config.""" + DEBUG = False TESTING = False - SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'sqlite:///app.db') + SQLALCHEMY_DATABASE_URI = os.environ.get("DATABASE_URL", "sqlite:///app.db") SESSION_COOKIE_SECURE = True REMEMBER_COOKIE_SECURE = True + class TestingConfig(Config): """Testing config.""" + TESTING = True - SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:' - WTF_CSRF_ENABLED = False \ No newline at end of file + SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:" + WTF_CSRF_ENABLED = False diff --git a/config/app-dev.db b/config/app-dev.db deleted file mode 100644 index 5a72824..0000000 Binary files a/config/app-dev.db and /dev/null differ diff --git a/instance/app.db b/instance/app.db index 50559fc..c3dbcb6 100644 Binary files a/instance/app.db and b/instance/app.db differ diff --git a/run.py b/run.py index 6af2e8a..ddb3393 100644 --- a/run.py +++ b/run.py @@ -15,92 +15,100 @@ import json current_dir = os.path.abspath(os.path.dirname(__file__)) sys.path.insert(0, current_dir) + def create_basic_app(): """Create a Flask app without database dependencies""" - app = Flask(__name__, - template_folder=os.path.join(current_dir, 'app', 'templates'), - static_folder=os.path.join(current_dir, 'app', 'static')) - + app = Flask( + __name__, + template_folder=os.path.join(current_dir, "app", "templates"), + static_folder=os.path.join(current_dir, "app", "static"), + ) + # Basic configuration - app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev-key-placeholder') - app.config['DEBUG'] = True - + app.config["SECRET_KEY"] = os.environ.get("SECRET_KEY", "dev-key-placeholder") + app.config["DEBUG"] = True + # Register basic routes register_routes(app) - + # Add a fallback index route if no routes match - @app.route('/') + @app.route("/") def index(): return "Your Network Management Flask Application is running! Navigate to /dashboard to see content." - + return app + def register_routes(app): """Register blueprints without database dependencies""" - routes_dir = os.path.join(current_dir, 'app', 'routes') - + routes_dir = os.path.join(current_dir, "app", "routes") + # Check if routes directory exists if not os.path.isdir(routes_dir): print(f"Warning: Routes directory {routes_dir} not found") return - + # Try to register API blueprint which is simplest try: from app.routes.api import bp as api_bp + app.register_blueprint(api_bp) print("Registered API blueprint") except Exception as e: print(f"Could not register API blueprint: {e}") - + # Try to register other blueprints with basic error handling try: from app.routes.dashboard import bp as dashboard_bp + app.register_blueprint(dashboard_bp) print("Registered dashboard blueprint") except ImportError as e: print(f"Could not import dashboard blueprint: {e}") - + try: from app.routes.ipam import bp as ipam_bp + app.register_blueprint(ipam_bp) print("Registered IPAM blueprint") except ImportError as e: print(f"Could not import IPAM blueprint: {e}") + # Create a development application instance print("Starting Flask app with SQLite database...") -app = create_app('development') +app = create_app("development") + @app.shell_context_processor def make_shell_context(): return { - 'db': db, - 'User': User, - 'Server': Server, - 'Subnet': Subnet, - 'App': App, - 'Port': Port + "db": db, + "User": User, + "Server": Server, + "Subnet": Subnet, + "App": App, + "Port": Port, } + def init_db(): """Initialize database tables""" with app.app_context(): db.create_all() + def create_admin_user(): """Create an admin user if no users exist""" with app.app_context(): if User.query.count() == 0: - admin = User( - username='admin', - email='admin@example.com', - is_admin=True - ) - admin.set_password('admin') + admin = User(username="admin", email="admin@example.com", is_admin=True) + admin.set_password("admin") db.session.add(admin) db.session.commit() print("Created admin user: admin@example.com (password: admin)") + # Update seed_data to use consistent structures def seed_data(): """Add some sample data to the database""" @@ -108,42 +116,75 @@ def seed_data(): # Only seed if the database is empty if Subnet.query.count() == 0: # Create sample subnets - subnet1 = Subnet(cidr='192.168.1.0/24', location='Office', active_hosts=json.dumps([])) - subnet2 = Subnet(cidr='10.0.0.0/24', location='Datacenter', active_hosts=json.dumps([])) - + subnet1 = Subnet( + cidr="192.168.1.0/24", location="Office", active_hosts=json.dumps([]) + ) + subnet2 = Subnet( + cidr="10.0.0.0/24", location="Datacenter", active_hosts=json.dumps([]) + ) + db.session.add_all([subnet1, subnet2]) db.session.commit() - + # Create sample servers - server1 = Server(hostname='web-server', ip_address='192.168.1.10', subnet=subnet1) - server2 = Server(hostname='db-server', ip_address='192.168.1.11', subnet=subnet1) - server3 = Server(hostname='app-server', ip_address='10.0.0.5', subnet=subnet2) - + server1 = Server( + hostname="web-server", ip_address="192.168.1.10", subnet=subnet1 + ) + server2 = Server( + hostname="db-server", ip_address="192.168.1.11", subnet=subnet1 + ) + server3 = Server( + hostname="app-server", ip_address="10.0.0.5", subnet=subnet2 + ) + db.session.add_all([server1, server2, server3]) db.session.commit() - + # Create sample apps - app1 = App(name='Website', server=server1, documentation='# Company Website\nRunning on Nginx/PHP') - app2 = App(name='PostgreSQL', server=server2, documentation='# Database Server\nPostgreSQL 15') - app3 = App(name='API Service', server=server3, documentation='# REST API\nNode.js service') - + app1 = App( + name="Website", + server=server1, + documentation="# Company Website\nRunning on Nginx/PHP", + ) + app2 = App( + name="PostgreSQL", + server=server2, + documentation="# Database Server\nPostgreSQL 15", + ) + app3 = App( + name="API Service", + server=server3, + documentation="# REST API\nNode.js service", + ) + db.session.add_all([app1, app2, app3]) db.session.commit() - + # Create sample ports - port1 = Port(app=app1, port_number=80, protocol='TCP', description='HTTP') - port2 = Port(app=app1, port_number=443, protocol='TCP', description='HTTPS') - port3 = Port(app=app2, port_number=5432, protocol='TCP', description='PostgreSQL') - port4 = Port(app=app3, port_number=3000, protocol='TCP', description='Node.js API') - + port1 = Port(app=app1, port_number=80, protocol="TCP", description="HTTP") + port2 = Port(app=app1, port_number=443, protocol="TCP", description="HTTPS") + port3 = Port( + app=app2, port_number=5432, protocol="TCP", description="PostgreSQL" + ) + port4 = Port( + app=app3, port_number=3000, protocol="TCP", description="Node.js API" + ) + db.session.add_all([port1, port2, port3, port4]) db.session.commit() - + print("Sample data has been added to the database") -if __name__ == '__main__': + +if __name__ == "__main__": + # Create the app first + app = create_app() + # Initialize database if needed - if not os.path.exists('app.db') and 'sqlite' in app.config['SQLALCHEMY_DATABASE_URI']: + if ( + not os.path.exists("app.db") + and "sqlite" in app.config["SQLALCHEMY_DATABASE_URI"] + ): print("Database not found, initializing...") try: init_db() @@ -153,10 +194,10 @@ if __name__ == '__main__': except Exception as e: print(f"Error initializing database: {e}") sys.exit(1) - + # Run the application try: app.run(debug=True, port=5000) except Exception as e: print(f"Error starting Flask app: {e}") - sys.exit(1) \ No newline at end of file + sys.exit(1) diff --git a/scripts/__pycache__/check_routes.cpython-313-pytest-8.3.5.pyc b/scripts/__pycache__/check_routes.cpython-313-pytest-8.3.5.pyc new file mode 100644 index 0000000..535e5ff Binary files /dev/null and b/scripts/__pycache__/check_routes.cpython-313-pytest-8.3.5.pyc differ diff --git a/scripts/check_routes.py b/scripts/check_routes.py index c78ceff..b75cbc5 100755 --- a/scripts/check_routes.py +++ b/scripts/check_routes.py @@ -9,79 +9,102 @@ import re from flask import Flask # Add the parent directory to sys.path -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + def find_all_routes(): """Find all route definitions in Python files""" routes = [] route_pattern = re.compile(r'@\w+\.route\([\'"]([^\'"]+)[\'"]') - - for root, _, files in os.walk('app'): + + for root, _, files in os.walk("app"): for file in files: - if file.endswith('.py'): + if file.endswith(".py"): file_path = os.path.join(root, file) - with open(file_path, 'r') as f: + with open(file_path, "r") as f: content = f.read() matches = route_pattern.findall(content) for match in matches: routes.append(match) - + return routes + def find_template_references(): """Find all url_for calls in template files""" references = [] url_for_pattern = re.compile(r'url_for\([\'"]([^\'"]+)[\'"]') - - for root, _, files in os.walk('app/templates'): + + # Add patterns for direct links and HTMX references + direct_href_pattern = re.compile(r'href=[\'"]([^\'"]+)[\'"]') + htmx_pattern = re.compile(r'hx-(get|post|put|delete)=[\'"]([^\'"]+)[\'"]') + + # Template files scanning + for root, _, files in os.walk("app/templates"): for file in files: - if file.endswith('.html'): + if file.endswith(".html"): file_path = os.path.join(root, file) - with open(file_path, 'r') as f: + with open(file_path, "r") as f: content = f.read() + # Find url_for references matches = url_for_pattern.findall(content) for match in matches: references.append(match) - + + # Also check for direct route references in hrefs that aren't url_for + href_matches = direct_href_pattern.findall(content) + for href in href_matches: + if href.startswith("/") and not href.startswith("//"): + references.append(href) + + # Check HTMX references + htmx_matches = htmx_pattern.findall(content) + for _, url in htmx_matches: + if url.startswith("/") and not url.startswith("//"): + references.append(url) + # Also check Python files for url_for calls - for root, _, files in os.walk('app'): + for root, _, files in os.walk("app"): for file in files: - if file.endswith('.py'): + if file.endswith(".py"): file_path = os.path.join(root, file) - with open(file_path, 'r') as f: + with open(file_path, "r") as f: content = f.read() matches = url_for_pattern.findall(content) for match in matches: references.append(match) - + return references + def check_unused_routes(): """Find routes that are not referenced by url_for""" from app import create_app - + app = create_app() - + # Get all route endpoints from the app all_endpoints = set() for rule in app.url_map.iter_rules(): all_endpoints.add(rule.endpoint) - + # Get all url_for references all_references = set(find_template_references()) - + # Find unused endpoints unused_endpoints = all_endpoints - all_references - + if unused_endpoints: - print("The following routes are defined but not referenced in templates or code:") + print( + "The following routes are defined but not referenced in templates or code:" + ) for endpoint in sorted(unused_endpoints): # Skip static routes, error handlers, etc. - if endpoint.startswith('static') or endpoint == 'static': + if endpoint.startswith("static") or endpoint == "static": continue - + print(f" - {endpoint}") - + # Find the URL for this endpoint for rule in app.url_map.iter_rules(): if rule.endpoint == endpoint: @@ -90,5 +113,6 @@ def check_unused_routes(): else: print("All routes are referenced in templates or code. Good job!") + if __name__ == "__main__": - check_unused_routes() \ No newline at end of file + check_unused_routes() diff --git a/scripts/cleanup.py b/scripts/cleanup.py index e414c0d..6f42da7 100755 --- a/scripts/cleanup.py +++ b/scripts/cleanup.py @@ -8,18 +8,19 @@ import os import shutil import argparse + def cleanup(directory, verbose=False): """Clean up cache files and database files""" cleaned_dirs = 0 cleaned_files = 0 - + # Files to clean - file_patterns = ['.pyc', '.pyo', '.~', '.swp', '.swo'] - db_patterns = ['.db', '.sqlite', '.sqlite3', '-journal'] - + file_patterns = [".pyc", ".pyo", ".~", ".swp", ".swo"] + db_patterns = [".db", ".sqlite", ".sqlite3", "-journal"] + # Directories to clean - dir_patterns = ['__pycache__', '.pytest_cache', '.coverage', 'htmlcov'] - + dir_patterns = ["__pycache__", ".pytest_cache", ".coverage", "htmlcov"] + # Clean main directory for root, dirs, files in os.walk(directory): # Clean directories @@ -31,7 +32,7 @@ def cleanup(directory, verbose=False): shutil.rmtree(dir_path) cleaned_dirs += 1 dirs.remove(dir_name) - + # Clean files for file in files: if any(file.endswith(pattern) for pattern in file_patterns + db_patterns): @@ -40,9 +41,9 @@ def cleanup(directory, verbose=False): print(f"Removing file: {file_path}") os.remove(file_path) cleaned_files += 1 - + # Clean instance directory - instance_dir = os.path.join(directory, 'instance') + instance_dir = os.path.join(directory, "instance") if os.path.exists(instance_dir): for file in os.listdir(instance_dir): if any(file.endswith(pattern) for pattern in db_patterns): @@ -51,13 +52,25 @@ def cleanup(directory, verbose=False): print(f"Removing database file: {file_path}") os.remove(file_path) cleaned_files += 1 - - print(f"Cleanup completed! Removed {cleaned_dirs} directories and {cleaned_files} files.") + + print( + f"Cleanup completed! Removed {cleaned_dirs} directories and {cleaned_files} files." + ) + if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Clean up Flask application cache and database files") - parser.add_argument("-v", "--verbose", action="store_true", help="Show detailed output") - parser.add_argument("-d", "--directory", default=".", help="Directory to clean (default: current directory)") - + parser = argparse.ArgumentParser( + description="Clean up Flask application cache and database files" + ) + parser.add_argument( + "-v", "--verbose", action="store_true", help="Show detailed output" + ) + parser.add_argument( + "-d", + "--directory", + default=".", + help="Directory to clean (default: current directory)", + ) + args = parser.parse_args() - cleanup(args.directory, args.verbose) \ No newline at end of file + cleanup(args.directory, args.verbose) diff --git a/scripts/create_admin.py b/scripts/create_admin.py index 4dc187f..b241b17 100644 --- a/scripts/create_admin.py +++ b/scripts/create_admin.py @@ -10,59 +10,61 @@ from flask import Flask from werkzeug.security import generate_password_hash # Add the parent directory to sys.path -sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from app import create_app from app.core.extensions import db from app.core.auth import User + def create_admin_user(email=None, password=None): """Create an admin user in the database""" app = create_app() - + with app.app_context(): # Check if users already exist if User.query.count() > 0: print("Users already exist in the database.") choice = input("Do you want to create another admin user? (y/n): ") - if choice.lower() != 'y': + if choice.lower() != "y": print("Operation cancelled.") return - + # Prompt for email if not provided if not email: email = input("Enter admin email: ") - + # Check if user with this email already exists existing_user = User.query.filter_by(email=email).first() if existing_user: print(f"User with email {email} already exists!") return - + # Prompt for password if not provided if not password: password = getpass.getpass("Enter admin password: ") confirm_password = getpass.getpass("Confirm password: ") - + if password != confirm_password: print("Passwords do not match!") return - + # Create the admin user admin = User(email=email, is_admin=True) admin.set_password(password) - + db.session.add(admin) db.session.commit() - + print(f"Admin user created successfully: {email}") + if __name__ == "__main__": import argparse - + parser = argparse.ArgumentParser(description="Create an admin user") parser.add_argument("--email", help="Admin user email") parser.add_argument("--password", help="Admin user password") - + args = parser.parse_args() - create_admin_user(args.email, args.password) \ No newline at end of file + create_admin_user(args.email, args.password) diff --git a/tests/__pycache__/conftest.cpython-313-pytest-8.3.5.pyc b/tests/__pycache__/conftest.cpython-313-pytest-8.3.5.pyc new file mode 100644 index 0000000..5762189 Binary files /dev/null and b/tests/__pycache__/conftest.cpython-313-pytest-8.3.5.pyc differ diff --git a/wsgi.py b/wsgi.py index a5de29a..e95d7ab 100644 --- a/wsgi.py +++ b/wsgi.py @@ -5,9 +5,9 @@ from app import create_app # os.environ['DATABASE_URL'] = 'your_production_database_url' # Create a production application -app = create_app('production') +app = create_app("production") -if __name__ == '__main__': +if __name__ == "__main__": # This is only used for development # In production, a WSGI server would import this file - app.run(host='0.0.0.0', port=5000) \ No newline at end of file + app.run(host="0.0.0.0", port=5000)