Repository: AndrewMohawk/Aurora
Branch: master
Commit: 039dbea649db
Files: 40
Total size: 578.6 KB
Directory structure:
gitextract_hr3ssai2/
├── .gitignore
├── Aurora.py
├── README.md
├── VERSION
├── __init__.py
├── apt-requirements.txt
├── aurora.service
├── extensions/
│ ├── Aurora_Ambient_16x9.py
│ ├── Aurora_Ambient_AutoCrop.py
│ ├── Aurora_Ambient_NoCrop.py
│ ├── Aurora_AudioSpectogram.py
│ ├── Aurora_Configure.py
│ ├── Aurora_Meteor.py
│ ├── Aurora_Rainbow.py
│ ├── __init__.py
│ └── exampleExtension.py
├── install.sh
├── requirements.txt
├── update.sh
└── webserver/
├── static/
│ ├── css/
│ │ ├── bootstrap.css
│ │ └── style.css
│ ├── images/
│ │ ├── icons/
│ │ │ └── license.txt
│ │ └── undraw/
│ │ └── _license_and_link.rtf
│ ├── js/
│ │ ├── aurora-configure.js
│ │ ├── aurora-generic.js
│ │ ├── aurora-index.js
│ │ ├── aurora-view.js
│ │ ├── custom.js
│ │ └── jquery.js
│ └── menu/
│ └── menu-main.html
└── templates/
├── about.html
├── configure.html
├── footer.html
├── header.html
├── index.html
├── menu-colors.html
├── menu-footer.html
├── menu-share.html
├── status.json
└── view.html
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
#Aurora test things
colourtest_from_youtube.mp4
*.jpg
*.jpeg
env/*
.vscode/
audio.py
auroraspec.py
spec.py
nohup.out
config.ini
config.ini.bak
LEDTests/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
================================================
FILE: Aurora.py
================================================
# Main Aurora python file, runs the webserver and the Aurora client, configs are loaded from extensions directory
import cherrypy
import os
import multiprocessing
import time
import json
import cherrypy
import configparser
import threading
import glob
import importlib
import inspect
import base64
import logging
from urllib.request import urlopen
import board
import neopixel
import cv2
import sys
from shutil import copyfile
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader("webserver/templates"))
class AuroraManager:
def __init__(self):
self.config_file = "./config.ini"
self.config = {} # config dict
self.extensions = {}
self.extensions_dir = False
self.current_extension = False
self.current_extension_name = False
self.current_extension_meta = False
self.screenshot_path = False
self.extension_started = False
self.loopRunning = False
self.messages = []
self.enabled = False
self.screenshot_b64 = ""
self.pixel_image_b64 = ""
self.vid = False
self.neoPixels = False
# Ironically we need to load the config to figure out the logging level, so if config fails... S.O.L
# process config file
self.loadConfig()
# Set logging
logging.basicConfig(
format="%(asctime)s %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p"
)
self.debug = bool(os.environ["AURORA_DEBUG"])
logging.info(
"DEBUG OS ENV: {} status: {}".format(
os.environ["AURORA_DEBUG"], bool(os.environ["AURORA_DEBUG"])
)
)
if self.debug == True:
logging.getLogger().setLevel(logging.DEBUG)
else:
logging.info("SET DEBUG OFF")
logging.getLogger().setLevel(logging.ERROR)
# Setup NeoPixels
self.setupNeoPixels()
# Setup HDMI
self.setupHDMI()
# populate extensions
self.populateExtensions()
# set/load the extension
self.setCurrentExtension(self.current_extension_name)
def setupNeoPixels(self):
try:
# this is janky and show() speed is impacted by the number of pixels, but we cant re-init this :(
self.neoPixels = neopixel.NeoPixel(board.D18, 500, auto_write=False)
self.neoPixels.fill((0, 0, 0)) # turn them off when we initialise
self.neoPixels.show() # ironic.
except Exception as e:
# Lets not get here chaps.
self.log(
"Error during initialisation of NeoPixel:{}".format(str(e)),
)
sys.exit(1)
def setupHDMI(self):
self.vid = False
# Setup HDMI input
try:
# Try Setup Video Capture devices
for i in range(0, 10):
self.log("Trying video device {}.".format(i))
testVid = cv2.VideoCapture(i)
test, frame = testVid.read()
if test:
self.vid = testVid
self.log("Using video device {}.".format(i))
self.vid.set(cv2.CAP_PROP_SATURATION, 255)
break
else:
logging.error("device {} failed".format(i))
if self.vid == False:
self.log("Failed to initialise video device")
sys.exit(1)
self.vid.set(cv2.CAP_PROP_BUFFERSIZE, 2)
self.vid_w = int(self.vid.get(cv2.CAP_PROP_FRAME_WIDTH))
self.vid_h = int(self.vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
self.log(
"Initialized Aurora with feed of {} x {}".format(self.vid_w, self.vid_h)
)
# Lets save initial values
self.config["HDMI_INITIAL"]["HDMI_BRIGHTNESS"] = str(
int(self.vid.get(cv2.CAP_PROP_BRIGHTNESS))
)
self.config["HDMI_INITIAL"]["HDMI_SATURATION"] = str(
int(self.vid.get(cv2.CAP_PROP_SATURATION))
)
self.config["HDMI_INITIAL"]["HDMI_CONTRAST"] = str(
int(self.vid.get(cv2.CAP_PROP_CONTRAST))
)
self.config["HDMI_INITIAL"]["HDMI_HUE"] = str(
int(self.vid.get(cv2.CAP_PROP_HUE))
)
self.saveConfig()
self.log(
"Default State:\nBrightness:{} Saturation: {} Contrast: {} Hue: {}".format(
int(self.vid.get(cv2.CAP_PROP_BRIGHTNESS)),
int(self.vid.get(cv2.CAP_PROP_SATURATION)),
int(self.vid.get(cv2.CAP_PROP_CONTRAST)),
int(self.vid.get(cv2.CAP_PROP_HUE)),
)
)
except Exception as e:
# Lets not get here either!
self.log("Error during initialisation of HDMI capture:{}".format(str(e)))
sys.exit(1)
# Let set the HDMI input settings
try:
self.vid.set(
cv2.CAP_PROP_SATURATION, int(self.config["HDMI"]["HDMI_SATURATION"])
)
self.vid.set(
cv2.CAP_PROP_BRIGHTNESS, int(self.config["HDMI"]["HDMI_BRIGHTNESS"])
)
self.vid.set(
cv2.CAP_PROP_CONTRAST, int(self.config["HDMI"]["HDMI_CONTRAST"])
)
self.vid.set(cv2.CAP_PROP_HUE, int(self.config["HDMI"]["HDMI_HUE"]))
except Exception as e:
# Lets not get here chaps.
self.log("Error during initialisation of HDMI:{}".format(str(e)))
sys.exit(1)
def saveConfig(self):
with open(self.config_file, "w") as configfile:
self.config.write(configfile)
self.loadConfig()
def log(self, message):
logging.info(message)
# Load the config file
def loadConfig(self):
self.config = configparser.ConfigParser()
self.config.optionxform = str
self.config.read(self.config_file)
# Lets load the enviroment variables
for key, val in self.config["AURORA"].items():
os.environ[key] = val
self.log("setting key {} to {}".format(key, val))
# Setup extensions dir
self.extensions_dir = self.config["EXTENSIONS"]["directory"]
# Set default extension
self.current_extension_name = self.config["EXTENSIONS"]["current_extension"]
# set screenshotpath
self.screenshot_path = self.config["GENERAL"]["screenshot_path"]
# set pixel image path
self.pixel_image_path = self.config["GENERAL"]["pixel_image_path"]
# set enabled flag
self.enabled = self.config.getboolean("GENERAL", "enabled")
# Get a particular extension
def getExtensionClass(self, extension_name, extension_dir):
module = importlib.import_module(
extension_dir + "." + extension_name, package=extension_name
)
importlib.reload(module)
x = False
try:
extensionClass = getattr(module, extension_name)
x = extensionClass(self.neoPixels, self.vid)
logging.info(
"Loaded: {} from ./{}/{}.py".format(
x.Name, extension_dir, extension_name
)
)
except Exception as e:
self.addMessage(
"Could not load module from ./{}/{}.py error: {}".format(
extension_dir, extension_name, str(e)
)
)
logging.info(
"Could not load module from ./{}/{}.py error: {}".format(
extension_dir, extension_name, str(e)
)
)
return x
def fetchMeta(self, extension, filename):
if extension == False:
return False
extension_meta = {}
extension_meta["Author"] = extension.Author
extension_meta["Description"] = extension.Description
extension_meta["Name"] = extension.Name
extension_meta["FileName"] = filename
return extension_meta
# Populate all the extensions from the extensions class
def populateExtensions(self):
self.extensions = {}
extension_dir = self.extensions_dir
for file in glob.glob("./{}/*.py".format(extension_dir)):
filename = os.path.splitext(os.path.basename(file))[0]
# Ignore __ files
if filename.startswith("__"):
continue
if filename not in ["exampleExtension2", "Aurora_Configure"]:
x = self.getExtensionClass(filename, extension_dir)
if x != False:
extension_meta = self.fetchMeta(x, filename)
self.extensions[filename] = extension_meta
def addMessage(self, msg):
if msg not in self.messages:
self.messages.append(msg)
# Get the current extension to be run
def getCurrentExtension(self):
os.environ["AURORA_CURRENT_EXTENSION_NAME"] = self.current_extension_name
current_extension = self.getExtensionClass(
self.current_extension_name, self.extensions_dir
)
self.current_extension = current_extension
return current_extension
def setCurrentExtension(self, new_current_extension):
tempExt = self.getExtensionClass(new_current_extension, self.extensions_dir)
if tempExt != False:
while self.loopRunning == True:
# lets wait this out or things get REEAAAL funky
time.sleep(0.001)
if self.extension_started == True:
self.tearDownExtension()
self.extension_started = False
self.current_extension = tempExt
self.current_extension_name = new_current_extension
os.environ["AURORA_CURRENT_EXTENSION_NAME"] = new_current_extension
self.current_extension_meta = self.fetchMeta(
self.current_extension, new_current_extension
)
self.setupExtension()
if new_current_extension != "Aurora_Configure":
self.config.set(
"EXTENSIONS", "current_extension", self.current_extension_name
)
self.saveConfig()
self.extension_started = True
def takeScreenshot(self):
self.current_extension.takeScreenShot(self.screenshot_path)
def makePixelImage(self):
self.current_extension.makePixelFrame(self.pixel_image_path)
def setupExtension(self):
self.current_extension.setup()
self.extension_started = True
def tearDownExtension(self):
self.extension_started = False
self.current_extension.teardown()
def loop(self):
if self.enabled == True: # only if the entire thing is enabled
if self.extension_started != False: # only loop if the extension is started
# lets let other processes know we are in the middle of a loop
self.loopRunning = True
try:
self.current_extension.visualise()
except Exception as e:
self.log("Error in visualise: {}".format(str(e)))
self.loopRunning = False
class Aurora_Webserver(object):
def __init__(self, Manager):
self.manager = Manager
@cherrypy.tools.json_out()
@cherrypy.expose
def status(self):
self.manager.loadConfig()
enabled_status = self.manager.enabled
current_extension = self.manager.current_extension.Name
current_extension_class = self.manager.current_extension_name
with open("VERSION", "r") as f:
current_version = f.read()
tmpl = env.get_template("status.json")
template_variables = {}
template_variables["current_extension"] = current_extension
template_variables["current_extension_class"] = current_extension_class
template_variables["enabled"] = enabled_status
template_variables["current_version"] = current_version
return tmpl.render(template_variables)
@cherrypy.expose
def about(self):
self.manager.loadConfig()
current_version = "Cannot read version"
with open("VERSION", "r") as f:
current_version = f.read()
github_version = "Cannot read from github"
try:
githubURL = (
"https://raw.githubusercontent.com/AndrewMohawk/Aurora/master/VERSION"
)
github_page = urlopen(githubURL)
github_version = github_page.read().decode("utf-8").strip()
except Exception as e:
self.manager.log("Exception trying to open github page:{}".format(str(e)))
# we cant connect to github?
pass
tmpl = env.get_template("about.html")
template_variables = {}
template_variables["current_version"] = current_version
template_variables["github_version"] = github_version
template_variables["extensions_meta"] = self.manager.extensions
template_variables[
"current_extension_meta"
] = self.manager.current_extension_meta
template_variables["config"] = {
section: dict(self.manager.config[section])
for section in self.manager.config.sections()
}
template_variables["page"] = "about"
template_variables["msg"] = self.manager.messages
self.manager.messages = []
return tmpl.render(template_variables)
@cherrypy.expose
def index(self):
if self.manager.current_extension_name == "Aurora_Configure":
# process config file
self.manager.loadConfig()
# set/load the extension
self.manager.setCurrentExtension(self.manager.current_extension_name)
self.manager.setupExtension()
self.manager.populateExtensions()
tmpl = env.get_template("index.html")
template_variables = {}
template_variables["extensions_meta"] = self.manager.extensions
template_variables[
"current_extension_meta"
] = self.manager.current_extension_meta
if self.manager.current_extension != False:
template_variables["fps"] = self.manager.current_extension.FPS_avg
else:
template_variables["fps"] = 0
template_variables["configured"] = self.manager.config.getboolean(
"GENERAL", "configured"
)
template_variables["enabled"] = self.manager.config.getboolean(
"GENERAL", "enabled"
)
template_variables["page"] = "home"
template_variables["msg"] = self.manager.messages
self.manager.messages = []
return tmpl.render(template_variables)
@cherrypy.expose
def view(self):
if self.manager.current_extension_name == "Aurora_Configure":
# process config file
self.manager.loadConfig()
# set/load the extension
self.manager.setCurrentExtension(self.manager.current_extension_name)
self.manager.setupExtension()
self.manager.populateExtensions()
tmpl = env.get_template("view.html")
self.screenshot()
template_variables = {}
template_variables["extensions_meta"] = self.manager.extensions
template_variables[
"current_extension_meta"
] = self.manager.current_extension_meta
if self.manager.current_extension != False:
template_variables["fps"] = self.manager.current_extension.FPS_avg
else:
template_variables["fps"] = 0
template_variables["configured"] = self.manager.config.getboolean(
"GENERAL", "configured"
)
template_variables["enabled"] = self.manager.config.getboolean(
"GENERAL", "enabled"
)
template_variables["page"] = "view"
template_variables["msg"] = self.manager.messages
self.manager.messages = []
return tmpl.render(template_variables)
@cherrypy.expose
def configure(self):
if self.manager.enabled == False: # Its turned off, we need it on to config
self.manager.enabled = True
self.manager.setCurrentExtension("Aurora_Configure")
# self.manager.setCurrentExtension("Aurora_Ambient_AutoCrop")
self.manager.extension_started = False # so it doesnt loop visualise
self.manager.current_extension.visualise()
self.screenshot()
tmpl = env.get_template("configure.html")
template_variables = {}
template_variables[
"pixels_darkthreshold"
] = self.manager.current_extension.darkThreshhold
template_variables["pixels_left"] = self.manager.current_extension.pixelsLeft
template_variables["pixels_right"] = self.manager.current_extension.pixelsRight
template_variables["pixels_top"] = self.manager.current_extension.pixelsTop
template_variables[
"pixels_bottom"
] = self.manager.current_extension.pixelsBottom
# template_variables["hdmi_saturation"] = self.manager.config.getint(
# "HDMI", "HDMI_SATURATION"
# )
# template_variables["hdmi_brightness"] = self.manager.config.getint(
# "HDMI", "HDMI_BRIGHTNESS"
# )
# template_variables["hdmi_hue"] = self.manager.config.getint("HDMI", "HDMI_HUE")
# template_variables["hdmi_contrast"] = self.manager.config.getint(
# "HDMI", "HDMI_CONTRAST"
# )
# template_variables["hdmi_brightness_default"] = int(self.manager.config["HDMI_INITIAL"]["HDMI_BRIGHTNESS"])
# template_variables["hdmi_saturation_default"] = int(self.manager.config["HDMI_INITIAL"]["HDMI_SATURATION"])
# template_variables["hdmi_contrast_default"] = int(self.manager.config["HDMI_INITIAL"]["HDMI_CONTRAST"])
# template_variables["hdmi_hue_default"] = int(self.manager.config["HDMI_INITIAL"]["HDMI_HUE"])
template_variables["hdmi_gamma"] = self.manager.current_extension.gamma
template_variables["page"] = "configure"
template_variables["msg"] = self.manager.messages
self.manager.messages = []
return tmpl.render(template_variables)
@cherrypy.tools.json_out()
@cherrypy.expose
def toggleEnable(self):
if self.manager.enabled:
self.manager.tearDownExtension()
else:
self.manager.setupExtension()
self.manager.enabled = not self.manager.enabled
return {"status": self.manager.enabled}
@cherrypy.tools.json_in()
@cherrypy.tools.json_out()
@cherrypy.expose
def update_config(self):
input_json = cherrypy.request.json
if "enabled" in input_json:
try:
return_json = {"status": "ok"}
enabled_status = input_json["enabled"]
self.manager.enabled = enabled_status
if enabled_status == False:
# we are turning it off, tear down the extension
self.manager.tearDownExtension()
return_json["message"] = "Aurora successfully turned off"
elif enabled_status == True:
# we are turning it on, lets put everything back
self.manager.setupExtension()
return_json["message"] = "Aurora successfully turned on"
self.manager.config.set("GENERAL", "enabled", str(enabled_status))
self.manager.saveConfig()
return return_json
except Exception as e:
return {"status": "error", "error": str(e)}
pass
else:
return {"status": "error", "error": "No setting found in request"}
@cherrypy.tools.json_out()
@cherrypy.tools.json_in()
@cherrypy.expose
def update_HDMI_config(self):
input_json = cherrypy.request.json
# saturation = int(input_json["hdmi_saturation"])
# hue = int(input_json["hdmi_hue"])
# contrast = int(input_json["hdmi_contrast"])
# brightness = int(input_json["hdmi_brightness"])
errors = []
try:
gamma = float(input_json["hdmi_gamma"])
self.manager.current_extension.gamma = gamma
if "save" in input_json:
self.manager.config.set("AURORA", "AURORA_GAMMA", str(gamma))
self.manager.saveConfig()
self.manager.addMessage("Saved config!")
# self.manager.vid.set(cv2.CAP_PROP_SATURATION, saturation)
# self.manager.vid.set(cv2.CAP_PROP_HUE, hue)
# self.manager.vid.set(cv2.CAP_PROP_BRIGHTNESS, brightness)
# self.manager.vid.set(cv2.CAP_PROP_CONTRAST, contrast)
# self.manager.log(
# "Brightness:{} Saturation: {} Contrast: {} Hue: {}".format(
# int(self.manager.vid.get(cv2.CAP_PROP_BRIGHTNESS)),
# int(self.manager.vid.get(cv2.CAP_PROP_SATURATION)),
# int(self.manager.vid.get(cv2.CAP_PROP_CONTRAST)),
# int(self.manager.vid.get(cv2.CAP_PROP_HUE)),
# )
# )
# for i in range(5):
# self.manager.vid.read()
self.manager.takeScreenshot()
except Exception as e:
errors.append(str(e))
pass
if len(errors) == 0:
return {"status": "ok"}
else:
error_string = ",".join(errors)
return {"status": "error", "error": error_string}
@cherrypy.tools.json_out()
@cherrypy.tools.json_in()
@cherrypy.expose
def update_LED_config(self):
input_json = cherrypy.request.json
pixelcount_left = self.manager.current_extension.pixelsLeft
pixelcount_right = self.manager.current_extension.pixelsRight
pixelcount_top = self.manager.current_extension.pixelsTop
pixelcount_bottom = self.manager.current_extension.pixelsBottom
pixel_darkthreshold = self.manager.current_extension.darkThreshhold
configChange = False
errors = []
if "darkthreshhold" in input_json:
try:
dt = int(input_json["darkthreshhold"])
if dt != pixel_darkthreshold:
configChange = True
pixel_darkthreshold = dt
except Exception as e:
errors.append(str(e))
pass # whatever, you are doing bad things with input
if "pixelcount_left" in input_json:
try:
led_input_count = int(input_json["pixelcount_left"])
if led_input_count != pixelcount_left:
configChange = True
pixelcount_left = led_input_count
except Exception as e:
errors.append(str(e))
pass # whatever, you are doing bad things with input
if "pixelcount_right" in input_json:
try:
led_input_count = int(input_json["pixelcount_right"])
if led_input_count != pixelcount_right:
configChange = True
pixelcount_right = led_input_count
except Exception as e:
errors.append(str(e))
pass # whatever, you are doing bad things with input
if "pixelcount_top" in input_json:
try:
led_input_count = int(input_json["pixelcount_top"])
if led_input_count != pixelcount_top:
configChange = True
pixelcount_top = led_input_count
except Exception as e:
errors.append(str(e))
pass # whatever, you are doing bad things with input
if "pixelcount_bottom" in input_json:
try:
led_input_count = int(input_json["pixelcount_bottom"])
if led_input_count != pixelcount_bottom:
configChange = True
pixelcount_bottom = led_input_count
except Exception as e:
errors.append(str(e))
pass # whatever, you are doing bad things with input
pixelcount_total = (
pixelcount_left + pixelcount_right + pixelcount_top + pixelcount_bottom
)
try:
self.manager.current_extension.pixelsCount = pixelcount_total
self.manager.current_extension.pixelsLeft = pixelcount_left
self.manager.current_extension.pixelsRight = pixelcount_right
self.manager.current_extension.pixelsTop = pixelcount_top
self.manager.current_extension.pixelsBottom = pixelcount_bottom
self.manager.current_extension.setup()
self.manager.current_extension.visualise()
except Exception as e:
errors.append(str(e))
if "save" in input_json:
try:
self.manager.config.set(
"AURORA", "AURORA_PIXELCOUNT_LEFT", str(pixelcount_left)
)
self.manager.config.set(
"AURORA", "AURORA_PIXELCOUNT_RIGHT", str(pixelcount_right)
)
self.manager.config.set(
"AURORA", "AURORA_PIXELCOUNT_TOP", str(pixelcount_top)
)
self.manager.config.set(
"AURORA", "AURORA_PIXELCOUNT_BOTTOM", str(pixelcount_bottom)
)
self.manager.config.set(
"AURORA", "AURORA_PIXELCOUNT_TOTAL", str(pixelcount_total)
)
self.manager.config.set(
"AURORA", "AURORA_DARKTHRESHOLD", str(pixel_darkthreshold)
)
self.manager.config.set("GENERAL", "configured", "True")
self.manager.saveConfig()
self.manager.addMessage("Saved config!")
except Exception as e:
logging.error(str(e))
errors.append(str(e))
if len(errors) == 0:
return {"status": "ok"}
else:
error_string = ",".join(errors)
return {"status": "error", "error": error_string}
@cherrypy.tools.json_out()
@cherrypy.tools.json_in()
@cherrypy.expose
def update_extension(self):
input_json = cherrypy.request.json
if "extension_name" in input_json:
extension_name = input_json["extension_name"]
self.manager.setCurrentExtension(extension_name)
return {"status": "ok"}
@cherrypy.tools.json_out()
@cherrypy.expose
def screenshot(self):
self.manager.takeScreenshot()
self.manager.makePixelImage()
if self.manager.current_extension != False:
return {"status": "ok"}
else:
return {
"status": "error",
"error": "Could not take screenshot and build pixel image",
}
@cherrypy.expose
def load_screenshot(self, **params):
screenshot_path = self.manager.screenshot_path
# Its not enabled, it doesnt use HDMI or its got a 1x1 image (ie nothing on)
if (
self.manager.enabled == False
or self.manager.current_extension.noHDMI == True
or (
self.manager.current_extension.vid_h == 1
or self.manager.current_extension.vid_w == 1
)
):
screenshot_path = os.getcwd() + "/webserver/static/img/emptyimage.jpg"
try:
f = open(screenshot_path, "rb")
contents = f.read()
f.close()
return contents
except Exception as e:
self.manager.log(
"Error loading image {}: Err: {}".format(
self.manager.screenshot_path, str(e)
)
)
return False
@cherrypy.expose
def load_pixel_image(self, **params):
try:
f = open(self.manager.pixel_image_path, "rb")
contents = f.read()
f.close()
return contents
except Exception as e:
self.manager.log(
"Error loading image {}: Err: {}".format(
self.manager.pixel_image_path, str(e)
)
)
return False
if __name__ == "__main__":
AuroraManager = AuroraManager()
if AuroraManager.config.getboolean("WEBSERVER", "enabled") == True:
conf = {
"/": {
"tools.sessions.on": True,
"tools.staticdir.root": os.path.abspath(os.getcwd()),
},
"/assets": {
"tools.staticdir.on": True,
"tools.staticdir.dir": "./webserver/static",
},
"/favicon.ico": {
"tools.staticfile.on": True,
"tools.staticfile.filename": os.path.abspath(os.getcwd())
+ "/webserver/static/favicon/favicon.ico",
},
}
cherrypy.config.update(
{"log.screen": False, "log.access_file": "", "log.error_file": ""}
)
cherrypy.config.update(
{
"server.socket_port": AuroraManager.config.getint(
"WEBSERVER", "server_port"
)
}
)
cherrypy.config.update(
{"server.socket_host": AuroraManager.config.get("WEBSERVER", "listen_host")}
)
cherrypy.config.update({"engine.autoreload.on": False})
cherrypy.tree.mount(Aurora_Webserver(AuroraManager), "/", conf)
cherrypy.engine.start()
while True:
AuroraManager.loop()
time.sleep(0.001)
# do other work
================================================
FILE: README.md
================================================
[](https://join.slack.com/t/auroraambientlighting/shared_invite/zt-sib46ode-0rE3GqXFEcHd_H_y_nG~oA)

# Aurora
Aurora is an ambient light system built with an HDMI switch, and HDMI capture card, a Raspberry Pi and an LED strip. There is a full writeup of how this came to be at https://www.andrewmohawk.com/2021/05/25/aurora-ambient-lighting/ and a build guide at https://www.andrewmohawk.com/2021/05/24/aurora-how-to-build/
# Help
Feel free to submit PRs for the project to improve the code base or add your own visualisations. Please remember to update the VERSION when you are doing a new PR. If you *need* help with any part of the project feel free to email or you can join the gitter at https://gitter.im/AuroraAmbientLighting/community
# Extending
While the documentation for extending and building your own hasnt been fully written up, the TL;DR is to copy the example extenion in the `extensions` folder, change the metadata and restart Aurora with `sudo service aurora restart`, once it has picked up the new file you can simply make changes and then click load extension in the main interface.
Please note when changing your `visualise` function you need to make it non-locking or the interface will not be able to communicate with it. The interface will pause for 0.01s before running visualise() again between each run
# Install
The install for this requires a hardware and software setup. You can follow the install guide at https://www.andrewmohawk.com/2021/05/24/aurora-how-to-build/
The flow diagram looks as follows:

For just grabbing the software you can use this one liner:
```
wget https://raw.githubusercontent.com/AndrewMohawk/Aurora/master/install.sh -O - | sudo /bin/bash
```
================================================
FILE: VERSION
================================================
0.42-catsdontlikefireworks
================================================
FILE: __init__.py
================================================
================================================
FILE: apt-requirements.txt
================================================
================================================
FILE: aurora.service
================================================
[Unit]
Description=Aurora light system
After=multi-user.target
StartLimitInterval=200
StartLimitBurst=5
[Service]
WorkingDirectory=/opt/Aurora/
User=root
Type=idle
ExecStart=/usr/bin/sudo /usr/bin/python3 Aurora.py 2>&1 > /var/log/Aurora.log
Restart=always
RestartSec=30s
[Install]
WantedBy=multi-user.target
================================================
FILE: extensions/Aurora_Ambient_16x9.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
import numpy as np
import pandas as pd
import cv2
class Aurora_Ambient_16x9(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "This extension takes the HDMI input and crops the image to 16:9 (hopefully) removing the black borders"
self.Name = "Aurora Ambient Lighting (16x9)"
self.count = 0
self.current_frame = False
self.aspect_cropped_frame = False
self.percent = 3
self.aspectRatio = 16.0 / 9.0
def aspectCrop(self, image, ratio):
vid_h, vid_w, channels = image.shape
# work out the size of the 'gaps'
aspectRatioGap = vid_h - (vid_w / self.aspectRatio)
aspectRatioGap = aspectRatioGap / 2 # since we want to put some top and bottom
aspectRatioGap = int(aspectRatioGap)
aspect_frame = image[aspectRatioGap : vid_h - aspectRatioGap, 0:vid_w]
return aspect_frame
def takeScreenShot(self, filepath):
ret, self.current_frame = self.getFrame()
vid_h, vid_w, channels = self.current_frame.shape
aspectRatioGap = vid_h - (vid_w / self.aspectRatio)
aspectRatioGap = aspectRatioGap / 2 # since we want to put some top and bottom
aspectRatioGap = int(aspectRatioGap)
borderEdges = [0, aspectRatioGap, 0, aspectRatioGap]
return super().takeScreenShot(filepath, borderEdges=borderEdges)
def visualise(self):
# Capture the video frame
ret, self.current_frame = self.getFrame()
self.aspect_cropped_frame = self.aspectCrop(
self.current_frame, self.aspectRatio
)
self.visualiseFrame(self.aspect_cropped_frame)
================================================
FILE: extensions/Aurora_Ambient_AutoCrop.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
import datetime
import numpy as np
import pandas as pd
import cv2
class Aurora_Ambient_AutoCrop(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "This extension takes the HDMI input and calculates a border (including cropping for black borders) to work out ambient lighting for behind the display."
self.Name = "Aurora Ambient Lighting ( AutoCrop )"
self.count = 0
self.current_frame = False
self.cropped_frame = False
self.percent = 3
self.edgeDarkness = (
5 # this defines the darkness that makes the edges for autocrop
)
def takeScreenShot(self, filepath, autocrop=False):
return super().takeScreenShot(filepath, self.edgeDarkness)
def autocrop(self, image, threshold=0):
"""Crops any edges below or equal to threshold
Crops blank image to 1x1.
Returns cropped image.
"""
if len(image.shape) == 3:
flatImage = np.max(image, 2)
else:
flatImage = image
assert len(flatImage.shape) == 2
rows = np.where(np.max(flatImage, 0) > threshold)[0]
if rows.size:
cols = np.where(np.max(flatImage, 1) > threshold)[0]
image = image[cols[0] : cols[-1] + 1, rows[0] : rows[-1] + 1]
else:
image = image[:1, :1]
return image
def visualise(self):
# Capture the video frame
# stopwatchStartTime = datetime.datetime.now()
# totalStartTime = stopwatchStartTime
ret, self.current_frame = self.getFrame()
self.vid_h, self.vid_w, self.channels = self.current_frame.shape
# self.log(f"GetFrame: {datetime.datetime.now()-stopwatchStartTime}")
# stopwatchStartTime = datetime.datetime.now()
self.autocropped_frame = self.autocrop(self.current_frame, self.edgeDarkness)
# self.log(f"AutoCropTime: {datetime.datetime.now()-stopwatchStartTime}")
self.visualiseFrame(self.autocropped_frame)
================================================
FILE: extensions/Aurora_Ambient_NoCrop.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
import datetime
import numpy as np
import pandas as pd
import cv2
class Aurora_Ambient_NoCrop(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "This extension takes the HDMI input and calculates a border (WITHOUT cropping) to work out ambient lighting for behind the display. This one is slightly faster as it doesnt need to do any of the maths to work out the cropping."
self.Name = "Aurora Ambient Lighting ( No crop )"
self.count = 0
self.current_frame = False
self.percent = 3
def autocrop(self, image, threshold=0):
"""Crops any edges below or equal to threshold
Crops blank image to 1x1.
Returns cropped image.
"""
if len(image.shape) == 3:
flatImage = np.max(image, 2)
else:
flatImage = image
assert len(flatImage.shape) == 2
rows = np.where(np.max(flatImage, 0) > threshold)[0]
if rows.size:
cols = np.where(np.max(flatImage, 1) > threshold)[0]
image = image[cols[0] : cols[-1] + 1, rows[0] : rows[-1] + 1]
else:
image = image[:1, :1]
return image
def takeScreenShot(self, filepath):
screenshot_frame = self.current_frame
widthPixels = int(self.vid_w * (self.percent / 100)) + 1
heightPixels = int(self.vid_h * (self.percent / 100) * 2) + 1
colour = (0, 0, 255)
# top
screenshot_frame = cv2.rectangle(
screenshot_frame, (0, 0), (self.vid_w, heightPixels), (0, 0, 255), 1
)
# bottom
screenshot_frame = cv2.rectangle(
screenshot_frame,
(0, self.vid_h - heightPixels),
(self.vid_w, self.vid_h),
(0, 0, 255),
1,
)
# left
screenshot_frame = cv2.rectangle(
screenshot_frame, (0, 0), (widthPixels, self.vid_h), (0, 0, 255), 1
)
# right
screenshot_frame = cv2.rectangle(
screenshot_frame,
(self.vid_w - widthPixels, 0),
(self.vid_w, self.vid_h),
(0, 0, 255),
1,
)
cv2.imwrite(filepath, screenshot_frame)
return True
def visualise(self):
# Capture the video frame
ret, self.current_frame = self.getFrame()
self.visualiseFrame(self.current_frame)
================================================
FILE: extensions/Aurora_AudioSpectogram.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
import datetime
import numpy as np
import pandas as pd
import sounddevice as sd
from time import sleep
import sys
from collections import deque
import math
class Aurora_AudioSpectogram(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "This extension creates a rainbow audio spectogram, based somewhat on the code found at https://python-sounddevice.readthedocs.io/en/0.3.3/examples.html"
self.Name = "Aurora Audio Spectrogram"
self.count = 0
self.current_frame = False
self.columns = 100
self.gain = 10
self.low = 10
self.high = 2500
# Lets find the right device
self.deviceID = sd.default.device["input"]
self.log("Starting Audio spectogram with Device {}".format(self.deviceID))
self.samplerate = sd.query_devices(self.deviceID, "input")["default_samplerate"]
self.delta_f = (self.high - self.low) / (self.columns - 1)
self.fftsize = math.ceil(self.samplerate / self.delta_f)
self.low_bin = math.floor(self.low / self.delta_f)
self.threshhold = 40
self.pixelCount_nobottom = self.pixelsLeft + self.pixelsRight + self.pixelsTop
self.streamstarted = False
self.noHDMI = True
def takeScreenShot(self, filepath):
# We have no screenshot since... well its just LEDs
return True
def startAudioStream(self):
if self.streamstarted == True:
while self.streamstarted == True:
with sd.InputStream(
device=self.deviceID,
channels=1,
callback=self.visualiseAudio,
blocksize=int(self.samplerate * 50 / 1000),
samplerate=self.samplerate,
):
# running stream
sd.wait()
def teardown(self):
# incase things need to be broken down
self.log("Tearing down {}".format(self.Name))
self.fade_out_pixels()
sd.stop()
def fadeToBlack(self, pixelPos):
fadeValue = 128
b, g, r = self.pixels[pixelPos]
r = 0 if r <= 10 else int(r - (r * fadeValue / 255))
g = 0 if g <= 10 else int(g - (g * fadeValue / 255))
b = 0 if b <= 10 else int(b - (b * fadeValue / 255))
self.pixels[pixelPos] = (b, g, r)
def wheel(self, pos):
# Input a value 0 to 255 to get a color value.
# The colours are a transition r - g - b - back to r.
if pos < 0 or pos > 255:
return (0, 0, 0)
if pos < 85:
return (255 - pos * 3, pos * 3, 0)
if pos < 170:
pos -= 85
return (0, 255 - pos * 3, pos * 3)
pos -= 170
return (pos * 3, 0, 255 - pos * 3)
def rainbow_cycle(self, j):
for i in range(self.pixelCount_nobottom):
rc_index = (i * 256 // self.pixelCount_nobottom) + j
self.pixels[i] = self.wheel(rc_index & 255)
self.getFrame(False) # hack to have 'FPS'
self.pixels.show()
def visualiseAudio(self, indata, frames, time, status):
if any(indata):
magnitude = np.abs(np.fft.rfft(indata[:, 0], n=self.fftsize))
magnitude *= self.gain / self.fftsize
audio_channels = []
for x in magnitude[self.low_bin : self.low_bin + self.columns]:
audio_channel_val = int(np.clip(x, 0, 1) * (255))
if audio_channel_val >= self.threshhold:
audio_channels.append(audio_channel_val)
else:
audio_channels.append(0)
d = deque(audio_channels)
d.rotate(self.pixelsLeft) # start top left? why not.
audio_channels = list(d)
chan_led_width = round(self.pixelCount_nobottom / len(audio_channels))
for key, val in enumerate(audio_channels):
first_pixel = key * chan_led_width
last_pixel = first_pixel + chan_led_width - 1
if last_pixel > self.pixelCount_nobottom:
last_pixel = self.pixelCount_nobottom - 1
for pNum in range(first_pixel, last_pixel + 1):
col = self.wheel(pNum)
if val != 0:
self.pixels[pNum] = col
else:
self.fadeToBlack(pNum)
count = 0
for x in audio_channels:
if x != 0:
count += 1
testLine = ""
for i in range(len(audio_channels)):
testLine += str(audio_channels[i]).zfill(2) + "|"
count = 0
for x in self.pixels:
if x != [0, 0, 0]:
count += 1
self.pixels.show()
else:
self.log("No Audio data in")
def visualise(self):
with sd.InputStream(
device=self.deviceID,
channels=1,
callback=self.visualiseAudio,
blocksize=int(self.samplerate * 50 / 1000),
samplerate=self.samplerate,
):
# running stream
sd.wait()
time.sleep(0.01)
================================================
FILE: extensions/Aurora_Configure.py
================================================
from lib.AuroraExtension import AuroraExtension
import neopixel
import time
import datetime
import numpy as np
import pandas as pd
import board
import cv2
import sys
class Aurora_Configure(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "This extension configures the LEDs"
self.Name = "Aurora Ambient Lighting Configuration"
self.count = 0
self.current_frame = False
self.percent = 3
def setup(self):
return True
def visualise(self):
# Capture the video frame
ret, self.current_frame = self.getFrame()
self.vid_h, self.vid_w, self.channels = self.current_frame.shape
pos = 0
colour = (255, 0, 0) # red
for i in range(pos, pos + self.pixelsLeft):
self.pixels[i] = colour
pos = pos + self.pixelsLeft
colour = (0, 255, 0) # green
for x in range(pos, pos + self.pixelsTop):
self.pixels[x] = colour
pos = pos + self.pixelsTop
colour = (0, 0, 255) # blue
for y in range(pos, pos + self.pixelsRight):
self.pixels[y] = colour
pos = pos + self.pixelsRight
colour = (255, 255, 255) # white
for z in range(pos, pos + self.pixelsBottom):
self.pixels[z] = colour
self.pixels.show()
================================================
FILE: extensions/Aurora_Meteor.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
import datetime
import numpy as np
import pandas as pd
import cv2
from random import randint
class Aurora_Meteor(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = (
"This has a 'meteor' effect in a random colour that shoots around the strip"
)
self.Name = "Aurora Meteor Display ( LED Only )"
self.count = 0
self.current_frame = False
self.meteorSize = 10
self.currentCol = (255, 0, 0)
self.noHDMI = True
self.startTime = time.time()
def takeScreenShot(self, filepath):
# We have no screenshot since... well its just LEDs
return True
def fadeToBlack(self, pixelPos):
fadeValue = 64
b, g, r = self.pixels[pixelPos]
r = 0 if r <= 10 else int(r - (r * fadeValue / 255))
g = 0 if g <= 10 else int(g - (g * fadeValue / 255))
b = 0 if b <= 10 else int(b - (b * fadeValue / 255))
self.pixels[pixelPos] = (b, g, r)
def meteorRain(self, i, col):
# Fade out
for j in range(self.pixelsCount):
if randint(0, 10) > 5:
self.fadeToBlack(j)
for j in range(self.meteorSize):
if (i - j < self.pixelsCount) and (i - j >= 0):
self.pixels[i - j] = col
self.pixels.show()
def visualise(self):
# visualise!
self.count += 5
self.meteorRain(self.count, self.currentCol)
if self.count >= self.pixelsCount + self.meteorSize:
end = time.time()
diff = end - self.startTime
self.startTime = time.time()
self.count = 0
self.currentCol = (randint(0, 255), randint(0, 255), randint(0, 255))
================================================
FILE: extensions/Aurora_Rainbow.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
import datetime
import numpy as np
import pandas as pd
import cv2
class Aurora_Rainbow(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "This extension displays a rainbow pattern on the LEDs, a lot of this code is from https://learn.adafruit.com/circuitpython-essentials/circuitpython-neopixel"
self.Name = "Aurora Rainbow Display ( LED Only )"
self.count = 0
self.current_frame = False
self.noHDMI = True
def takeScreenShot(self, filepath):
# We have no screenshot since... well its just LEDs
return True
def wheel(self, pos):
# Input a value 0 to 255 to get a color value.
# The colours are a transition r - g - b - back to r.
if pos < 0 or pos > 255:
return (0, 0, 0)
if pos < 85:
return (255 - pos * 3, pos * 3, 0)
if pos < 170:
pos -= 85
return (0, 255 - pos * 3, pos * 3)
pos -= 170
return (pos * 3, 0, 255 - pos * 3)
def rainbow_cycle(self, j):
for i in range(self.pixelsCount):
rc_index = (i * 256 // self.pixelsCount) + j
self.pixels[i] = self.wheel(rc_index & 255)
self.getFrame(False) # hack to have 'FPS'
self.pixels.show()
def visualise(self):
# visualise!
self.count += 1
self.rainbow_cycle(self.count)
if self.count == 255:
self.count = 0
time.sleep(0.01)
================================================
FILE: extensions/__init__.py
================================================
================================================
FILE: extensions/exampleExtension.py
================================================
from lib.AuroraExtension import AuroraExtension
import time
from random import randint, choice
import numpy as np
import cv2
class exampleExtension(AuroraExtension):
def __init__(self, NeoPixels, HDMI):
super().__init__(NeoPixels, HDMI)
self.Author = "Andrew MacPherson (@AndrewMohawk)"
self.Description = "Extension Example"
self.Name = "example extension"
self.count = 0
self.randomLED = 0
self.randomSize = 0
self.log("Extension {} Initiated".format(self.Name))
# This doesnt need to be implemented, but can if you want
# def takeScreenShot(self, filepath):
# Fade LEDs to Black (so they dont instantly drop off)
def fadeToBlack(self, pixelPos):
fadeValue = 0.2
b, g, r = self.pixels[pixelPos]
r = 0 if r <= 10 else int(r - (r * fadeValue))
g = 0 if g <= 10 else int(g - (g * fadeValue))
b = 0 if b <= 10 else int(b - (b * fadeValue))
self.pixels[pixelPos] = (b, g, r)
# Fade LEDs to bright (or first block to 255) so they dont just spotlight
def fadeToBright(self, pixelPos):
fadeValue = 1.2
b, g, r = self.pixels[pixelPos]
if r == 255 or g == 255 or b == 255:
return
r = 255 if r >= 200 else int(r + (r * fadeValue))
g = 255 if g >= 200 else int(g + (g * fadeValue))
b = 255 if b >= 200 else int(b + (b * fadeValue))
self.pixels[pixelPos] = (b, g, r)
# This will 'visualise' whatever you want and will be called every ~0.01s
def visualise(self):
# Grab a 'frame' of the screen:
ret, self.current_frame = self.getFrame()
# Theres something on the screen
if ret:
self.count = self.count + 1
if self.count <= 1:
if self.count == 1:
self.log("Setting up colours")
# Lets get a random size for our group of pixels between 5 and 50
self.randomSize = randint(5, 50)
# Lets pick a random LED to turn on
self.randomLED = randint(0, self.pixelsCount - self.randomSize)
# Lets get a random starting colour that we will scale up
self.colour = (randint(0, 10), randint(0, 10), randint(0, 10))
# Set the colour
for x in range(self.randomLED, self.randomLED + self.randomSize):
self.pixels[x] = self.colour
elif self.count < 20:
if self.count == 2:
self.log("Fading up colours")
# Fade it up
for fade_up_pixel in range(
self.randomLED, (self.randomLED + self.randomSize)
):
self.fadeToBright(fade_up_pixel)
elif self.count < 40:
if self.count == 21:
self.log("Fading out colours")
for fade_out_pixel in range(
self.randomLED, (self.randomLED + self.randomSize)
):
self.fadeToBlack(fade_out_pixel)
else:
if self.count == 40:
self.log("Resetting colours")
self.count = 0
# And show it
self.pixels.show()
================================================
FILE: install.sh
================================================
#!/bin/bash
echo -e "
▄▄▄ █ ██ ██▀███ ▒█████ ██▀███ ▄▄▄
▒████▄ ██ ▓██▒▓██ ▒ ██▒▒██▒ ██▒▓██ ▒ ██▒▒████▄
▒██ ▀█▄ ▓██ ▒██░▓██ ░▄█ ▒▒██░ ██▒▓██ ░▄█ ▒▒██ ▀█▄
░██▄▄▄▄██ ▓▓█ ░██░▒██▀▀█▄ ▒██ ██░▒██▀▀█▄ ░██▄▄▄▄██
▓█ ▓██▒▒▒█████▓ ░██▓ ▒██▒░ ████▓▒░░██▓ ▒██▒ ▓█ ▓██▒
▒▒ ▓▒█░░▒▓▒ ▒ ▒ ░ ▒▓ ░▒▓░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ▒▒ ▓▒█░
▒ ▒▒ ░░░▒░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░ ▒ ▒▒ ░
░ ▒ ░░░ ░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒
░ ░ ░ ░ ░ ░ ░ ░ ░
-Install Script-
@AndrewMohawk
"
INSTALLDIR="/opt/Aurora"
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root, please use sudo"
exit 1
fi
if [ -d "$INSTALLDIR" ]
then
echo "Directory $INSTALLDIR exists. Please remove before performing a clean install"
exit 1
fi
echo "[+] Creating Install Directory"
echo "------------------------------"
mkdir $INSTALLDIR
cd $INSTALLDIR
echo "[+] Updating APT and installing dependencies"
echo "------------------------------"
apt update
apt-get install -y libatlas-base-dev libportaudio2 python3-pip git python3-opencv
echo "[+] Git Cloning Aurora base"
echo "------------------------------"
git clone https://github.com/AndrewMohawk/Aurora.git .
cp config.ini.bak config.ini
echo "[+] Installing Python Requirements"
echo "------------------------------"
pip3 install -r requirements.txt
echo "[+] Installing Service"
echo "------------------------------"
cp aurora.service /etc/systemd/system
systemctl enable aurora.service
systemctl start aurora.service
echo "[+] Service Status"
echo "------------------------------"
echo "Aurora status: `systemctl is-active aurora.service`"
echo "[+] Last 20 lines of aurora log"
echo "------------------------------"
journalctl -u aurora -n 20 --no-pager
echo -e "
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
(___|___|___|___|___|___|___|___|___|___|___|___)
"
echo "Complete. You can now browse to the web interface to configure any changes you may need."
localip=$(hostname -I)
echo "This will likely be: http://$localip"
================================================
FILE: requirements.txt
================================================
numpy >= 1.16.5
pandas
opencv-python==4.5.1.48
cherrypy
configparser
adafruit-circuitpython-neopixel
blinker
jinja2
sounddevice
pyaudio
================================================
FILE: update.sh
================================================
#!/bin/bash
echo -e "
▄▄▄ █ ██ ██▀███ ▒█████ ██▀███ ▄▄▄
▒████▄ ██ ▓██▒▓██ ▒ ██▒▒██▒ ██▒▓██ ▒ ██▒▒████▄
▒██ ▀█▄ ▓██ ▒██░▓██ ░▄█ ▒▒██░ ██▒▓██ ░▄█ ▒▒██ ▀█▄
░██▄▄▄▄██ ▓▓█ ░██░▒██▀▀█▄ ▒██ ██░▒██▀▀█▄ ░██▄▄▄▄██
▓█ ▓██▒▒▒█████▓ ░██▓ ▒██▒░ ████▓▒░░██▓ ▒██▒ ▓█ ▓██▒
▒▒ ▓▒█░░▒▓▒ ▒ ▒ ░ ▒▓ ░▒▓░░ ▒░▒░▒░ ░ ▒▓ ░▒▓░ ▒▒ ▓▒█░
▒ ▒▒ ░░░▒░ ░ ░ ░▒ ░ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░ ▒ ▒▒ ░
░ ▒ ░░░ ░ ░ ░░ ░ ░ ░ ░ ▒ ░░ ░ ░ ▒
░ ░ ░ ░ ░ ░ ░ ░ ░
-Update Script-
@AndrewMohawk
"
INSTALLDIR="/opt/Aurora"
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root, please use sudo"
exit 1
fi
if [ ! -d "$INSTALLDIR" ]
then
echo "Directory $INSTALLDIR Does not exist. Please run install first or update the install directory"
exit 1
fi
cd $INSTALLDIR
if [ -d .git ]; then
echo "[+] Git Cloning Aurora base"
echo "------------------------------"
git pull
echo "[+] Stopping Aurora"
echo "------------------------------"
service aurora stop
echo "[+] Service Status"
echo "------------------------------"
echo "Aurora status: `systemctl is-active aurora.service`"
echo "[+] Starting Aurora"
echo "------------------------------"
service aurora start
echo "[+] Service Status"
echo "------------------------------"
echo "Aurora status: `systemctl is-active aurora.service`"
echo "[+] Last 20 lines of aurora log"
echo "------------------------------"
journalctl -u aurora -n 20 --no-pager
echo -e "
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
(___|___|___|___|___|___|___|___|___|___|___|___)
"
echo "Complete. You can now browse to the web interface to configure any changes you may need."
localip=$(hostname -I)
echo "This will likely be: http://$localip"
else
echo "This install directory ($INSTALLDIR) is *NOT* a git repo."
fi;
================================================
FILE: webserver/static/css/bootstrap.css
================================================
/*!
* Bootstrap v4.5 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
html {
box-sizing: border-box;
-ms-overflow-style: scrollbar;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #212529;
text-align: left;
background-color: #fff;
}
[tabindex="-1"]:focus:not(:focus-visible) {
outline: 0 !important;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: 0.46875rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg {
overflow: hidden;
vertical-align: middle;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
[role="button"] {
cursor: pointer;
}
select {
word-wrap: normal;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.46875rem;
font-weight: 500;
line-height: 1.2;
}
h1, .h1 {
font-size: 2.5rem;
}
h2, .h2 {
font-size: 2rem;
}
h3, .h3 {
font-size: 1.75rem;
}
h4, .h4 {
font-size: 1.5rem;
}
h5, .h5 {
font-size: 1.25rem;
}
h6, .h6 {
font-size: 1rem;
}
.lead {
font-size: 1.25rem;
font-weight: 300;
}
.display-1 {
font-size: 6rem;
font-weight: 300;
line-height: 1.2;
}
.display-2 {
font-size: 5.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-3 {
font-size: 4.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-4 {
font-size: 3.5rem;
font-weight: 300;
line-height: 1.2;
}
hr {
margin-top: 0.9375rem;
margin-bottom: 0.9375rem;
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
small,
.small {
font-size: 80%;
font-weight: 400;
}
mark,
.mark {
padding: 0.2em;
background-color: #fcf8e3;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
list-style: none;
}
.list-inline-item {
display: inline-block;
}
.list-inline-item:not(:last-child) {
margin-right: 0.5rem;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
.blockquote {
margin-bottom: 0.9375rem;
font-size: 1.25rem;
}
.blockquote-footer {
display: block;
font-size: 80%;
color: #6c757d;
}
.blockquote-footer::before {
content: "\2014\00A0";
}
.img-fluid {
max-width: 100%;
height: auto;
}
.img-thumbnail {
padding: 0.25rem;
background-color: #fff;
border: 1px solid #dee2e6;
border-radius: 0.25rem;
max-width: 100%;
height: auto;
}
.figure {
display: inline-block;
}
.figure-img {
margin-bottom: 0.46875rem;
line-height: 1;
}
.figure-caption {
font-size: 90%;
color: #6c757d;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container, .container-sm {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container, .container-sm, .container-md {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container, .container-sm, .container-md, .container-lg {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container, .container-sm, .container-md, .container-lg, .container-xl {
max-width: 1140px;
}
}
.row {
display: flex;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
}
.no-gutters {
margin-right: 0;
margin-left: 0;
}
.no-gutters > .col,
.no-gutters > [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,
.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,
.col-xl-auto {
position: relative;
width: 100%;
padding-right: 15px;
padding-left: 15px;
}
.col {
flex-basis: 0;
flex-grow: 1;
min-width: 0;
max-width: 100%;
}
.row-cols-1 > * {
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-2 > * {
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-3 > * {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.row-cols-4 > * {
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-5 > * {
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-6 > * {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-auto {
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%;
}
.col-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.col-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%;
}
.col-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%;
}
.col-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%;
}
.col-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%;
}
.col-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%;
}
.col-12 {
flex: 0 0 100%;
max-width: 100%;
}
.order-first {
order: -1;
}
.order-last {
order: 13;
}
.order-0 {
order: 0;
}
.order-1 {
order: 1;
}
.order-2 {
order: 2;
}
.order-3 {
order: 3;
}
.order-4 {
order: 4;
}
.order-5 {
order: 5;
}
.order-6 {
order: 6;
}
.order-7 {
order: 7;
}
.order-8 {
order: 8;
}
.order-9 {
order: 9;
}
.order-10 {
order: 10;
}
.order-11 {
order: 11;
}
.order-12 {
order: 12;
}
.offset-1 {
margin-left: 8.33333%;
}
.offset-2 {
margin-left: 16.66667%;
}
.offset-3 {
margin-left: 25%;
}
.offset-4 {
margin-left: 33.33333%;
}
.offset-5 {
margin-left: 41.66667%;
}
.offset-6 {
margin-left: 50%;
}
.offset-7 {
margin-left: 58.33333%;
}
.offset-8 {
margin-left: 66.66667%;
}
.offset-9 {
margin-left: 75%;
}
.offset-10 {
margin-left: 83.33333%;
}
.offset-11 {
margin-left: 91.66667%;
}
@media (min-width: 576px) {
.col-sm {
flex-basis: 0;
flex-grow: 1;
min-width: 0;
max-width: 100%;
}
.row-cols-sm-1 > * {
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-sm-2 > * {
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-sm-3 > * {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.row-cols-sm-4 > * {
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-sm-5 > * {
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-sm-6 > * {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-sm-auto {
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-sm-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%;
}
.col-sm-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-sm-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.col-sm-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%;
}
.col-sm-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%;
}
.col-sm-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%;
}
.col-sm-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%;
}
.col-sm-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%;
}
.col-sm-12 {
flex: 0 0 100%;
max-width: 100%;
}
.order-sm-first {
order: -1;
}
.order-sm-last {
order: 13;
}
.order-sm-0 {
order: 0;
}
.order-sm-1 {
order: 1;
}
.order-sm-2 {
order: 2;
}
.order-sm-3 {
order: 3;
}
.order-sm-4 {
order: 4;
}
.order-sm-5 {
order: 5;
}
.order-sm-6 {
order: 6;
}
.order-sm-7 {
order: 7;
}
.order-sm-8 {
order: 8;
}
.order-sm-9 {
order: 9;
}
.order-sm-10 {
order: 10;
}
.order-sm-11 {
order: 11;
}
.order-sm-12 {
order: 12;
}
.offset-sm-0 {
margin-left: 0;
}
.offset-sm-1 {
margin-left: 8.33333%;
}
.offset-sm-2 {
margin-left: 16.66667%;
}
.offset-sm-3 {
margin-left: 25%;
}
.offset-sm-4 {
margin-left: 33.33333%;
}
.offset-sm-5 {
margin-left: 41.66667%;
}
.offset-sm-6 {
margin-left: 50%;
}
.offset-sm-7 {
margin-left: 58.33333%;
}
.offset-sm-8 {
margin-left: 66.66667%;
}
.offset-sm-9 {
margin-left: 75%;
}
.offset-sm-10 {
margin-left: 83.33333%;
}
.offset-sm-11 {
margin-left: 91.66667%;
}
}
@media (min-width: 768px) {
.col-md {
flex-basis: 0;
flex-grow: 1;
min-width: 0;
max-width: 100%;
}
.row-cols-md-1 > * {
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-md-2 > * {
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-md-3 > * {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.row-cols-md-4 > * {
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-md-5 > * {
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-md-6 > * {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-md-auto {
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-md-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%;
}
.col-md-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-md-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.col-md-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%;
}
.col-md-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%;
}
.col-md-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%;
}
.col-md-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%;
}
.col-md-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%;
}
.col-md-12 {
flex: 0 0 100%;
max-width: 100%;
}
.order-md-first {
order: -1;
}
.order-md-last {
order: 13;
}
.order-md-0 {
order: 0;
}
.order-md-1 {
order: 1;
}
.order-md-2 {
order: 2;
}
.order-md-3 {
order: 3;
}
.order-md-4 {
order: 4;
}
.order-md-5 {
order: 5;
}
.order-md-6 {
order: 6;
}
.order-md-7 {
order: 7;
}
.order-md-8 {
order: 8;
}
.order-md-9 {
order: 9;
}
.order-md-10 {
order: 10;
}
.order-md-11 {
order: 11;
}
.order-md-12 {
order: 12;
}
.offset-md-0 {
margin-left: 0;
}
.offset-md-1 {
margin-left: 8.33333%;
}
.offset-md-2 {
margin-left: 16.66667%;
}
.offset-md-3 {
margin-left: 25%;
}
.offset-md-4 {
margin-left: 33.33333%;
}
.offset-md-5 {
margin-left: 41.66667%;
}
.offset-md-6 {
margin-left: 50%;
}
.offset-md-7 {
margin-left: 58.33333%;
}
.offset-md-8 {
margin-left: 66.66667%;
}
.offset-md-9 {
margin-left: 75%;
}
.offset-md-10 {
margin-left: 83.33333%;
}
.offset-md-11 {
margin-left: 91.66667%;
}
}
@media (min-width: 992px) {
.col-lg {
flex-basis: 0;
flex-grow: 1;
min-width: 0;
max-width: 100%;
}
.row-cols-lg-1 > * {
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-lg-2 > * {
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-lg-3 > * {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.row-cols-lg-4 > * {
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-lg-5 > * {
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-lg-6 > * {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-lg-auto {
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-lg-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%;
}
.col-lg-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-lg-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.col-lg-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%;
}
.col-lg-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%;
}
.col-lg-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%;
}
.col-lg-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%;
}
.col-lg-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%;
}
.col-lg-12 {
flex: 0 0 100%;
max-width: 100%;
}
.order-lg-first {
order: -1;
}
.order-lg-last {
order: 13;
}
.order-lg-0 {
order: 0;
}
.order-lg-1 {
order: 1;
}
.order-lg-2 {
order: 2;
}
.order-lg-3 {
order: 3;
}
.order-lg-4 {
order: 4;
}
.order-lg-5 {
order: 5;
}
.order-lg-6 {
order: 6;
}
.order-lg-7 {
order: 7;
}
.order-lg-8 {
order: 8;
}
.order-lg-9 {
order: 9;
}
.order-lg-10 {
order: 10;
}
.order-lg-11 {
order: 11;
}
.order-lg-12 {
order: 12;
}
.offset-lg-0 {
margin-left: 0;
}
.offset-lg-1 {
margin-left: 8.33333%;
}
.offset-lg-2 {
margin-left: 16.66667%;
}
.offset-lg-3 {
margin-left: 25%;
}
.offset-lg-4 {
margin-left: 33.33333%;
}
.offset-lg-5 {
margin-left: 41.66667%;
}
.offset-lg-6 {
margin-left: 50%;
}
.offset-lg-7 {
margin-left: 58.33333%;
}
.offset-lg-8 {
margin-left: 66.66667%;
}
.offset-lg-9 {
margin-left: 75%;
}
.offset-lg-10 {
margin-left: 83.33333%;
}
.offset-lg-11 {
margin-left: 91.66667%;
}
}
@media (min-width: 1200px) {
.col-xl {
flex-basis: 0;
flex-grow: 1;
min-width: 0;
max-width: 100%;
}
.row-cols-xl-1 > * {
flex: 0 0 100%;
max-width: 100%;
}
.row-cols-xl-2 > * {
flex: 0 0 50%;
max-width: 50%;
}
.row-cols-xl-3 > * {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.row-cols-xl-4 > * {
flex: 0 0 25%;
max-width: 25%;
}
.row-cols-xl-5 > * {
flex: 0 0 20%;
max-width: 20%;
}
.row-cols-xl-6 > * {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-xl-auto {
flex: 0 0 auto;
width: auto;
max-width: 100%;
}
.col-xl-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%;
}
.col-xl-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%;
}
.col-xl-3 {
flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%;
}
.col-xl-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%;
}
.col-xl-6 {
flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%;
}
.col-xl-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%;
}
.col-xl-9 {
flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%;
}
.col-xl-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%;
}
.col-xl-12 {
flex: 0 0 100%;
max-width: 100%;
}
.order-xl-first {
order: -1;
}
.order-xl-last {
order: 13;
}
.order-xl-0 {
order: 0;
}
.order-xl-1 {
order: 1;
}
.order-xl-2 {
order: 2;
}
.order-xl-3 {
order: 3;
}
.order-xl-4 {
order: 4;
}
.order-xl-5 {
order: 5;
}
.order-xl-6 {
order: 6;
}
.order-xl-7 {
order: 7;
}
.order-xl-8 {
order: 8;
}
.order-xl-9 {
order: 9;
}
.order-xl-10 {
order: 10;
}
.order-xl-11 {
order: 11;
}
.order-xl-12 {
order: 12;
}
.offset-xl-0 {
margin-left: 0;
}
.offset-xl-1 {
margin-left: 8.33333%;
}
.offset-xl-2 {
margin-left: 16.66667%;
}
.offset-xl-3 {
margin-left: 25%;
}
.offset-xl-4 {
margin-left: 33.33333%;
}
.offset-xl-5 {
margin-left: 41.66667%;
}
.offset-xl-6 {
margin-left: 50%;
}
.offset-xl-7 {
margin-left: 58.33333%;
}
.offset-xl-8 {
margin-left: 66.66667%;
}
.offset-xl-9 {
margin-left: 75%;
}
.offset-xl-10 {
margin-left: 83.33333%;
}
.offset-xl-11 {
margin-left: 91.66667%;
}
}
.table {
width: 100%;
margin-bottom: 0.9375rem;
color: #212529;
}
.table th,
.table td {
padding: 0.75rem;
vertical-align: top;
border-top: 1px solid #dee2e6;
}
.table thead th {
vertical-align: bottom;
border-bottom: 2px solid #dee2e6;
}
.table tbody + tbody {
border-top: 2px solid #dee2e6;
}
.table-sm th,
.table-sm td {
padding: 0.3rem;
}
.table-bordered {
border: 1px solid #dee2e6;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #dee2e6;
}
.table-bordered thead th,
.table-bordered thead td {
border-bottom-width: 2px;
}
.table-borderless th,
.table-borderless td,
.table-borderless thead th,
.table-borderless tbody + tbody {
border: 0;
}
.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(0, 0, 0, 0.05);
}
.table-hover tbody tr:hover {
color: #212529;
background-color: rgba(0, 0, 0, 0.075);
}
.table-primary,
.table-primary > th,
.table-primary > td {
background-color: #b8daff;
}
.table-primary th,
.table-primary td,
.table-primary thead th,
.table-primary tbody + tbody {
border-color: #7abaff;
}
.table-hover .table-primary:hover {
background-color: #9fcdff;
}
.table-hover .table-primary:hover > td,
.table-hover .table-primary:hover > th {
background-color: #9fcdff;
}
.table-secondary,
.table-secondary > th,
.table-secondary > td {
background-color: #d6d8db;
}
.table-secondary th,
.table-secondary td,
.table-secondary thead th,
.table-secondary tbody + tbody {
border-color: #b3b7bb;
}
.table-hover .table-secondary:hover {
background-color: #c8cbcf;
}
.table-hover .table-secondary:hover > td,
.table-hover .table-secondary:hover > th {
background-color: #c8cbcf;
}
.table-success,
.table-success > th,
.table-success > td {
background-color: #c3e6cb;
}
.table-success th,
.table-success td,
.table-success thead th,
.table-success tbody + tbody {
border-color: #8fd19e;
}
.table-hover .table-success:hover {
background-color: #b1dfbb;
}
.table-hover .table-success:hover > td,
.table-hover .table-success:hover > th {
background-color: #b1dfbb;
}
.table-info,
.table-info > th,
.table-info > td {
background-color: #bee5eb;
}
.table-info th,
.table-info td,
.table-info thead th,
.table-info tbody + tbody {
border-color: #86cfda;
}
.table-hover .table-info:hover {
background-color: #abdde5;
}
.table-hover .table-info:hover > td,
.table-hover .table-info:hover > th {
background-color: #abdde5;
}
.table-warning,
.table-warning > th,
.table-warning > td {
background-color: #ffeeba;
}
.table-warning th,
.table-warning td,
.table-warning thead th,
.table-warning tbody + tbody {
border-color: #ffdf7e;
}
.table-hover .table-warning:hover {
background-color: #ffe8a1;
}
.table-hover .table-warning:hover > td,
.table-hover .table-warning:hover > th {
background-color: #ffe8a1;
}
.table-danger,
.table-danger > th,
.table-danger > td {
background-color: #f5c6cb;
}
.table-danger th,
.table-danger td,
.table-danger thead th,
.table-danger tbody + tbody {
border-color: #ed969e;
}
.table-hover .table-danger:hover {
background-color: #f1b0b7;
}
.table-hover .table-danger:hover > td,
.table-hover .table-danger:hover > th {
background-color: #f1b0b7;
}
.table-light,
.table-light > th,
.table-light > td {
background-color: #fdfdfe;
}
.table-light th,
.table-light td,
.table-light thead th,
.table-light tbody + tbody {
border-color: #fbfcfc;
}
.table-hover .table-light:hover {
background-color: #ececf6;
}
.table-hover .table-light:hover > td,
.table-hover .table-light:hover > th {
background-color: #ececf6;
}
.table-dark,
.table-dark > th,
.table-dark > td {
background-color: #c6c8ca;
}
.table-dark th,
.table-dark td,
.table-dark thead th,
.table-dark tbody + tbody {
border-color: #95999c;
}
.table-hover .table-dark:hover {
background-color: #b9bbbe;
}
.table-hover .table-dark:hover > td,
.table-hover .table-dark:hover > th {
background-color: #b9bbbe;
}
.table-active,
.table-active > th,
.table-active > td {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover > td,
.table-hover .table-active:hover > th {
background-color: rgba(0, 0, 0, 0.075);
}
.table .thead-dark th {
color: #fff;
background-color: #343a40;
border-color: #454d55;
}
.table .thead-light th {
color: #495057;
background-color: #e9ecef;
border-color: #dee2e6;
}
.table-dark {
color: #fff;
background-color: #343a40;
}
.table-dark th,
.table-dark td,
.table-dark thead th {
border-color: #454d55;
}
.table-dark.table-bordered {
border: 0;
}
.table-dark.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(255, 255, 255, 0.05);
}
.table-dark.table-hover tbody tr:hover {
color: #fff;
background-color: rgba(255, 255, 255, 0.075);
}
@media (max-width: 575.98px) {
.table-responsive-sm {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-sm > .table-bordered {
border: 0;
}
}
@media (max-width: 767.98px) {
.table-responsive-md {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-md > .table-bordered {
border: 0;
}
}
@media (max-width: 991.98px) {
.table-responsive-lg {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-lg > .table-bordered {
border: 0;
}
}
@media (max-width: 1199.98px) {
.table-responsive-xl {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive-xl > .table-bordered {
border: 0;
}
}
.table-responsive {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table-responsive > .table-bordered {
border: 0;
}
.form-control {
display: block;
width: 100%;
height: calc(1.5em + 1.5rem + 2px);
padding: 0.75rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.form-control {
transition: none;
}
}
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #495057;
}
.form-control:focus {
color: #495057;
background-color: #fff;
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
}
.form-control::placeholder {
color: #6c757d;
opacity: 1;
}
.form-control:disabled, .form-control[readonly] {
background-color: #e9ecef;
opacity: 1;
}
input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control,
input[type="month"].form-control {
appearance: none;
}
select.form-control:focus::-ms-value {
color: #495057;
background-color: #fff;
}
.form-control-file,
.form-control-range {
display: block;
width: 100%;
}
.col-form-label {
padding-top: calc(0.75rem + 1px);
padding-bottom: calc(0.75rem + 1px);
margin-bottom: 0;
font-size: inherit;
line-height: 1.5;
}
.col-form-label-lg {
padding-top: calc(0.5rem + 1px);
padding-bottom: calc(0.5rem + 1px);
font-size: 1.25rem;
line-height: 1.5;
}
.col-form-label-sm {
padding-top: calc(0.25rem + 1px);
padding-bottom: calc(0.25rem + 1px);
font-size: 0.875rem;
line-height: 1.5;
}
.form-control-plaintext {
display: block;
width: 100%;
padding: 0.75rem 0;
margin-bottom: 0;
font-size: 1rem;
line-height: 1.5;
color: #212529;
background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {
padding-right: 0;
padding-left: 0;
}
.form-control-sm {
height: calc(1.5em + 0.5rem + 2px);
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.form-control-lg {
height: calc(1.5em + 1rem + 2px);
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
select.form-control[size], select.form-control[multiple] {
height: auto;
}
textarea.form-control {
height: auto;
}
.form-group {
margin-bottom: 1rem;
}
.form-text {
display: block;
margin-top: 0.25rem;
}
.form-row {
display: flex;
flex-wrap: wrap;
margin-right: -5px;
margin-left: -5px;
}
.form-row > .col,
.form-row > [class*="col-"] {
padding-right: 5px;
padding-left: 5px;
}
.form-check {
position: relative;
display: block;
padding-left: 1.25rem;
}
.form-check-input {
position: absolute;
margin-top: 0.3rem;
margin-left: -1.25rem;
}
.form-check-input[disabled] ~ .form-check-label,
.form-check-input:disabled ~ .form-check-label {
color: #6c757d;
}
.form-check-label {
margin-bottom: 0;
}
.form-check-inline {
display: inline-flex;
align-items: center;
padding-left: 0;
margin-right: 0.75rem;
}
.form-check-inline .form-check-input {
position: static;
margin-top: 0;
margin-right: 0.3125rem;
margin-left: 0;
}
.valid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #28a745;
}
.valid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: 0.25rem 0.5rem;
margin-top: .1rem;
font-size: 0.875rem;
line-height: 1.5;
color: #fff;
background-color: rgba(40, 167, 69, 0.9);
border-radius: 0.25rem;
}
.was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip,
.is-valid ~ .valid-feedback,
.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .form-control:valid, .form-control.is-valid {
border-color: #28a745;
padding-right: calc(1.5em + 1.5rem);
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right calc(0.375em + 0.375rem) center;
background-size: calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
border-color: #28a745;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
padding-right: calc(1.5em + 1.5rem);
background-position: top calc(0.375em + 0.375rem) right calc(0.375em + 0.375rem);
}
.was-validated .custom-select:valid, .custom-select.is-valid {
border-color: #28a745;
padding-right: calc(0.75em + 2.875rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
border-color: #28a745;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {
color: #28a745;
}
.was-validated .form-check-input:valid ~ .valid-feedback,
.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,
.form-check-input.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {
color: #28a745;
}
.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {
border-color: #28a745;
}
.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {
border-color: #34ce57;
background-color: #34ce57;
}
.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before {
border-color: #28a745;
}
.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {
border-color: #28a745;
}
.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {
border-color: #28a745;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.25);
}
.invalid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #dc3545;
}
.invalid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: 0.25rem 0.5rem;
margin-top: .1rem;
font-size: 0.875rem;
line-height: 1.5;
color: #fff;
background-color: rgba(220, 53, 69, 0.9);
border-radius: 0.25rem;
}
.was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip,
.is-invalid ~ .invalid-feedback,
.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .form-control:invalid, .form-control.is-invalid {
border-color: #dc3545;
padding-right: calc(1.5em + 1.5rem);
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right calc(0.375em + 0.375rem) center;
background-size: calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
border-color: #dc3545;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
padding-right: calc(1.5em + 1.5rem);
background-position: top calc(0.375em + 0.375rem) right calc(0.375em + 0.375rem);
}
.was-validated .custom-select:invalid, .custom-select.is-invalid {
border-color: #dc3545;
padding-right: calc(0.75em + 2.875rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.75rem) calc(0.75em + 0.75rem);
}
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
border-color: #dc3545;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {
color: #dc3545;
}
.was-validated .form-check-input:invalid ~ .invalid-feedback,
.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,
.form-check-input.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {
color: #dc3545;
}
.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {
border-color: #dc3545;
}
.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {
border-color: #e4606d;
background-color: #e4606d;
}
.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before {
border-color: #dc3545;
}
.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {
border-color: #dc3545;
}
.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {
border-color: #dc3545;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.25);
}
.form-inline {
display: flex;
flex-flow: row wrap;
align-items: center;
}
.form-inline .form-check {
width: 100%;
}
@media (min-width: 576px) {
.form-inline label {
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 0;
}
.form-inline .form-group {
display: flex;
flex: 0 0 auto;
flex-flow: row wrap;
align-items: center;
margin-bottom: 0;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-plaintext {
display: inline-block;
}
.form-inline .input-group,
.form-inline .custom-select {
width: auto;
}
.form-inline .form-check {
display: flex;
align-items: center;
justify-content: center;
width: auto;
padding-left: 0;
}
.form-inline .form-check-input {
position: relative;
flex-shrink: 0;
margin-top: 0;
margin-right: 0.25rem;
margin-left: 0;
}
.form-inline .custom-control {
align-items: center;
justify-content: center;
}
.form-inline .custom-control-label {
margin-bottom: 0;
}
}
.btn {
display: inline-block;
font-weight: 400;
color: #212529;
text-align: center;
vertical-align: middle;
user-select: none;
background-color: transparent;
border: 1px solid transparent;
padding: 0.75rem 0.75rem;
font-size: 1rem;
line-height: 1.5;
border-radius: 0.25rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.btn {
transition: none;
}
}
.btn:hover {
color: #212529;
text-decoration: none;
}
.btn:focus, .btn.focus {
outline: 0;
box-shadow: 0;
}
.btn.disabled, .btn:disabled {
opacity: 0.65;
}
.btn:not(:disabled):not(.disabled) {
cursor: pointer;
}
a.btn.disabled,
fieldset:disabled a.btn {
pointer-events: none;
}
.btn-primary {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:hover {
color: #fff;
background-color: #0069d9;
border-color: #0062cc;
}
.btn-primary:focus, .btn-primary.focus {
color: #fff;
background-color: #0069d9;
border-color: #0062cc;
box-shadow: 0 0 0 0 rgba(38, 143, 255, 0.5);
}
.btn-primary.disabled, .btn-primary:disabled {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle {
color: #fff;
background-color: #0062cc;
border-color: #005cbf;
}
.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(38, 143, 255, 0.5);
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
.btn-secondary:focus, .btn-secondary.focus {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
box-shadow: 0 0 0 0 rgba(130, 138, 145, 0.5);
}
.btn-secondary.disabled, .btn-secondary:disabled {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
.show > .btn-secondary.dropdown-toggle {
color: #fff;
background-color: #545b62;
border-color: #4e555b;
}
.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
.show > .btn-secondary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(130, 138, 145, 0.5);
}
.btn-success {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success:focus, .btn-success.focus {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5);
}
.btn-success.disabled, .btn-success:disabled {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,
.show > .btn-success.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,
.show > .btn-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(72, 180, 97, 0.5);
}
.btn-info {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:hover {
color: #fff;
background-color: #138496;
border-color: #117a8b;
}
.btn-info:focus, .btn-info.focus {
color: #fff;
background-color: #138496;
border-color: #117a8b;
box-shadow: 0 0 0 0 rgba(58, 176, 195, 0.5);
}
.btn-info.disabled, .btn-info:disabled {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,
.show > .btn-info.dropdown-toggle {
color: #fff;
background-color: #117a8b;
border-color: #10707f;
}
.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,
.show > .btn-info.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(58, 176, 195, 0.5);
}
.btn-warning {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:hover {
color: #212529;
background-color: #e0a800;
border-color: #d39e00;
}
.btn-warning:focus, .btn-warning.focus {
color: #212529;
background-color: #e0a800;
border-color: #d39e00;
box-shadow: 0 0 0 0 rgba(222, 170, 12, 0.5);
}
.btn-warning.disabled, .btn-warning:disabled {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,
.show > .btn-warning.dropdown-toggle {
color: #212529;
background-color: #d39e00;
border-color: #c69500;
}
.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,
.show > .btn-warning.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(222, 170, 12, 0.5);
}
.btn-danger {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:hover {
color: #fff;
background-color: #c82333;
border-color: #bd2130;
}
.btn-danger:focus, .btn-danger.focus {
color: #fff;
background-color: #c82333;
border-color: #bd2130;
box-shadow: 0 0 0 0 rgba(225, 83, 97, 0.5);
}
.btn-danger.disabled, .btn-danger:disabled {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,
.show > .btn-danger.dropdown-toggle {
color: #fff;
background-color: #bd2130;
border-color: #b21f2d;
}
.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,
.show > .btn-danger.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(225, 83, 97, 0.5);
}
.btn-light {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:hover {
color: #212529;
background-color: #e2e6ea;
border-color: #dae0e5;
}
.btn-light:focus, .btn-light.focus {
color: #212529;
background-color: #e2e6ea;
border-color: #dae0e5;
box-shadow: 0 0 0 0 rgba(216, 217, 219, 0.5);
}
.btn-light.disabled, .btn-light:disabled {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
.show > .btn-light.dropdown-toggle {
color: #212529;
background-color: #dae0e5;
border-color: #d3d9df;
}
.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
.show > .btn-light.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(216, 217, 219, 0.5);
}
.btn-dark {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:hover {
color: #fff;
background-color: #23272b;
border-color: #1d2124;
}
.btn-dark:focus, .btn-dark.focus {
color: #fff;
background-color: #23272b;
border-color: #1d2124;
box-shadow: 0 0 0 0 rgba(82, 88, 93, 0.5);
}
.btn-dark.disabled, .btn-dark:disabled {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
.show > .btn-dark.dropdown-toggle {
color: #fff;
background-color: #1d2124;
border-color: #171a1d;
}
.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
.show > .btn-dark.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(82, 88, 93, 0.5);
}
.btn-outline-primary {
color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:hover {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:focus, .btn-outline-primary.focus {
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);
}
.btn-outline-primary.disabled, .btn-outline-primary:disabled {
color: #007bff;
background-color: transparent;
}
.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
.show > .btn-outline-primary.dropdown-toggle {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-primary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);
}
.btn-outline-secondary {
color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:hover {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:focus, .btn-outline-secondary.focus {
box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);
}
.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
color: #6c757d;
background-color: transparent;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
.show > .btn-outline-secondary.dropdown-toggle {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-secondary.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);
}
.btn-outline-success {
color: #28a745;
border-color: #28a745;
}
.btn-outline-success:hover {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:focus, .btn-outline-success.focus {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.btn-outline-success.disabled, .btn-outline-success:disabled {
color: #28a745;
background-color: transparent;
}
.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
.show > .btn-outline-success.dropdown-toggle {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-success.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.btn-outline-info {
color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:hover {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:focus, .btn-outline-info.focus {
box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);
}
.btn-outline-info.disabled, .btn-outline-info:disabled {
color: #17a2b8;
background-color: transparent;
}
.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
.show > .btn-outline-info.dropdown-toggle {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-info.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);
}
.btn-outline-warning {
color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:hover {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:focus, .btn-outline-warning.focus {
box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);
}
.btn-outline-warning.disabled, .btn-outline-warning:disabled {
color: #ffc107;
background-color: transparent;
}
.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
.show > .btn-outline-warning.dropdown-toggle {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-warning.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);
}
.btn-outline-danger {
color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:hover {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:focus, .btn-outline-danger.focus {
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);
}
.btn-outline-danger.disabled, .btn-outline-danger:disabled {
color: #dc3545;
background-color: transparent;
}
.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
.show > .btn-outline-danger.dropdown-toggle {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-danger.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);
}
.btn-outline-light {
color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:hover {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:focus, .btn-outline-light.focus {
box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);
}
.btn-outline-light.disabled, .btn-outline-light:disabled {
color: #f8f9fa;
background-color: transparent;
}
.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
.show > .btn-outline-light.dropdown-toggle {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-light.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);
}
.btn-outline-dark {
color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:hover {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:focus, .btn-outline-dark.focus {
box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);
}
.btn-outline-dark.disabled, .btn-outline-dark:disabled {
color: #343a40;
background-color: transparent;
}
.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
.show > .btn-outline-dark.dropdown-toggle {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-dark.dropdown-toggle:focus {
box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);
}
.btn-link {
font-weight: 400;
color: #007bff;
text-decoration: none;
}
.btn-link:hover {
color: #0056b3;
text-decoration: underline;
}
.btn-link:focus, .btn-link.focus {
text-decoration: underline;
}
.btn-link:disabled, .btn-link.disabled {
color: #6c757d;
pointer-events: none;
}
.btn-lg, .btn-group-lg > .btn {
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.btn-sm, .btn-group-sm > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 0.5rem;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.breadcrumb {
display: flex;
flex-wrap: wrap;
padding: 0.75rem 1rem;
margin-bottom: 1rem;
list-style: none;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.breadcrumb-item {
display: flex;
}
.breadcrumb-item + .breadcrumb-item {
padding-left: 0.5rem;
}
.breadcrumb-item + .breadcrumb-item::before {
display: inline-block;
padding-right: 0.5rem;
color: #6c757d;
content: "/";
}
.breadcrumb-item + .breadcrumb-item:hover::before {
text-decoration: underline;
}
.breadcrumb-item + .breadcrumb-item:hover::before {
text-decoration: none;
}
.breadcrumb-item.active {
color: #6c757d;
}
.fade {
transition: opacity 0.15s linear;
}
@media (prefers-reduced-motion: reduce) {
.fade {
transition: none;
}
}
.fade:not(.show) {
opacity: 0;
}
.collapse:not(.show) {
display: none;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
transition: height 0.35s ease;
}
@media (prefers-reduced-motion: reduce) {
.collapsing {
transition: none;
}
}
.dropup,
.dropright,
.dropdown,
.dropleft {
position: relative;
}
.dropdown-toggle {
white-space: nowrap;
}
.dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid;
border-right: 0.3em solid transparent;
border-bottom: 0;
border-left: 0.3em solid transparent;
}
.dropdown-toggle:empty::after {
margin-left: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 10rem;
padding: 0.5rem 0;
margin: 0.125rem 0 0;
font-size: 1rem;
color: #212529;
text-align: left;
list-style: none;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 0.25rem;
}
.dropdown-menu-left {
right: auto;
left: 0;
}
.dropdown-menu-right {
right: 0;
left: auto;
}
@media (min-width: 576px) {
.dropdown-menu-sm-left {
right: auto;
left: 0;
}
.dropdown-menu-sm-right {
right: 0;
left: auto;
}
}
@media (min-width: 768px) {
.dropdown-menu-md-left {
right: auto;
left: 0;
}
.dropdown-menu-md-right {
right: 0;
left: auto;
}
}
@media (min-width: 992px) {
.dropdown-menu-lg-left {
right: auto;
left: 0;
}
.dropdown-menu-lg-right {
right: 0;
left: auto;
}
}
@media (min-width: 1200px) {
.dropdown-menu-xl-left {
right: auto;
left: 0;
}
.dropdown-menu-xl-right {
right: 0;
left: auto;
}
}
.dropup .dropdown-menu {
top: auto;
bottom: 100%;
margin-top: 0;
margin-bottom: 0.125rem;
}
.dropup .dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0;
border-right: 0.3em solid transparent;
border-bottom: 0.3em solid;
border-left: 0.3em solid transparent;
}
.dropup .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropright .dropdown-menu {
top: 0;
right: auto;
left: 100%;
margin-top: 0;
margin-left: 0.125rem;
}
.dropright .dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid transparent;
border-right: 0;
border-bottom: 0.3em solid transparent;
border-left: 0.3em solid;
}
.dropright .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropright .dropdown-toggle::after {
vertical-align: 0;
}
.dropleft .dropdown-menu {
top: 0;
right: 100%;
left: auto;
margin-top: 0;
margin-right: 0.125rem;
}
.dropleft .dropdown-toggle::after {
display: inline-block;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
}
.dropleft .dropdown-toggle::after {
display: none;
}
.dropleft .dropdown-toggle::before {
display: inline-block;
margin-right: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid transparent;
border-right: 0.3em solid;
border-bottom: 0.3em solid transparent;
}
.dropleft .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropleft .dropdown-toggle::before {
vertical-align: 0;
}
.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] {
right: auto;
bottom: auto;
}
.dropdown-divider {
height: 0;
margin: 0.46875rem 0;
overflow: hidden;
border-top: 1px solid #e9ecef;
}
.dropdown-item {
display: block;
width: 100%;
padding: 0.25rem 1.5rem;
clear: both;
font-weight: 400;
color: #212529;
text-align: inherit;
white-space: nowrap;
background-color: transparent;
border: 0;
}
.dropdown-item:hover, .dropdown-item:focus {
color: #16181b;
text-decoration: none;
background-color: #f8f9fa;
}
.dropdown-item.active, .dropdown-item:active {
color: #fff;
text-decoration: none;
background-color: #007bff;
}
.dropdown-item.disabled, .dropdown-item:disabled {
color: #6c757d;
pointer-events: none;
background-color: transparent;
}
.dropdown-menu.show {
display: block;
}
.dropdown-header {
display: block;
padding: 0.5rem 1.5rem;
margin-bottom: 0;
font-size: 0.875rem;
color: #6c757d;
white-space: nowrap;
}
.dropdown-item-text {
display: block;
padding: 0.25rem 1.5rem;
color: #212529;
}
.btn-group,
.btn-group-vertical {
position: relative;
display: inline-flex;
vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
flex: 1 1 auto;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover {
z-index: 1;
}
.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
.btn-group-vertical > .btn:focus,
.btn-group-vertical > .btn:active,
.btn-group-vertical > .btn.active {
z-index: 1;
}
.btn-toolbar {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
}
.btn-toolbar .input-group {
width: auto;
}
.btn-group > .btn:not(:first-child),
.btn-group > .btn-group:not(:first-child) {
margin-left: -1px;
}
.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group > .btn-group:not(:last-child) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn:not(:first-child),
.btn-group > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.dropdown-toggle-split {
padding-right: 0.5625rem;
padding-left: 0.5625rem;
}
.dropdown-toggle-split::after,
.dropup .dropdown-toggle-split::after,
.dropright .dropdown-toggle-split::after {
margin-left: 0;
}
.dropleft .dropdown-toggle-split::before {
margin-right: 0;
}
.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {
padding-right: 0.375rem;
padding-left: 0.375rem;
}
.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {
padding-right: 0.75rem;
padding-left: 0.75rem;
}
.btn-group-vertical {
flex-direction: column;
align-items: flex-start;
justify-content: center;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group {
width: 100%;
}
.btn-group-vertical > .btn:not(:first-child),
.btn-group-vertical > .btn-group:not(:first-child) {
margin-top: -1px;
}
.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group-vertical > .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:not(:first-child),
.btn-group-vertical > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.btn-group-toggle > .btn,
.btn-group-toggle > .btn-group > .btn {
margin-bottom: 0;
}
.btn-group-toggle > .btn input[type="radio"],
.btn-group-toggle > .btn input[type="checkbox"],
.btn-group-toggle > .btn-group > .btn input[type="radio"],
.btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: flex;
flex-wrap: wrap;
align-items: stretch;
width: 100%;
}
.input-group > .form-control,
.input-group > .form-control-plaintext,
.input-group > .custom-select,
.input-group > .custom-file {
position: relative;
flex: 1 1 auto;
width: 1%;
min-width: 0;
margin-bottom: 0;
}
.input-group > .form-control + .form-control,
.input-group > .form-control + .custom-select,
.input-group > .form-control + .custom-file,
.input-group > .form-control-plaintext + .form-control,
.input-group > .form-control-plaintext + .custom-select,
.input-group > .form-control-plaintext + .custom-file,
.input-group > .custom-select + .form-control,
.input-group > .custom-select + .custom-select,
.input-group > .custom-select + .custom-file,
.input-group > .custom-file + .form-control,
.input-group > .custom-file + .custom-select,
.input-group > .custom-file + .custom-file {
margin-left: -1px;
}
.input-group > .form-control:focus,
.input-group > .custom-select:focus,
.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {
z-index: 3;
}
.input-group > .custom-file .custom-file-input:focus {
z-index: 4;
}
.input-group > .form-control:not(:last-child),
.input-group > .custom-select:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group > .custom-file {
display: flex;
align-items: center;
}
.input-group > .custom-file:not(:last-child) .custom-file-label,
.input-group > .custom-file:not(:last-child) .custom-file-label::after {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .custom-file:not(:first-child) .custom-file-label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group-prepend,
.input-group-append {
display: flex;
}
.input-group-prepend .btn,
.input-group-append .btn {
position: relative;
z-index: 2;
}
.input-group-prepend .btn:focus,
.input-group-append .btn:focus {
z-index: 3;
}
.input-group-prepend .btn + .btn,
.input-group-prepend .btn + .input-group-text,
.input-group-prepend .input-group-text + .input-group-text,
.input-group-prepend .input-group-text + .btn,
.input-group-append .btn + .btn,
.input-group-append .btn + .input-group-text,
.input-group-append .input-group-text + .input-group-text,
.input-group-append .input-group-text + .btn {
margin-left: -1px;
}
.input-group-prepend {
margin-right: -1px;
}
.input-group-append {
margin-left: -1px;
}
.input-group-text {
display: flex;
align-items: center;
padding: 0.75rem 0.75rem;
margin-bottom: 0;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
text-align: center;
white-space: nowrap;
background-color: #e9ecef;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.input-group-text input[type="radio"],
.input-group-text input[type="checkbox"] {
margin-top: 0;
}
.input-group-lg > .form-control:not(textarea),
.input-group-lg > .custom-select {
height: calc(1.5em + 1rem + 2px);
}
.input-group-lg > .form-control,
.input-group-lg > .custom-select,
.input-group-lg > .input-group-prepend > .input-group-text,
.input-group-lg > .input-group-append > .input-group-text,
.input-group-lg > .input-group-prepend > .btn,
.input-group-lg > .input-group-append > .btn {
padding: 0.5rem 1rem;
font-size: 1.25rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.input-group-sm > .form-control:not(textarea),
.input-group-sm > .custom-select {
height: calc(1.5em + 0.5rem + 2px);
}
.input-group-sm > .form-control,
.input-group-sm > .custom-select,
.input-group-sm > .input-group-prepend > .input-group-text,
.input-group-sm > .input-group-append > .input-group-text,
.input-group-sm > .input-group-prepend > .btn,
.input-group-sm > .input-group-append > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.input-group-lg > .custom-select,
.input-group-sm > .custom-select {
padding-right: 1.75rem;
}
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
.input-group > .input-group-append:not(:last-child) > .btn,
.input-group > .input-group-append:not(:last-child) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .input-group-append > .btn,
.input-group > .input-group-append > .input-group-text,
.input-group > .input-group-prepend:not(:first-child) > .btn,
.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.custom-control {
position: relative;
display: block;
min-height: 1.5rem;
padding-left: 1.5rem;
}
.custom-control-inline {
display: inline-flex;
margin-right: 1rem;
}
.custom-control-input {
position: absolute;
left: 0;
z-index: -1;
width: 1rem;
height: 1.25rem;
opacity: 0;
}
.custom-control-input:checked ~ .custom-control-label::before {
color: #fff;
border-color: #007bff;
background-color: #007bff;
}
.custom-control-input:focus ~ .custom-control-label::before {
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
}
.custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
border-color: #80bdff;
}
.custom-control-input:not(:disabled):active ~ .custom-control-label::before {
color: #fff;
background-color: #b3d7ff;
border-color: #b3d7ff;
}
.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label {
color: #6c757d;
}
.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before {
background-color: #e9ecef;
}
.custom-control-label {
position: relative;
margin-bottom: 0;
vertical-align: top;
}
.custom-control-label::before {
position: absolute;
top: 0.25rem;
left: -1.5rem;
display: block;
width: 1rem;
height: 1rem;
pointer-events: none;
content: "";
background-color: #fff;
border: #adb5bd solid 1px;
}
.custom-control-label::after {
position: absolute;
top: 0.25rem;
left: -1.5rem;
display: block;
width: 1rem;
height: 1rem;
content: "";
background: no-repeat 50% / 50% 50%;
}
.custom-checkbox .custom-control-label::before {
border-radius: 0.25rem;
}
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e");
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
border-color: #007bff;
background-color: #007bff;
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e");
}
.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-radio .custom-control-label::before {
border-radius: 50%;
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
}
.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-switch {
padding-left: 2.25rem;
}
.custom-switch .custom-control-label::before {
left: -2.25rem;
width: 1.75rem;
pointer-events: all;
border-radius: 0.5rem;
}
.custom-switch .custom-control-label::after {
top: calc(0.25rem + 2px);
left: calc(-2.25rem + 2px);
width: calc(1rem - 4px);
height: calc(1rem - 4px);
background-color: #adb5bd;
border-radius: 0.5rem;
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.custom-switch .custom-control-label::after {
transition: none;
}
}
.custom-switch .custom-control-input:checked ~ .custom-control-label::after {
background-color: #fff;
transform: translateX(0.75rem);
}
.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-select {
display: inline-block;
width: 100%;
height: calc(1.5em + 1.5rem + 2px);
padding: 0.75rem 1.75rem 0.75rem 0.75rem;
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
vertical-align: middle;
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
border: 1px solid #ced4da;
border-radius: 0.25rem;
appearance: none;
}
.custom-select:focus {
border-color: #80bdff;
outline: 0;
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
}
.custom-select:focus::-ms-value {
color: #495057;
background-color: #fff;
}
.custom-select[multiple], .custom-select[size]:not([size="1"]) {
height: auto;
padding-right: 0.75rem;
background-image: none;
}
.custom-select:disabled {
color: #6c757d;
background-color: #e9ecef;
}
.custom-select::-ms-expand {
display: none;
}
.custom-select:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #495057;
}
.custom-select-sm {
height: calc(1.5em + 0.5rem + 2px);
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
font-size: 0.875rem;
}
.custom-select-lg {
height: calc(1.5em + 1rem + 2px);
padding-top: 0.5rem;
padding-bottom: 0.5rem;
padding-left: 1rem;
font-size: 1.25rem;
}
.custom-file {
position: relative;
display: inline-block;
width: 100%;
height: calc(1.5em + 1.5rem + 2px);
margin-bottom: 0;
}
.custom-file-input {
position: relative;
z-index: 2;
width: 100%;
height: calc(1.5em + 1.5rem + 2px);
margin: 0;
opacity: 0;
}
.custom-file-input:focus ~ .custom-file-label {
border-color: #80bdff;
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
}
.custom-file-input[disabled] ~ .custom-file-label,
.custom-file-input:disabled ~ .custom-file-label {
background-color: #e9ecef;
}
.custom-file-input:lang(en) ~ .custom-file-label::after {
content: "Browse";
}
.custom-file-input ~ .custom-file-label[data-browse]::after {
content: attr(data-browse);
}
.custom-file-label {
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: 1;
height: calc(1.5em + 1.5rem + 2px);
padding: 0.75rem 0.75rem;
font-weight: 400;
line-height: 1.5;
color: #495057;
background-color: #fff;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.custom-file-label::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
z-index: 3;
display: block;
height: calc(1.5em + 1.5rem);
padding: 0.75rem 0.75rem;
line-height: 1.5;
color: #495057;
content: "Browse";
background-color: #e9ecef;
border-left: inherit;
border-radius: 0 0.25rem 0.25rem 0;
}
.custom-range {
width: 100%;
height: 1rem;
padding: 0;
background-color: transparent;
appearance: none;
}
.custom-range:focus {
outline: none;
}
.custom-range:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0 rgba(0, 123, 255, 0);
}
.custom-range:focus::-moz-range-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0 rgba(0, 123, 255, 0);
}
.custom-range:focus::-ms-thumb {
box-shadow: 0 0 0 1px #fff, 0 0 0 0 rgba(0, 123, 255, 0);
}
.custom-range::-moz-focus-outer {
border: 0;
}
.custom-range::-webkit-slider-thumb {
width: 1rem;
height: 1rem;
margin-top: -0.25rem;
background-color: #007bff;
border: 0;
border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
appearance: none;
}
@media (prefers-reduced-motion: reduce) {
.custom-range::-webkit-slider-thumb {
transition: none;
}
}
.custom-range::-webkit-slider-thumb:active {
background-color: #b3d7ff;
}
.custom-range::-webkit-slider-runnable-track {
width: 100%;
height: 0.5rem;
color: transparent;
cursor: pointer;
background-color: #dee2e6;
border-color: transparent;
border-radius: 1rem;
}
.custom-range::-moz-range-thumb {
width: 1rem;
height: 1rem;
background-color: #007bff;
border: 0;
border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
appearance: none;
}
@media (prefers-reduced-motion: reduce) {
.custom-range::-moz-range-thumb {
transition: none;
}
}
.custom-range::-moz-range-thumb:active {
background-color: #b3d7ff;
}
.custom-range::-moz-range-track {
width: 100%;
height: 0.5rem;
color: transparent;
cursor: pointer;
background-color: #dee2e6;
border-color: transparent;
border-radius: 1rem;
}
.custom-range::-ms-thumb {
width: 1rem;
height: 1rem;
margin-top: 0;
margin-right: 0;
margin-left: 0;
background-color: #007bff;
border: 0;
border-radius: 1rem;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
appearance: none;
}
@media (prefers-reduced-motion: reduce) {
.custom-range::-ms-thumb {
transition: none;
}
}
.custom-range::-ms-thumb:active {
background-color: #b3d7ff;
}
.custom-range::-ms-track {
width: 100%;
height: 0.5rem;
color: transparent;
cursor: pointer;
background-color: transparent;
border-color: transparent;
border-width: 0.5rem;
}
.custom-range::-ms-fill-lower {
background-color: #dee2e6;
border-radius: 1rem;
}
.custom-range::-ms-fill-upper {
margin-right: 15px;
background-color: #dee2e6;
border-radius: 1rem;
}
.custom-range:disabled::-webkit-slider-thumb {
background-color: #adb5bd;
}
.custom-range:disabled::-webkit-slider-runnable-track {
cursor: default;
}
.custom-range:disabled::-moz-range-thumb {
background-color: #adb5bd;
}
.custom-range:disabled::-moz-range-track {
cursor: default;
}
.custom-range:disabled::-ms-thumb {
background-color: #adb5bd;
}
.custom-control-label::before,
.custom-file-label,
.custom-select {
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.custom-control-label::before,
.custom-file-label,
.custom-select {
transition: none;
}
}
.card {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #fff;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.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: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
.card > .list-group:last-child {
border-bottom-width: 0;
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
.card-body {
flex: 1 1 auto;
min-height: 1px;
padding: 1.25rem;
}
.card-title {
margin-bottom: 0.75rem;
}
.card-subtitle {
margin-top: -0.375rem;
margin-bottom: 0;
}
.card-text:last-child {
margin-bottom: 0;
}
.card-link:hover {
text-decoration: none;
}
.card-link + .card-link {
margin-left: 1.25rem;
}
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
background-color: rgba(0, 0, 0, 0.03);
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
.card-header:first-child {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
.card-header + .list-group .list-group-item:first-child {
border-top: 0;
}
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
border-top: 1px solid rgba(0, 0, 0, 0.125);
}
.card-footer:last-child {
border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
}
.card-header-tabs {
margin-right: -0.625rem;
margin-bottom: -0.75rem;
margin-left: -0.625rem;
border-bottom: 0;
}
.card-header-pills {
margin-right: -0.625rem;
margin-left: -0.625rem;
}
.card-img-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 1.25rem;
}
.card-img,
.card-img-top,
.card-img-bottom {
flex-shrink: 0;
width: 100%;
}
.card-img,
.card-img-top {
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
.card-img,
.card-img-bottom {
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
.card-deck .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-deck {
display: flex;
flex-flow: row wrap;
margin-right: -15px;
margin-left: -15px;
}
.card-deck .card {
flex: 1 0 0%;
margin-right: 15px;
margin-bottom: 0;
margin-left: 15px;
}
}
.card-group > .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-group {
display: flex;
flex-flow: row wrap;
}
.card-group > .card {
flex: 1 0 0%;
margin-bottom: 0;
}
.card-group > .card + .card {
margin-left: 0;
border-left: 0;
}
.card-group > .card:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.card-group > .card:not(:last-child) .card-img-top,
.card-group > .card:not(:last-child) .card-header {
border-top-right-radius: 0;
}
.card-group > .card:not(:last-child) .card-img-bottom,
.card-group > .card:not(:last-child) .card-footer {
border-bottom-right-radius: 0;
}
.card-group > .card:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.card-group > .card:not(:first-child) .card-img-top,
.card-group > .card:not(:first-child) .card-header {
border-top-left-radius: 0;
}
.card-group > .card:not(:first-child) .card-img-bottom,
.card-group > .card:not(:first-child) .card-footer {
border-bottom-left-radius: 0;
}
}
.card-columns .card {
margin-bottom: 0.75rem;
}
@media (min-width: 576px) {
.card-columns {
column-count: 3;
column-gap: 1.25rem;
orphans: 1;
widows: 1;
}
.card-columns .card {
display: inline-block;
width: 100%;
}
}
.accordion > .card {
overflow: hidden;
}
.accordion > .card:not(:last-of-type) {
border-bottom: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.accordion > .card:not(:first-of-type) {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.accordion > .card > .card-header {
border-radius: 0;
margin-bottom: -1px;
}
.pagination {
display: flex;
padding-left: 0;
list-style: none;
border-radius: 0.25rem;
}
.page-link {
position: relative;
display: block;
padding: 0.5rem 0.75rem;
margin-left: -1px;
line-height: 1.25;
color: #007bff;
background-color: #fff;
border: 1px solid #dee2e6;
}
.page-link:hover {
z-index: 2;
color: #0056b3;
text-decoration: none;
background-color: #e9ecef;
border-color: #dee2e6;
}
.page-link:focus {
z-index: 3;
outline: 0;
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
}
.page-item:first-child .page-link {
margin-left: 0;
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.page-item:last-child .page-link {
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
}
.page-item.active .page-link {
z-index: 3;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.page-item.disabled .page-link {
color: #6c757d;
pointer-events: none;
cursor: auto;
background-color: #fff;
border-color: #dee2e6;
}
.pagination-lg .page-link {
padding: 0.75rem 1.5rem;
font-size: 1.25rem;
line-height: 1.5;
}
.pagination-lg .page-item:first-child .page-link {
border-top-left-radius: 0.3rem;
border-bottom-left-radius: 0.3rem;
}
.pagination-lg .page-item:last-child .page-link {
border-top-right-radius: 0.3rem;
border-bottom-right-radius: 0.3rem;
}
.pagination-sm .page-link {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
line-height: 1.5;
}
.pagination-sm .page-item:first-child .page-link {
border-top-left-radius: 0.2rem;
border-bottom-left-radius: 0.2rem;
}
.pagination-sm .page-item:last-child .page-link {
border-top-right-radius: 0.2rem;
border-bottom-right-radius: 0.2rem;
}
.badge {
display: inline-block;
padding: 0.25em 0.4em;
font-size: 75%;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
@media (prefers-reduced-motion: reduce) {
.badge {
transition: none;
}
}
a.badge:hover, a.badge:focus {
text-decoration: none;
}
.badge:empty {
display: none;
}
.btn .badge {
position: relative;
top: -1px;
}
.badge-pill {
padding-right: 0.6em;
padding-left: 0.6em;
border-radius: 10rem;
}
.badge-primary {
color: #fff;
background-color: #007bff;
}
a.badge-primary:hover, a.badge-primary:focus {
color: #fff;
background-color: #0062cc;
}
a.badge-primary:focus, a.badge-primary.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.5);
}
.badge-secondary {
color: #fff;
background-color: #6c757d;
}
a.badge-secondary:hover, a.badge-secondary:focus {
color: #fff;
background-color: #545b62;
}
a.badge-secondary:focus, a.badge-secondary.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(108, 117, 125, 0.5);
}
.badge-success {
color: #fff;
background-color: #28a745;
}
a.badge-success:hover, a.badge-success:focus {
color: #fff;
background-color: #1e7e34;
}
a.badge-success:focus, a.badge-success.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(40, 167, 69, 0.5);
}
.badge-info {
color: #fff;
background-color: #17a2b8;
}
a.badge-info:hover, a.badge-info:focus {
color: #fff;
background-color: #117a8b;
}
a.badge-info:focus, a.badge-info.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(23, 162, 184, 0.5);
}
.badge-warning {
color: #212529;
background-color: #ffc107;
}
a.badge-warning:hover, a.badge-warning:focus {
color: #212529;
background-color: #d39e00;
}
a.badge-warning:focus, a.badge-warning.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(255, 193, 7, 0.5);
}
.badge-danger {
color: #fff;
background-color: #dc3545;
}
a.badge-danger:hover, a.badge-danger:focus {
color: #fff;
background-color: #bd2130;
}
a.badge-danger:focus, a.badge-danger.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.5);
}
.badge-light {
color: #212529;
background-color: #f8f9fa;
}
a.badge-light:hover, a.badge-light:focus {
color: #212529;
background-color: #dae0e5;
}
a.badge-light:focus, a.badge-light.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(248, 249, 250, 0.5);
}
.badge-dark {
color: #fff;
background-color: #343a40;
}
a.badge-dark:hover, a.badge-dark:focus {
color: #fff;
background-color: #1d2124;
}
a.badge-dark:focus, a.badge-dark.focus {
outline: 0;
box-shadow: 0 0 0 0 rgba(52, 58, 64, 0.5);
}
.tooltip {
position: absolute;
z-index: 1070;
display: block;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
letter-spacing: normal;
word-break: normal;
word-spacing: normal;
white-space: normal;
line-break: auto;
font-size: 0.875rem;
word-wrap: break-word;
opacity: 0;
}
.tooltip.show {
opacity: 0.9;
}
.tooltip .arrow {
position: absolute;
display: block;
width: 0.8rem;
height: 0.4rem;
}
.tooltip .arrow::before {
position: absolute;
content: "";
border-color: transparent;
border-style: solid;
}
.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] {
padding: 0.4rem 0;
}
.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow {
bottom: 0;
}
.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before {
top: 0;
border-width: 0.4rem 0.4rem 0;
border-top-color: #000;
}
.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] {
padding: 0 0.4rem;
}
.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow {
left: 0;
width: 0.4rem;
height: 0.8rem;
}
.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before {
right: 0;
border-width: 0.4rem 0.4rem 0.4rem 0;
border-right-color: #000;
}
.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] {
padding: 0.4rem 0;
}
.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow {
top: 0;
}
.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
bottom: 0;
border-width: 0 0.4rem 0.4rem;
border-bottom-color: #000;
}
.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] {
padding: 0 0.4rem;
}
.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow {
right: 0;
width: 0.4rem;
height: 0.8rem;
}
.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before {
left: 0;
border-width: 0.4rem 0 0.4rem 0.4rem;
border-left-color: #000;
}
.tooltip-inner {
max-width: 200px;
padding: 0.25rem 0.5rem;
color: #fff;
text-align: center;
background-color: #000;
border-radius: 0.25rem;
}
.alert {
position: relative;
padding: 0.75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.alert-heading {
color: inherit;
}
.alert-link {
font-weight: 700;
}
.alert-dismissible {
padding-right: 4rem;
}
.alert-dismissible .close {
position: absolute;
top: 0;
right: 0;
padding: 0.75rem 1.25rem;
color: inherit;
}
.alert-primary {
color: #004085;
background-color: #cce5ff;
border-color: #b8daff;
}
.alert-primary hr {
border-top-color: #9fcdff;
}
.alert-primary .alert-link {
color: #002752;
}
.alert-secondary {
color: #383d41;
background-color: #e2e3e5;
border-color: #d6d8db;
}
.alert-secondary hr {
border-top-color: #c8cbcf;
}
.alert-secondary .alert-link {
color: #202326;
}
.alert-success {
color: #155724;
background-color: #d4edda;
border-color: #c3e6cb;
}
.alert-success hr {
border-top-color: #b1dfbb;
}
.alert-success .alert-link {
color: #0b2e13;
}
.alert-info {
color: #0c5460;
background-color: #d1ecf1;
border-color: #bee5eb;
}
.alert-info hr {
border-top-color: #abdde5;
}
.alert-info .alert-link {
color: #062c33;
}
.alert-warning {
color: #856404;
background-color: #fff3cd;
border-color: #ffeeba;
}
.alert-warning hr {
border-top-color: #ffe8a1;
}
.alert-warning .alert-link {
color: #533f03;
}
.alert-danger {
color: #721c24;
background-color: #f8d7da;
border-color: #f5c6cb;
}
.alert-danger hr {
border-top-color: #f1b0b7;
}
.alert-danger .alert-link {
color: #491217;
}
.alert-light {
color: #818182;
background-color: #fefefe;
border-color: #fdfdfe;
}
.alert-light hr {
border-top-color: #ececf6;
}
.alert-light .alert-link {
color: #686868;
}
.alert-dark {
color: #1b1e21;
background-color: #d6d8d9;
border-color: #c6c8ca;
}
.alert-dark hr {
border-top-color: #b9bbbe;
}
.alert-dark .alert-link {
color: #040505;
}
@keyframes progress-bar-stripes {
from {
background-position: 1rem 0;
}
to {
background-position: 0 0;
}
}
.progress {
display: flex;
height: 1rem;
overflow: hidden;
line-height: 0;
font-size: 0.75rem;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.progress-bar {
display: flex;
flex-direction: column;
justify-content: center;
overflow: hidden;
color: #fff;
text-align: center;
white-space: nowrap;
background-color: #007bff;
transition: width 0.6s ease;
}
@media (prefers-reduced-motion: reduce) {
.progress-bar {
transition: none;
}
}
.progress-bar-striped {
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 1rem 1rem;
}
.progress-bar-animated {
animation: progress-bar-stripes 1s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
.progress-bar-animated {
animation: none;
}
}
.media {
display: flex;
align-items: flex-start;
}
.media-body {
flex: 1;
}
.list-group {
display: flex;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
border-radius: 0.25rem;
}
.list-group-item-action {
width: 100%;
color: #495057;
text-align: inherit;
}
.list-group-item-action:hover, .list-group-item-action:focus {
z-index: 1;
color: #495057;
text-decoration: none;
background-color: #f8f9fa;
}
.list-group-item-action:active {
color: #212529;
background-color: #e9ecef;
}
.list-group-item {
position: relative;
display: block;
padding: 0.75rem 1.25rem;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.125);
}
.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: #6c757d;
pointer-events: none;
background-color: #fff;
}
.list-group-item.active {
z-index: 2;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.list-group-item + .list-group-item {
border-top-width: 0;
}
.list-group-item + .list-group-item.active {
margin-top: -1px;
border-top-width: 1px;
}
.list-group-horizontal {
flex-direction: row;
}
.list-group-horizontal > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
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: 1px;
border-left-width: 0;
}
.list-group-horizontal > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
@media (min-width: 576px) {
.list-group-horizontal-sm {
flex-direction: row;
}
.list-group-horizontal-sm > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-sm > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
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: 1px;
border-left-width: 0;
}
.list-group-horizontal-sm > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
}
@media (min-width: 768px) {
.list-group-horizontal-md {
flex-direction: row;
}
.list-group-horizontal-md > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-md > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
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: 1px;
border-left-width: 0;
}
.list-group-horizontal-md > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
}
@media (min-width: 992px) {
.list-group-horizontal-lg {
flex-direction: row;
}
.list-group-horizontal-lg > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-lg > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
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: 1px;
border-left-width: 0;
}
.list-group-horizontal-lg > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
}
@media (min-width: 1200px) {
.list-group-horizontal-xl {
flex-direction: row;
}
.list-group-horizontal-xl > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-xl > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
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: 1px;
border-left-width: 0;
}
.list-group-horizontal-xl > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
}
.list-group-flush {
border-radius: 0;
}
.list-group-flush > .list-group-item {
border-width: 0 0 1px;
}
.list-group-flush > .list-group-item:last-child {
border-bottom-width: 0;
}
.list-group-item-primary {
color: #004085;
background-color: #b8daff;
}
.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {
color: #004085;
background-color: #9fcdff;
}
.list-group-item-primary.list-group-item-action.active {
color: #fff;
background-color: #004085;
border-color: #004085;
}
.list-group-item-secondary {
color: #383d41;
background-color: #d6d8db;
}
.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {
color: #383d41;
background-color: #c8cbcf;
}
.list-group-item-secondary.list-group-item-action.active {
color: #fff;
background-color: #383d41;
border-color: #383d41;
}
.list-group-item-success {
color: #155724;
background-color: #c3e6cb;
}
.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {
color: #155724;
background-color: #b1dfbb;
}
.list-group-item-success.list-group-item-action.active {
color: #fff;
background-color: #155724;
border-color: #155724;
}
.list-group-item-info {
color: #0c5460;
background-color: #bee5eb;
}
.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {
color: #0c5460;
background-color: #abdde5;
}
.list-group-item-info.list-group-item-action.active {
color: #fff;
background-color: #0c5460;
border-color: #0c5460;
}
.list-group-item-warning {
color: #856404;
background-color: #ffeeba;
}
.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {
color: #856404;
background-color: #ffe8a1;
}
.list-group-item-warning.list-group-item-action.active {
color: #fff;
background-color: #856404;
border-color: #856404;
}
.list-group-item-danger {
color: #721c24;
background-color: #f5c6cb;
}
.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {
color: #721c24;
background-color: #f1b0b7;
}
.list-group-item-danger.list-group-item-action.active {
color: #fff;
background-color: #721c24;
border-color: #721c24;
}
.list-group-item-light {
color: #818182;
background-color: #fdfdfe;
}
.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {
color: #818182;
background-color: #ececf6;
}
.list-group-item-light.list-group-item-action.active {
color: #fff;
background-color: #818182;
border-color: #818182;
}
.list-group-item-dark {
color: #1b1e21;
background-color: #c6c8ca;
}
.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {
color: #1b1e21;
background-color: #b9bbbe;
}
.list-group-item-dark.list-group-item-action.active {
color: #fff;
background-color: #1b1e21;
border-color: #1b1e21;
}
.close {
float: right;
font-size: 1.5rem;
font-weight: 700;
line-height: 1;
color: #000;
text-shadow: 0 1px 0 #fff;
opacity: .5;
}
.close:hover {
color: #000;
text-decoration: none;
}
.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
opacity: .75;
}
button.close {
padding: 0;
background-color: transparent;
border: 0;
}
a.close.disabled {
pointer-events: none;
}
.toast {
max-width: 350px;
overflow: hidden;
font-size: 0.875rem;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
backdrop-filter: blur(10px);
opacity: 0;
border-radius: 0.25rem;
}
.toast:not(:last-child) {
margin-bottom: 0.75rem;
}
.toast.showing {
opacity: 1;
}
.toast.show {
display: block;
opacity: 1;
}
.toast.hide {
display: none;
}
.toast-header {
display: flex;
align-items: center;
padding: 0.25rem 0.75rem;
color: #6c757d;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
.toast-body {
padding: 0.75rem;
}
.modal-open {
overflow: hidden;
}
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal {
position: fixed;
top: 0;
left: 0;
z-index: 1050;
display: none;
width: 100%;
height: 100%;
overflow: hidden;
outline: 0;
}
.modal-dialog {
position: relative;
width: auto;
margin: 0.5rem;
pointer-events: none;
}
.modal.fade .modal-dialog {
transition: transform 0.3s ease-out;
transform: translate(0, -50px);
}
@media (prefers-reduced-motion: reduce) {
.modal.fade .modal-dialog {
transition: none;
}
}
.modal.show .modal-dialog {
transform: none;
}
.modal.modal-static .modal-dialog {
transform: scale(1.02);
}
.modal-dialog-scrollable {
display: flex;
max-height: calc(100% - 1rem);
}
.modal-dialog-scrollable .modal-content {
max-height: calc(100vh - 1rem);
overflow: hidden;
}
.modal-dialog-scrollable .modal-header,
.modal-dialog-scrollable .modal-footer {
flex-shrink: 0;
}
.modal-dialog-scrollable .modal-body {
overflow-y: auto;
}
.modal-dialog-centered {
display: flex;
align-items: center;
min-height: calc(100% - 1rem);
}
.modal-dialog-centered::before {
display: block;
height: calc(100vh - 1rem);
height: min-content;
content: "";
}
.modal-dialog-centered.modal-dialog-scrollable {
flex-direction: column;
justify-content: center;
height: 100%;
}
.modal-dialog-centered.modal-dialog-scrollable .modal-content {
max-height: none;
}
.modal-dialog-centered.modal-dialog-scrollable::before {
content: none;
}
.modal-content {
position: relative;
display: flex;
flex-direction: column;
width: 100%;
pointer-events: auto;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 0.3rem;
outline: 0;
}
.modal-backdrop {
position: fixed;
top: 0;
left: 0;
z-index: 1040;
width: 100vw;
height: 100vh;
background-color: #000;
}
.modal-backdrop.fade {
opacity: 0;
}
.modal-backdrop.show {
opacity: 0.5;
}
.modal-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
padding: 1rem 1rem;
border-bottom: 1px solid #dee2e6;
border-top-left-radius: calc(0.3rem - 1px);
border-top-right-radius: calc(0.3rem - 1px);
}
.modal-header .close {
padding: 1rem 1rem;
margin: -1rem -1rem -1rem auto;
}
.modal-title {
margin-bottom: 0;
line-height: 1.5;
}
.modal-body {
position: relative;
flex: 1 1 auto;
padding: 1rem;
}
.modal-footer {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: flex-end;
padding: 0.75rem;
border-top: 1px solid #dee2e6;
border-bottom-right-radius: calc(0.3rem - 1px);
border-bottom-left-radius: calc(0.3rem - 1px);
}
.modal-footer > * {
margin: 0.25rem;
}
.modal-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
@media (min-width: 576px) {
.modal-dialog {
max-width: 500px;
margin: 1.75rem auto;
}
.modal-dialog-scrollable {
max-height: calc(100% - 3.5rem);
}
.modal-dialog-scrollable .modal-content {
max-height: calc(100vh - 3.5rem);
}
.modal-dialog-centered {
min-height: calc(100% - 3.5rem);
}
.modal-dialog-centered::before {
height: calc(100vh - 3.5rem);
height: min-content;
}
.modal-sm {
max-width: 300px;
}
}
@media (min-width: 992px) {
.modal-lg,
.modal-xl {
max-width: 800px;
}
}
@media (min-width: 1200px) {
.modal-xl {
max-width: 1140px;
}
}
@keyframes spinner-border {
to {
transform: rotate(360deg);
}
}
.spinner-border {
display: inline-block;
width: 2rem;
height: 2rem;
vertical-align: text-bottom;
border: 0.25em solid currentColor;
border-right-color: transparent;
border-radius: 50%;
animation: spinner-border .75s linear infinite;
}
.spinner-border-sm {
width: 1rem;
height: 1rem;
border-width: 0.2em;
}
@keyframes spinner-grow {
0% {
transform: scale(0);
}
50% {
opacity: 1;
transform: none;
}
}
.spinner-grow {
display: inline-block;
width: 2rem;
height: 2rem;
vertical-align: text-bottom;
background-color: currentColor;
border-radius: 50%;
opacity: 0;
animation: spinner-grow .75s linear infinite;
}
.spinner-grow-sm {
width: 1rem;
height: 1rem;
}
.align-baseline {
vertical-align: baseline !important;
}
.align-top {
vertical-align: top !important;
}
.align-middle {
vertical-align: middle !important;
}
.align-bottom {
vertical-align: bottom !important;
}
.align-text-bottom {
vertical-align: text-bottom !important;
}
.align-text-top {
vertical-align: text-top !important;
}
.bg-primary {
background-color: #007bff !important;
}
a.bg-primary:hover, a.bg-primary:focus,
button.bg-primary:hover,
button.bg-primary:focus {
background-color: #0062cc !important;
}
.bg-secondary {
background-color: #6c757d !important;
}
a.bg-secondary:hover, a.bg-secondary:focus,
button.bg-secondary:hover,
button.bg-secondary:focus {
background-color: #545b62 !important;
}
.bg-success {
background-color: #28a745 !important;
}
a.bg-success:hover, a.bg-success:focus,
button.bg-success:hover,
button.bg-success:focus {
background-color: #1e7e34 !important;
}
.bg-info {
background-color: #17a2b8 !important;
}
a.bg-info:hover, a.bg-info:focus,
button.bg-info:hover,
button.bg-info:focus {
background-color: #117a8b !important;
}
.bg-warning {
background-color: #ffc107 !important;
}
a.bg-warning:hover, a.bg-warning:focus,
button.bg-warning:hover,
button.bg-warning:focus {
background-color: #d39e00 !important;
}
.bg-danger {
background-color: #dc3545 !important;
}
a.bg-danger:hover, a.bg-danger:focus,
button.bg-danger:hover,
button.bg-danger:focus {
background-color: #bd2130 !important;
}
.bg-light {
background-color: #f8f9fa !important;
}
a.bg-light:hover, a.bg-light:focus,
button.bg-light:hover,
button.bg-light:focus {
background-color: #dae0e5 !important;
}
.bg-dark {
background-color: #343a40 !important;
}
a.bg-dark:hover, a.bg-dark:focus,
button.bg-dark:hover,
button.bg-dark:focus {
background-color: #1d2124 !important;
}
.bg-white {
background-color: #fff !important;
}
.bg-transparent {
background-color: transparent !important;
}
.border {
border: 1px solid #dee2e6 !important;
}
.border-top {
border-top: 1px solid #dee2e6 !important;
}
.border-right {
border-right: 1px solid #dee2e6 !important;
}
.border-bottom {
border-bottom: 1px solid #dee2e6 !important;
}
.border-left {
border-left: 1px solid #dee2e6 !important;
}
.border-0 {
border: 0 !important;
}
.border-top-0 {
border-top: 0 !important;
}
.border-right-0 {
border-right: 0 !important;
}
.border-bottom-0 {
border-bottom: 0 !important;
}
.border-left-0 {
border-left: 0 !important;
}
.border-primary {
border-color: #007bff !important;
}
.border-secondary {
border-color: #6c757d !important;
}
.border-success {
border-color: #28a745 !important;
}
.border-info {
border-color: #17a2b8 !important;
}
.border-warning {
border-color: #ffc107 !important;
}
.border-danger {
border-color: #dc3545 !important;
}
.border-light {
border-color: #f8f9fa !important;
}
.border-dark {
border-color: #343a40 !important;
}
.border-white {
border-color: #fff !important;
}
.rounded-sm {
border-radius: 0.2rem !important;
}
.rounded {
border-radius: 0.25rem !important;
}
.rounded-top {
border-top-left-radius: 0.25rem !important;
border-top-right-radius: 0.25rem !important;
}
.rounded-right {
border-top-right-radius: 0.25rem !important;
border-bottom-right-radius: 0.25rem !important;
}
.rounded-bottom {
border-bottom-right-radius: 0.25rem !important;
border-bottom-left-radius: 0.25rem !important;
}
.rounded-left {
border-top-left-radius: 0.25rem !important;
border-bottom-left-radius: 0.25rem !important;
}
.rounded-lg {
border-radius: 0.3rem !important;
}
.rounded-circle {
border-radius: 50% !important;
}
.rounded-pill {
border-radius: 50rem !important;
}
.rounded-0 {
border-radius: 0 !important;
}
.clearfix::after {
display: block;
clear: both;
content: "";
}
.d-none {
display: none !important;
}
.d-inline {
display: inline !important;
}
.d-inline-block {
display: inline-block !important;
}
.d-block {
display: block !important;
}
.d-table {
display: table !important;
}
.d-table-row {
display: table-row !important;
}
.d-table-cell {
display: table-cell !important;
}
.d-flex {
display: flex !important;
}
.d-inline-flex {
display: inline-flex !important;
}
@media (min-width: 576px) {
.d-sm-none {
display: none !important;
}
.d-sm-inline {
display: inline !important;
}
.d-sm-inline-block {
display: inline-block !important;
}
.d-sm-block {
display: block !important;
}
.d-sm-table {
display: table !important;
}
.d-sm-table-row {
display: table-row !important;
}
.d-sm-table-cell {
display: table-cell !important;
}
.d-sm-flex {
display: flex !important;
}
.d-sm-inline-flex {
display: inline-flex !important;
}
}
@media (min-width: 768px) {
.d-md-none {
display: none !important;
}
.d-md-inline {
display: inline !important;
}
.d-md-inline-block {
display: inline-block !important;
}
.d-md-block {
display: block !important;
}
.d-md-table {
display: table !important;
}
.d-md-table-row {
display: table-row !important;
}
.d-md-table-cell {
display: table-cell !important;
}
.d-md-flex {
display: flex !important;
}
.d-md-inline-flex {
display: inline-flex !important;
}
}
@media (min-width: 992px) {
.d-lg-none {
display: none !important;
}
.d-lg-inline {
display: inline !important;
}
.d-lg-inline-block {
display: inline-block !important;
}
.d-lg-block {
display: block !important;
}
.d-lg-table {
display: table !important;
}
.d-lg-table-row {
display: table-row !important;
}
.d-lg-table-cell {
display: table-cell !important;
}
.d-lg-flex {
display: flex !important;
}
.d-lg-inline-flex {
display: inline-flex !important;
}
}
@media (min-width: 1200px) {
.d-xl-none {
display: none !important;
}
.d-xl-inline {
display: inline !important;
}
.d-xl-inline-block {
display: inline-block !important;
}
.d-xl-block {
display: block !important;
}
.d-xl-table {
display: table !important;
}
.d-xl-table-row {
display: table-row !important;
}
.d-xl-table-cell {
display: table-cell !important;
}
.d-xl-flex {
display: flex !important;
}
.d-xl-inline-flex {
display: inline-flex !important;
}
}
@media print {
.d-print-none {
display: none !important;
}
.d-print-inline {
display: inline !important;
}
.d-print-inline-block {
display: inline-block !important;
}
.d-print-block {
display: block !important;
}
.d-print-table {
display: table !important;
}
.d-print-table-row {
display: table-row !important;
}
.d-print-table-cell {
display: table-cell !important;
}
.d-print-flex {
display: flex !important;
}
.d-print-inline-flex {
display: inline-flex !important;
}
}
.embed-responsive {
position: relative;
display: block;
width: 100%;
padding: 0;
overflow: hidden;
}
.embed-responsive::before {
display: block;
content: "";
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
border: 0;
}
.embed-responsive-21by9::before {
padding-top: 42.85714%;
}
.embed-responsive-16by9::before {
padding-top: 56.25%;
}
.embed-responsive-4by3::before {
padding-top: 75%;
}
.embed-responsive-1by1::before {
padding-top: 100%;
}
.flex-row {
flex-direction: row !important;
}
.flex-column {
flex-direction: column !important;
}
.flex-row-reverse {
flex-direction: row-reverse !important;
}
.flex-column-reverse {
flex-direction: column-reverse !important;
}
.flex-wrap {
flex-wrap: wrap !important;
}
.flex-nowrap {
flex-wrap: nowrap !important;
}
.flex-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-fill {
flex: 1 1 auto !important;
}
.flex-grow-0 {
flex-grow: 0 !important;
}
.flex-grow-1 {
flex-grow: 1 !important;
}
.flex-shrink-0 {
flex-shrink: 0 !important;
}
.flex-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-start {
justify-content: flex-start !important;
}
.justify-content-end {
justify-content: flex-end !important;
}
.justify-content-center {
justify-content: center !important;
}
.justify-content-between {
justify-content: space-between !important;
}
.justify-content-around {
justify-content: space-around !important;
}
.align-items-start {
align-items: flex-start !important;
}
.align-items-end {
align-items: flex-end !important;
}
.align-items-center {
align-items: center !important;
}
.align-items-baseline {
align-items: baseline !important;
}
.align-items-stretch {
align-items: stretch !important;
}
.align-content-start {
align-content: flex-start !important;
}
.align-content-end {
align-content: flex-end !important;
}
.align-content-center {
align-content: center !important;
}
.align-content-between {
align-content: space-between !important;
}
.align-content-around {
align-content: space-around !important;
}
.align-content-stretch {
align-content: stretch !important;
}
.align-self-auto {
align-self: auto !important;
}
.align-self-start {
align-self: flex-start !important;
}
.align-self-end {
align-self: flex-end !important;
}
.align-self-center {
align-self: center !important;
}
.align-self-baseline {
align-self: baseline !important;
}
.align-self-stretch {
align-self: stretch !important;
}
@media (min-width: 576px) {
.flex-sm-row {
flex-direction: row !important;
}
.flex-sm-column {
flex-direction: column !important;
}
.flex-sm-row-reverse {
flex-direction: row-reverse !important;
}
.flex-sm-column-reverse {
flex-direction: column-reverse !important;
}
.flex-sm-wrap {
flex-wrap: wrap !important;
}
.flex-sm-nowrap {
flex-wrap: nowrap !important;
}
.flex-sm-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-sm-fill {
flex: 1 1 auto !important;
}
.flex-sm-grow-0 {
flex-grow: 0 !important;
}
.flex-sm-grow-1 {
flex-grow: 1 !important;
}
.flex-sm-shrink-0 {
flex-shrink: 0 !important;
}
.flex-sm-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-sm-start {
justify-content: flex-start !important;
}
.justify-content-sm-end {
justify-content: flex-end !important;
}
.justify-content-sm-center {
justify-content: center !important;
}
.justify-content-sm-between {
justify-content: space-between !important;
}
.justify-content-sm-around {
justify-content: space-around !important;
}
.align-items-sm-start {
align-items: flex-start !important;
}
.align-items-sm-end {
align-items: flex-end !important;
}
.align-items-sm-center {
align-items: center !important;
}
.align-items-sm-baseline {
align-items: baseline !important;
}
.align-items-sm-stretch {
align-items: stretch !important;
}
.align-content-sm-start {
align-content: flex-start !important;
}
.align-content-sm-end {
align-content: flex-end !important;
}
.align-content-sm-center {
align-content: center !important;
}
.align-content-sm-between {
align-content: space-between !important;
}
.align-content-sm-around {
align-content: space-around !important;
}
.align-content-sm-stretch {
align-content: stretch !important;
}
.align-self-sm-auto {
align-self: auto !important;
}
.align-self-sm-start {
align-self: flex-start !important;
}
.align-self-sm-end {
align-self: flex-end !important;
}
.align-self-sm-center {
align-self: center !important;
}
.align-self-sm-baseline {
align-self: baseline !important;
}
.align-self-sm-stretch {
align-self: stretch !important;
}
}
@media (min-width: 768px) {
.flex-md-row {
flex-direction: row !important;
}
.flex-md-column {
flex-direction: column !important;
}
.flex-md-row-reverse {
flex-direction: row-reverse !important;
}
.flex-md-column-reverse {
flex-direction: column-reverse !important;
}
.flex-md-wrap {
flex-wrap: wrap !important;
}
.flex-md-nowrap {
flex-wrap: nowrap !important;
}
.flex-md-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-md-fill {
flex: 1 1 auto !important;
}
.flex-md-grow-0 {
flex-grow: 0 !important;
}
.flex-md-grow-1 {
flex-grow: 1 !important;
}
.flex-md-shrink-0 {
flex-shrink: 0 !important;
}
.flex-md-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-md-start {
justify-content: flex-start !important;
}
.justify-content-md-end {
justify-content: flex-end !important;
}
.justify-content-md-center {
justify-content: center !important;
}
.justify-content-md-between {
justify-content: space-between !important;
}
.justify-content-md-around {
justify-content: space-around !important;
}
.align-items-md-start {
align-items: flex-start !important;
}
.align-items-md-end {
align-items: flex-end !important;
}
.align-items-md-center {
align-items: center !important;
}
.align-items-md-baseline {
align-items: baseline !important;
}
.align-items-md-stretch {
align-items: stretch !important;
}
.align-content-md-start {
align-content: flex-start !important;
}
.align-content-md-end {
align-content: flex-end !important;
}
.align-content-md-center {
align-content: center !important;
}
.align-content-md-between {
align-content: space-between !important;
}
.align-content-md-around {
align-content: space-around !important;
}
.align-content-md-stretch {
align-content: stretch !important;
}
.align-self-md-auto {
align-self: auto !important;
}
.align-self-md-start {
align-self: flex-start !important;
}
.align-self-md-end {
align-self: flex-end !important;
}
.align-self-md-center {
align-self: center !important;
}
.align-self-md-baseline {
align-self: baseline !important;
}
.align-self-md-stretch {
align-self: stretch !important;
}
}
@media (min-width: 992px) {
.flex-lg-row {
flex-direction: row !important;
}
.flex-lg-column {
flex-direction: column !important;
}
.flex-lg-row-reverse {
flex-direction: row-reverse !important;
}
.flex-lg-column-reverse {
flex-direction: column-reverse !important;
}
.flex-lg-wrap {
flex-wrap: wrap !important;
}
.flex-lg-nowrap {
flex-wrap: nowrap !important;
}
.flex-lg-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-lg-fill {
flex: 1 1 auto !important;
}
.flex-lg-grow-0 {
flex-grow: 0 !important;
}
.flex-lg-grow-1 {
flex-grow: 1 !important;
}
.flex-lg-shrink-0 {
flex-shrink: 0 !important;
}
.flex-lg-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-lg-start {
justify-content: flex-start !important;
}
.justify-content-lg-end {
justify-content: flex-end !important;
}
.justify-content-lg-center {
justify-content: center !important;
}
.justify-content-lg-between {
justify-content: space-between !important;
}
.justify-content-lg-around {
justify-content: space-around !important;
}
.align-items-lg-start {
align-items: flex-start !important;
}
.align-items-lg-end {
align-items: flex-end !important;
}
.align-items-lg-center {
align-items: center !important;
}
.align-items-lg-baseline {
align-items: baseline !important;
}
.align-items-lg-stretch {
align-items: stretch !important;
}
.align-content-lg-start {
align-content: flex-start !important;
}
.align-content-lg-end {
align-content: flex-end !important;
}
.align-content-lg-center {
align-content: center !important;
}
.align-content-lg-between {
align-content: space-between !important;
}
.align-content-lg-around {
align-content: space-around !important;
}
.align-content-lg-stretch {
align-content: stretch !important;
}
.align-self-lg-auto {
align-self: auto !important;
}
.align-self-lg-start {
align-self: flex-start !important;
}
.align-self-lg-end {
align-self: flex-end !important;
}
.align-self-lg-center {
align-self: center !important;
}
.align-self-lg-baseline {
align-self: baseline !important;
}
.align-self-lg-stretch {
align-self: stretch !important;
}
}
@media (min-width: 1200px) {
.flex-xl-row {
flex-direction: row !important;
}
.flex-xl-column {
flex-direction: column !important;
}
.flex-xl-row-reverse {
flex-direction: row-reverse !important;
}
.flex-xl-column-reverse {
flex-direction: column-reverse !important;
}
.flex-xl-wrap {
flex-wrap: wrap !important;
}
.flex-xl-nowrap {
flex-wrap: nowrap !important;
}
.flex-xl-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-xl-fill {
flex: 1 1 auto !important;
}
.flex-xl-grow-0 {
flex-grow: 0 !important;
}
.flex-xl-grow-1 {
flex-grow: 1 !important;
}
.flex-xl-shrink-0 {
flex-shrink: 0 !important;
}
.flex-xl-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-xl-start {
justify-content: flex-start !important;
}
.justify-content-xl-end {
justify-content: flex-end !important;
}
.justify-content-xl-center {
justify-content: center !important;
}
.justify-content-xl-between {
justify-content: space-between !important;
}
.justify-content-xl-around {
justify-content: space-around !important;
}
.align-items-xl-start {
align-items: flex-start !important;
}
.align-items-xl-end {
align-items: flex-end !important;
}
.align-items-xl-center {
align-items: center !important;
}
.align-items-xl-baseline {
align-items: baseline !important;
}
.align-items-xl-stretch {
align-items: stretch !important;
}
.align-content-xl-start {
align-content: flex-start !important;
}
.align-content-xl-end {
align-content: flex-end !important;
}
.align-content-xl-center {
align-content: center !important;
}
.align-content-xl-between {
align-content: space-between !important;
}
.align-content-xl-around {
align-content: space-around !important;
}
.align-content-xl-stretch {
align-content: stretch !important;
}
.align-self-xl-auto {
align-self: auto !important;
}
.align-self-xl-start {
align-self: flex-start !important;
}
.align-self-xl-end {
align-self: flex-end !important;
}
.align-self-xl-center {
align-self: center !important;
}
.align-self-xl-baseline {
align-self: baseline !important;
}
.align-self-xl-stretch {
align-self: stretch !important;
}
}
.float-left {
float: left !important;
}
.float-right {
float: right !important;
}
.float-none {
float: none !important;
}
@media (min-width: 576px) {
.float-sm-left {
float: left !important;
}
.float-sm-right {
float: right !important;
}
.float-sm-none {
float: none !important;
}
}
@media (min-width: 768px) {
.float-md-left {
float: left !important;
}
.float-md-right {
float: right !important;
}
.float-md-none {
float: none !important;
}
}
@media (min-width: 992px) {
.float-lg-left {
float: left !important;
}
.float-lg-right {
float: right !important;
}
.float-lg-none {
float: none !important;
}
}
@media (min-width: 1200px) {
.float-xl-left {
float: left !important;
}
.float-xl-right {
float: right !important;
}
.float-xl-none {
float: none !important;
}
}
.user-select-all {
user-select: all !important;
}
.user-select-auto {
user-select: auto !important;
}
.user-select-none {
user-select: none !important;
}
.overflow-auto {
overflow: auto !important;
}
.overflow-hidden {
overflow: hidden !important;
}
.position-static {
position: static !important;
}
.position-relative {
position: relative !important;
}
.position-absolute {
position: absolute !important;
}
.position-fixed {
position: fixed !important;
}
.position-sticky {
position: sticky !important;
}
.fixed-top {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: 1030;
}
.fixed-bottom {
position: fixed;
right: 0;
bottom: 0;
left: 0;
z-index: 1030;
}
@supports (position: sticky) {
.sticky-top {
position: sticky;
top: 0;
z-index: 1020;
}
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.sr-only-focusable:active, .sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
overflow: visible;
clip: auto;
white-space: normal;
}
.shadow-sm {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.shadow {
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
}
.shadow-lg {
box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;
}
.shadow-none {
box-shadow: none !important;
}
.w-25 {
width: 25% !important;
}
.w-50 {
width: 50% !important;
}
.w-75 {
width: 75% !important;
}
.w-100 {
width: 100% !important;
}
.w-auto {
width: auto !important;
}
.h-25 {
height: 25% !important;
}
.h-50 {
height: 50% !important;
}
.h-75 {
height: 75% !important;
}
.h-100 {
height: 100% !important;
}
.h-auto {
height: auto !important;
}
.mw-100 {
max-width: 100% !important;
}
.mh-100 {
max-height: 100% !important;
}
.min-vw-100 {
min-width: 100vw !important;
}
.min-vh-100 {
min-height: 100vh !important;
}
.vw-100 {
width: 100vw !important;
}
.vh-100 {
height: 100vh !important;
}
.m-0 {
margin: 0 !important;
}
.mt-0,
.my-0 {
margin-top: 0 !important;
}
.mr-0,
.mx-0 {
margin-right: 0 !important;
}
.mb-0,
.my-0 {
margin-bottom: 0 !important;
}
.ml-0,
.mx-0 {
margin-left: 0 !important;
}
.m-1 {
margin: 0.3125rem !important;
}
.mt-1,
.my-1 {
margin-top: 0.3125rem !important;
}
.mr-1,
.mx-1 {
margin-right: 0.3125rem !important;
}
.mb-1,
.my-1 {
margin-bottom: 0.3125rem !important;
}
.ml-1,
.mx-1 {
margin-left: 0.3125rem !important;
}
.m-2 {
margin: 0.625rem !important;
}
.mt-2,
.my-2 {
margin-top: 0.625rem !important;
}
.mr-2,
.mx-2 {
margin-right: 0.625rem !important;
}
.mb-2,
.my-2 {
margin-bottom: 0.625rem !important;
}
.ml-2,
.mx-2 {
margin-left: 0.625rem !important;
}
.m-3 {
margin: 0.9375rem !important;
}
.mt-3,
.my-3 {
margin-top: 0.9375rem !important;
}
.mr-3,
.mx-3 {
margin-right: 0.9375rem !important;
}
.mb-3,
.my-3 {
margin-bottom: 0.9375rem !important;
}
.ml-3,
.mx-3 {
margin-left: 0.9375rem !important;
}
.m-4 {
margin: 1.875rem !important;
}
.mt-4,
.my-4 {
margin-top: 1.875rem !important;
}
.mr-4,
.mx-4 {
margin-right: 1.875rem !important;
}
.mb-4,
.my-4 {
margin-bottom: 1.875rem !important;
}
.ml-4,
.mx-4 {
margin-left: 1.875rem !important;
}
.m-5 {
margin: 2.8125rem !important;
}
.mt-5,
.my-5 {
margin-top: 2.8125rem !important;
}
.mr-5,
.mx-5 {
margin-right: 2.8125rem !important;
}
.mb-5,
.my-5 {
margin-bottom: 2.8125rem !important;
}
.ml-5,
.mx-5 {
margin-left: 2.8125rem !important;
}
.p-0 {
padding: 0 !important;
}
.pt-0,
.py-0 {
padding-top: 0 !important;
}
.pr-0,
.px-0 {
padding-right: 0 !important;
}
.pb-0,
.py-0 {
padding-bottom: 0 !important;
}
.pl-0,
.px-0 {
padding-left: 0 !important;
}
.p-1 {
padding: 0.3125rem !important;
}
.pt-1,
.py-1 {
padding-top: 0.3125rem !important;
}
.pr-1,
.px-1 {
padding-right: 0.3125rem !important;
}
.pb-1,
.py-1 {
padding-bottom: 0.3125rem !important;
}
.pl-1,
.px-1 {
padding-left: 0.3125rem !important;
}
.p-2 {
padding: 0.625rem !important;
}
.pt-2,
.py-2 {
padding-top: 0.625rem !important;
}
.pr-2,
.px-2 {
padding-right: 0.625rem !important;
}
.pb-2,
.py-2 {
padding-bottom: 0.625rem !important;
}
.pl-2,
.px-2 {
padding-left: 0.625rem !important;
}
.p-3 {
padding: 0.9375rem !important;
}
.pt-3,
.py-3 {
padding-top: 0.9375rem !important;
}
.pr-3,
.px-3 {
padding-right: 0.9375rem !important;
}
.pb-3,
.py-3 {
padding-bottom: 0.9375rem !important;
}
.pl-3,
.px-3 {
padding-left: 0.9375rem !important;
}
.p-4 {
padding: 1.875rem !important;
}
.pt-4,
.py-4 {
padding-top: 1.875rem !important;
}
.pr-4,
.px-4 {
padding-right: 1.875rem !important;
}
.pb-4,
.py-4 {
padding-bottom: 1.875rem !important;
}
.pl-4,
.px-4 {
padding-left: 1.875rem !important;
}
.p-5 {
padding: 2.8125rem !important;
}
.pt-5,
.py-5 {
padding-top: 2.8125rem !important;
}
.pr-5,
.px-5 {
padding-right: 2.8125rem !important;
}
.pb-5,
.py-5 {
padding-bottom: 2.8125rem !important;
}
.pl-5,
.px-5 {
padding-left: 2.8125rem !important;
}
.m-n1 {
margin: -0.3125rem !important;
}
.mt-n1,
.my-n1 {
margin-top: -0.3125rem !important;
}
.mr-n1,
.mx-n1 {
margin-right: -0.3125rem !important;
}
.mb-n1,
.my-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-n1,
.mx-n1 {
margin-left: -0.3125rem !important;
}
.m-n2 {
margin: -0.625rem !important;
}
.mt-n2,
.my-n2 {
margin-top: -0.625rem !important;
}
.mr-n2,
.mx-n2 {
margin-right: -0.625rem !important;
}
.mb-n2,
.my-n2 {
margin-bottom: -0.625rem !important;
}
.ml-n2,
.mx-n2 {
margin-left: -0.625rem !important;
}
.m-n3 {
margin: -0.9375rem !important;
}
.mt-n3,
.my-n3 {
margin-top: -0.9375rem !important;
}
.mr-n3,
.mx-n3 {
margin-right: -0.9375rem !important;
}
.mb-n3,
.my-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-n3,
.mx-n3 {
margin-left: -0.9375rem !important;
}
.m-n4 {
margin: -1.875rem !important;
}
.mt-n4,
.my-n4 {
margin-top: -1.875rem !important;
}
.mr-n4,
.mx-n4 {
margin-right: -1.875rem !important;
}
.mb-n4,
.my-n4 {
margin-bottom: -1.875rem !important;
}
.ml-n4,
.mx-n4 {
margin-left: -1.875rem !important;
}
.m-n5 {
margin: -2.8125rem !important;
}
.mt-n5,
.my-n5 {
margin-top: -2.8125rem !important;
}
.mr-n5,
.mx-n5 {
margin-right: -2.8125rem !important;
}
.mb-n5,
.my-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-n5,
.mx-n5 {
margin-left: -2.8125rem !important;
}
.m-auto {
margin: auto !important;
}
.mt-auto,
.my-auto {
margin-top: auto !important;
}
.mr-auto,
.mx-auto {
margin-right: auto !important;
}
.mb-auto,
.my-auto {
margin-bottom: auto !important;
}
.ml-auto,
.mx-auto {
margin-left: auto !important;
}
@media (min-width: 576px) {
.m-sm-0 {
margin: 0 !important;
}
.mt-sm-0,
.my-sm-0 {
margin-top: 0 !important;
}
.mr-sm-0,
.mx-sm-0 {
margin-right: 0 !important;
}
.mb-sm-0,
.my-sm-0 {
margin-bottom: 0 !important;
}
.ml-sm-0,
.mx-sm-0 {
margin-left: 0 !important;
}
.m-sm-1 {
margin: 0.3125rem !important;
}
.mt-sm-1,
.my-sm-1 {
margin-top: 0.3125rem !important;
}
.mr-sm-1,
.mx-sm-1 {
margin-right: 0.3125rem !important;
}
.mb-sm-1,
.my-sm-1 {
margin-bottom: 0.3125rem !important;
}
.ml-sm-1,
.mx-sm-1 {
margin-left: 0.3125rem !important;
}
.m-sm-2 {
margin: 0.625rem !important;
}
.mt-sm-2,
.my-sm-2 {
margin-top: 0.625rem !important;
}
.mr-sm-2,
.mx-sm-2 {
margin-right: 0.625rem !important;
}
.mb-sm-2,
.my-sm-2 {
margin-bottom: 0.625rem !important;
}
.ml-sm-2,
.mx-sm-2 {
margin-left: 0.625rem !important;
}
.m-sm-3 {
margin: 0.9375rem !important;
}
.mt-sm-3,
.my-sm-3 {
margin-top: 0.9375rem !important;
}
.mr-sm-3,
.mx-sm-3 {
margin-right: 0.9375rem !important;
}
.mb-sm-3,
.my-sm-3 {
margin-bottom: 0.9375rem !important;
}
.ml-sm-3,
.mx-sm-3 {
margin-left: 0.9375rem !important;
}
.m-sm-4 {
margin: 1.875rem !important;
}
.mt-sm-4,
.my-sm-4 {
margin-top: 1.875rem !important;
}
.mr-sm-4,
.mx-sm-4 {
margin-right: 1.875rem !important;
}
.mb-sm-4,
.my-sm-4 {
margin-bottom: 1.875rem !important;
}
.ml-sm-4,
.mx-sm-4 {
margin-left: 1.875rem !important;
}
.m-sm-5 {
margin: 2.8125rem !important;
}
.mt-sm-5,
.my-sm-5 {
margin-top: 2.8125rem !important;
}
.mr-sm-5,
.mx-sm-5 {
margin-right: 2.8125rem !important;
}
.mb-sm-5,
.my-sm-5 {
margin-bottom: 2.8125rem !important;
}
.ml-sm-5,
.mx-sm-5 {
margin-left: 2.8125rem !important;
}
.p-sm-0 {
padding: 0 !important;
}
.pt-sm-0,
.py-sm-0 {
padding-top: 0 !important;
}
.pr-sm-0,
.px-sm-0 {
padding-right: 0 !important;
}
.pb-sm-0,
.py-sm-0 {
padding-bottom: 0 !important;
}
.pl-sm-0,
.px-sm-0 {
padding-left: 0 !important;
}
.p-sm-1 {
padding: 0.3125rem !important;
}
.pt-sm-1,
.py-sm-1 {
padding-top: 0.3125rem !important;
}
.pr-sm-1,
.px-sm-1 {
padding-right: 0.3125rem !important;
}
.pb-sm-1,
.py-sm-1 {
padding-bottom: 0.3125rem !important;
}
.pl-sm-1,
.px-sm-1 {
padding-left: 0.3125rem !important;
}
.p-sm-2 {
padding: 0.625rem !important;
}
.pt-sm-2,
.py-sm-2 {
padding-top: 0.625rem !important;
}
.pr-sm-2,
.px-sm-2 {
padding-right: 0.625rem !important;
}
.pb-sm-2,
.py-sm-2 {
padding-bottom: 0.625rem !important;
}
.pl-sm-2,
.px-sm-2 {
padding-left: 0.625rem !important;
}
.p-sm-3 {
padding: 0.9375rem !important;
}
.pt-sm-3,
.py-sm-3 {
padding-top: 0.9375rem !important;
}
.pr-sm-3,
.px-sm-3 {
padding-right: 0.9375rem !important;
}
.pb-sm-3,
.py-sm-3 {
padding-bottom: 0.9375rem !important;
}
.pl-sm-3,
.px-sm-3 {
padding-left: 0.9375rem !important;
}
.p-sm-4 {
padding: 1.875rem !important;
}
.pt-sm-4,
.py-sm-4 {
padding-top: 1.875rem !important;
}
.pr-sm-4,
.px-sm-4 {
padding-right: 1.875rem !important;
}
.pb-sm-4,
.py-sm-4 {
padding-bottom: 1.875rem !important;
}
.pl-sm-4,
.px-sm-4 {
padding-left: 1.875rem !important;
}
.p-sm-5 {
padding: 2.8125rem !important;
}
.pt-sm-5,
.py-sm-5 {
padding-top: 2.8125rem !important;
}
.pr-sm-5,
.px-sm-5 {
padding-right: 2.8125rem !important;
}
.pb-sm-5,
.py-sm-5 {
padding-bottom: 2.8125rem !important;
}
.pl-sm-5,
.px-sm-5 {
padding-left: 2.8125rem !important;
}
.m-sm-n1 {
margin: -0.3125rem !important;
}
.mt-sm-n1,
.my-sm-n1 {
margin-top: -0.3125rem !important;
}
.mr-sm-n1,
.mx-sm-n1 {
margin-right: -0.3125rem !important;
}
.mb-sm-n1,
.my-sm-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-sm-n1,
.mx-sm-n1 {
margin-left: -0.3125rem !important;
}
.m-sm-n2 {
margin: -0.625rem !important;
}
.mt-sm-n2,
.my-sm-n2 {
margin-top: -0.625rem !important;
}
.mr-sm-n2,
.mx-sm-n2 {
margin-right: -0.625rem !important;
}
.mb-sm-n2,
.my-sm-n2 {
margin-bottom: -0.625rem !important;
}
.ml-sm-n2,
.mx-sm-n2 {
margin-left: -0.625rem !important;
}
.m-sm-n3 {
margin: -0.9375rem !important;
}
.mt-sm-n3,
.my-sm-n3 {
margin-top: -0.9375rem !important;
}
.mr-sm-n3,
.mx-sm-n3 {
margin-right: -0.9375rem !important;
}
.mb-sm-n3,
.my-sm-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-sm-n3,
.mx-sm-n3 {
margin-left: -0.9375rem !important;
}
.m-sm-n4 {
margin: -1.875rem !important;
}
.mt-sm-n4,
.my-sm-n4 {
margin-top: -1.875rem !important;
}
.mr-sm-n4,
.mx-sm-n4 {
margin-right: -1.875rem !important;
}
.mb-sm-n4,
.my-sm-n4 {
margin-bottom: -1.875rem !important;
}
.ml-sm-n4,
.mx-sm-n4 {
margin-left: -1.875rem !important;
}
.m-sm-n5 {
margin: -2.8125rem !important;
}
.mt-sm-n5,
.my-sm-n5 {
margin-top: -2.8125rem !important;
}
.mr-sm-n5,
.mx-sm-n5 {
margin-right: -2.8125rem !important;
}
.mb-sm-n5,
.my-sm-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-sm-n5,
.mx-sm-n5 {
margin-left: -2.8125rem !important;
}
.m-sm-auto {
margin: auto !important;
}
.mt-sm-auto,
.my-sm-auto {
margin-top: auto !important;
}
.mr-sm-auto,
.mx-sm-auto {
margin-right: auto !important;
}
.mb-sm-auto,
.my-sm-auto {
margin-bottom: auto !important;
}
.ml-sm-auto,
.mx-sm-auto {
margin-left: auto !important;
}
}
@media (min-width: 768px) {
.m-md-0 {
margin: 0 !important;
}
.mt-md-0,
.my-md-0 {
margin-top: 0 !important;
}
.mr-md-0,
.mx-md-0 {
margin-right: 0 !important;
}
.mb-md-0,
.my-md-0 {
margin-bottom: 0 !important;
}
.ml-md-0,
.mx-md-0 {
margin-left: 0 !important;
}
.m-md-1 {
margin: 0.3125rem !important;
}
.mt-md-1,
.my-md-1 {
margin-top: 0.3125rem !important;
}
.mr-md-1,
.mx-md-1 {
margin-right: 0.3125rem !important;
}
.mb-md-1,
.my-md-1 {
margin-bottom: 0.3125rem !important;
}
.ml-md-1,
.mx-md-1 {
margin-left: 0.3125rem !important;
}
.m-md-2 {
margin: 0.625rem !important;
}
.mt-md-2,
.my-md-2 {
margin-top: 0.625rem !important;
}
.mr-md-2,
.mx-md-2 {
margin-right: 0.625rem !important;
}
.mb-md-2,
.my-md-2 {
margin-bottom: 0.625rem !important;
}
.ml-md-2,
.mx-md-2 {
margin-left: 0.625rem !important;
}
.m-md-3 {
margin: 0.9375rem !important;
}
.mt-md-3,
.my-md-3 {
margin-top: 0.9375rem !important;
}
.mr-md-3,
.mx-md-3 {
margin-right: 0.9375rem !important;
}
.mb-md-3,
.my-md-3 {
margin-bottom: 0.9375rem !important;
}
.ml-md-3,
.mx-md-3 {
margin-left: 0.9375rem !important;
}
.m-md-4 {
margin: 1.875rem !important;
}
.mt-md-4,
.my-md-4 {
margin-top: 1.875rem !important;
}
.mr-md-4,
.mx-md-4 {
margin-right: 1.875rem !important;
}
.mb-md-4,
.my-md-4 {
margin-bottom: 1.875rem !important;
}
.ml-md-4,
.mx-md-4 {
margin-left: 1.875rem !important;
}
.m-md-5 {
margin: 2.8125rem !important;
}
.mt-md-5,
.my-md-5 {
margin-top: 2.8125rem !important;
}
.mr-md-5,
.mx-md-5 {
margin-right: 2.8125rem !important;
}
.mb-md-5,
.my-md-5 {
margin-bottom: 2.8125rem !important;
}
.ml-md-5,
.mx-md-5 {
margin-left: 2.8125rem !important;
}
.p-md-0 {
padding: 0 !important;
}
.pt-md-0,
.py-md-0 {
padding-top: 0 !important;
}
.pr-md-0,
.px-md-0 {
padding-right: 0 !important;
}
.pb-md-0,
.py-md-0 {
padding-bottom: 0 !important;
}
.pl-md-0,
.px-md-0 {
padding-left: 0 !important;
}
.p-md-1 {
padding: 0.3125rem !important;
}
.pt-md-1,
.py-md-1 {
padding-top: 0.3125rem !important;
}
.pr-md-1,
.px-md-1 {
padding-right: 0.3125rem !important;
}
.pb-md-1,
.py-md-1 {
padding-bottom: 0.3125rem !important;
}
.pl-md-1,
.px-md-1 {
padding-left: 0.3125rem !important;
}
.p-md-2 {
padding: 0.625rem !important;
}
.pt-md-2,
.py-md-2 {
padding-top: 0.625rem !important;
}
.pr-md-2,
.px-md-2 {
padding-right: 0.625rem !important;
}
.pb-md-2,
.py-md-2 {
padding-bottom: 0.625rem !important;
}
.pl-md-2,
.px-md-2 {
padding-left: 0.625rem !important;
}
.p-md-3 {
padding: 0.9375rem !important;
}
.pt-md-3,
.py-md-3 {
padding-top: 0.9375rem !important;
}
.pr-md-3,
.px-md-3 {
padding-right: 0.9375rem !important;
}
.pb-md-3,
.py-md-3 {
padding-bottom: 0.9375rem !important;
}
.pl-md-3,
.px-md-3 {
padding-left: 0.9375rem !important;
}
.p-md-4 {
padding: 1.875rem !important;
}
.pt-md-4,
.py-md-4 {
padding-top: 1.875rem !important;
}
.pr-md-4,
.px-md-4 {
padding-right: 1.875rem !important;
}
.pb-md-4,
.py-md-4 {
padding-bottom: 1.875rem !important;
}
.pl-md-4,
.px-md-4 {
padding-left: 1.875rem !important;
}
.p-md-5 {
padding: 2.8125rem !important;
}
.pt-md-5,
.py-md-5 {
padding-top: 2.8125rem !important;
}
.pr-md-5,
.px-md-5 {
padding-right: 2.8125rem !important;
}
.pb-md-5,
.py-md-5 {
padding-bottom: 2.8125rem !important;
}
.pl-md-5,
.px-md-5 {
padding-left: 2.8125rem !important;
}
.m-md-n1 {
margin: -0.3125rem !important;
}
.mt-md-n1,
.my-md-n1 {
margin-top: -0.3125rem !important;
}
.mr-md-n1,
.mx-md-n1 {
margin-right: -0.3125rem !important;
}
.mb-md-n1,
.my-md-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-md-n1,
.mx-md-n1 {
margin-left: -0.3125rem !important;
}
.m-md-n2 {
margin: -0.625rem !important;
}
.mt-md-n2,
.my-md-n2 {
margin-top: -0.625rem !important;
}
.mr-md-n2,
.mx-md-n2 {
margin-right: -0.625rem !important;
}
.mb-md-n2,
.my-md-n2 {
margin-bottom: -0.625rem !important;
}
.ml-md-n2,
.mx-md-n2 {
margin-left: -0.625rem !important;
}
.m-md-n3 {
margin: -0.9375rem !important;
}
.mt-md-n3,
.my-md-n3 {
margin-top: -0.9375rem !important;
}
.mr-md-n3,
.mx-md-n3 {
margin-right: -0.9375rem !important;
}
.mb-md-n3,
.my-md-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-md-n3,
.mx-md-n3 {
margin-left: -0.9375rem !important;
}
.m-md-n4 {
margin: -1.875rem !important;
}
.mt-md-n4,
.my-md-n4 {
margin-top: -1.875rem !important;
}
.mr-md-n4,
.mx-md-n4 {
margin-right: -1.875rem !important;
}
.mb-md-n4,
.my-md-n4 {
margin-bottom: -1.875rem !important;
}
.ml-md-n4,
.mx-md-n4 {
margin-left: -1.875rem !important;
}
.m-md-n5 {
margin: -2.8125rem !important;
}
.mt-md-n5,
.my-md-n5 {
margin-top: -2.8125rem !important;
}
.mr-md-n5,
.mx-md-n5 {
margin-right: -2.8125rem !important;
}
.mb-md-n5,
.my-md-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-md-n5,
.mx-md-n5 {
margin-left: -2.8125rem !important;
}
.m-md-auto {
margin: auto !important;
}
.mt-md-auto,
.my-md-auto {
margin-top: auto !important;
}
.mr-md-auto,
.mx-md-auto {
margin-right: auto !important;
}
.mb-md-auto,
.my-md-auto {
margin-bottom: auto !important;
}
.ml-md-auto,
.mx-md-auto {
margin-left: auto !important;
}
}
@media (min-width: 992px) {
.m-lg-0 {
margin: 0 !important;
}
.mt-lg-0,
.my-lg-0 {
margin-top: 0 !important;
}
.mr-lg-0,
.mx-lg-0 {
margin-right: 0 !important;
}
.mb-lg-0,
.my-lg-0 {
margin-bottom: 0 !important;
}
.ml-lg-0,
.mx-lg-0 {
margin-left: 0 !important;
}
.m-lg-1 {
margin: 0.3125rem !important;
}
.mt-lg-1,
.my-lg-1 {
margin-top: 0.3125rem !important;
}
.mr-lg-1,
.mx-lg-1 {
margin-right: 0.3125rem !important;
}
.mb-lg-1,
.my-lg-1 {
margin-bottom: 0.3125rem !important;
}
.ml-lg-1,
.mx-lg-1 {
margin-left: 0.3125rem !important;
}
.m-lg-2 {
margin: 0.625rem !important;
}
.mt-lg-2,
.my-lg-2 {
margin-top: 0.625rem !important;
}
.mr-lg-2,
.mx-lg-2 {
margin-right: 0.625rem !important;
}
.mb-lg-2,
.my-lg-2 {
margin-bottom: 0.625rem !important;
}
.ml-lg-2,
.mx-lg-2 {
margin-left: 0.625rem !important;
}
.m-lg-3 {
margin: 0.9375rem !important;
}
.mt-lg-3,
.my-lg-3 {
margin-top: 0.9375rem !important;
}
.mr-lg-3,
.mx-lg-3 {
margin-right: 0.9375rem !important;
}
.mb-lg-3,
.my-lg-3 {
margin-bottom: 0.9375rem !important;
}
.ml-lg-3,
.mx-lg-3 {
margin-left: 0.9375rem !important;
}
.m-lg-4 {
margin: 1.875rem !important;
}
.mt-lg-4,
.my-lg-4 {
margin-top: 1.875rem !important;
}
.mr-lg-4,
.mx-lg-4 {
margin-right: 1.875rem !important;
}
.mb-lg-4,
.my-lg-4 {
margin-bottom: 1.875rem !important;
}
.ml-lg-4,
.mx-lg-4 {
margin-left: 1.875rem !important;
}
.m-lg-5 {
margin: 2.8125rem !important;
}
.mt-lg-5,
.my-lg-5 {
margin-top: 2.8125rem !important;
}
.mr-lg-5,
.mx-lg-5 {
margin-right: 2.8125rem !important;
}
.mb-lg-5,
.my-lg-5 {
margin-bottom: 2.8125rem !important;
}
.ml-lg-5,
.mx-lg-5 {
margin-left: 2.8125rem !important;
}
.p-lg-0 {
padding: 0 !important;
}
.pt-lg-0,
.py-lg-0 {
padding-top: 0 !important;
}
.pr-lg-0,
.px-lg-0 {
padding-right: 0 !important;
}
.pb-lg-0,
.py-lg-0 {
padding-bottom: 0 !important;
}
.pl-lg-0,
.px-lg-0 {
padding-left: 0 !important;
}
.p-lg-1 {
padding: 0.3125rem !important;
}
.pt-lg-1,
.py-lg-1 {
padding-top: 0.3125rem !important;
}
.pr-lg-1,
.px-lg-1 {
padding-right: 0.3125rem !important;
}
.pb-lg-1,
.py-lg-1 {
padding-bottom: 0.3125rem !important;
}
.pl-lg-1,
.px-lg-1 {
padding-left: 0.3125rem !important;
}
.p-lg-2 {
padding: 0.625rem !important;
}
.pt-lg-2,
.py-lg-2 {
padding-top: 0.625rem !important;
}
.pr-lg-2,
.px-lg-2 {
padding-right: 0.625rem !important;
}
.pb-lg-2,
.py-lg-2 {
padding-bottom: 0.625rem !important;
}
.pl-lg-2,
.px-lg-2 {
padding-left: 0.625rem !important;
}
.p-lg-3 {
padding: 0.9375rem !important;
}
.pt-lg-3,
.py-lg-3 {
padding-top: 0.9375rem !important;
}
.pr-lg-3,
.px-lg-3 {
padding-right: 0.9375rem !important;
}
.pb-lg-3,
.py-lg-3 {
padding-bottom: 0.9375rem !important;
}
.pl-lg-3,
.px-lg-3 {
padding-left: 0.9375rem !important;
}
.p-lg-4 {
padding: 1.875rem !important;
}
.pt-lg-4,
.py-lg-4 {
padding-top: 1.875rem !important;
}
.pr-lg-4,
.px-lg-4 {
padding-right: 1.875rem !important;
}
.pb-lg-4,
.py-lg-4 {
padding-bottom: 1.875rem !important;
}
.pl-lg-4,
.px-lg-4 {
padding-left: 1.875rem !important;
}
.p-lg-5 {
padding: 2.8125rem !important;
}
.pt-lg-5,
.py-lg-5 {
padding-top: 2.8125rem !important;
}
.pr-lg-5,
.px-lg-5 {
padding-right: 2.8125rem !important;
}
.pb-lg-5,
.py-lg-5 {
padding-bottom: 2.8125rem !important;
}
.pl-lg-5,
.px-lg-5 {
padding-left: 2.8125rem !important;
}
.m-lg-n1 {
margin: -0.3125rem !important;
}
.mt-lg-n1,
.my-lg-n1 {
margin-top: -0.3125rem !important;
}
.mr-lg-n1,
.mx-lg-n1 {
margin-right: -0.3125rem !important;
}
.mb-lg-n1,
.my-lg-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-lg-n1,
.mx-lg-n1 {
margin-left: -0.3125rem !important;
}
.m-lg-n2 {
margin: -0.625rem !important;
}
.mt-lg-n2,
.my-lg-n2 {
margin-top: -0.625rem !important;
}
.mr-lg-n2,
.mx-lg-n2 {
margin-right: -0.625rem !important;
}
.mb-lg-n2,
.my-lg-n2 {
margin-bottom: -0.625rem !important;
}
.ml-lg-n2,
.mx-lg-n2 {
margin-left: -0.625rem !important;
}
.m-lg-n3 {
margin: -0.9375rem !important;
}
.mt-lg-n3,
.my-lg-n3 {
margin-top: -0.9375rem !important;
}
.mr-lg-n3,
.mx-lg-n3 {
margin-right: -0.9375rem !important;
}
.mb-lg-n3,
.my-lg-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-lg-n3,
.mx-lg-n3 {
margin-left: -0.9375rem !important;
}
.m-lg-n4 {
margin: -1.875rem !important;
}
.mt-lg-n4,
.my-lg-n4 {
margin-top: -1.875rem !important;
}
.mr-lg-n4,
.mx-lg-n4 {
margin-right: -1.875rem !important;
}
.mb-lg-n4,
.my-lg-n4 {
margin-bottom: -1.875rem !important;
}
.ml-lg-n4,
.mx-lg-n4 {
margin-left: -1.875rem !important;
}
.m-lg-n5 {
margin: -2.8125rem !important;
}
.mt-lg-n5,
.my-lg-n5 {
margin-top: -2.8125rem !important;
}
.mr-lg-n5,
.mx-lg-n5 {
margin-right: -2.8125rem !important;
}
.mb-lg-n5,
.my-lg-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-lg-n5,
.mx-lg-n5 {
margin-left: -2.8125rem !important;
}
.m-lg-auto {
margin: auto !important;
}
.mt-lg-auto,
.my-lg-auto {
margin-top: auto !important;
}
.mr-lg-auto,
.mx-lg-auto {
margin-right: auto !important;
}
.mb-lg-auto,
.my-lg-auto {
margin-bottom: auto !important;
}
.ml-lg-auto,
.mx-lg-auto {
margin-left: auto !important;
}
}
@media (min-width: 1200px) {
.m-xl-0 {
margin: 0 !important;
}
.mt-xl-0,
.my-xl-0 {
margin-top: 0 !important;
}
.mr-xl-0,
.mx-xl-0 {
margin-right: 0 !important;
}
.mb-xl-0,
.my-xl-0 {
margin-bottom: 0 !important;
}
.ml-xl-0,
.mx-xl-0 {
margin-left: 0 !important;
}
.m-xl-1 {
margin: 0.3125rem !important;
}
.mt-xl-1,
.my-xl-1 {
margin-top: 0.3125rem !important;
}
.mr-xl-1,
.mx-xl-1 {
margin-right: 0.3125rem !important;
}
.mb-xl-1,
.my-xl-1 {
margin-bottom: 0.3125rem !important;
}
.ml-xl-1,
.mx-xl-1 {
margin-left: 0.3125rem !important;
}
.m-xl-2 {
margin: 0.625rem !important;
}
.mt-xl-2,
.my-xl-2 {
margin-top: 0.625rem !important;
}
.mr-xl-2,
.mx-xl-2 {
margin-right: 0.625rem !important;
}
.mb-xl-2,
.my-xl-2 {
margin-bottom: 0.625rem !important;
}
.ml-xl-2,
.mx-xl-2 {
margin-left: 0.625rem !important;
}
.m-xl-3 {
margin: 0.9375rem !important;
}
.mt-xl-3,
.my-xl-3 {
margin-top: 0.9375rem !important;
}
.mr-xl-3,
.mx-xl-3 {
margin-right: 0.9375rem !important;
}
.mb-xl-3,
.my-xl-3 {
margin-bottom: 0.9375rem !important;
}
.ml-xl-3,
.mx-xl-3 {
margin-left: 0.9375rem !important;
}
.m-xl-4 {
margin: 1.875rem !important;
}
.mt-xl-4,
.my-xl-4 {
margin-top: 1.875rem !important;
}
.mr-xl-4,
.mx-xl-4 {
margin-right: 1.875rem !important;
}
.mb-xl-4,
.my-xl-4 {
margin-bottom: 1.875rem !important;
}
.ml-xl-4,
.mx-xl-4 {
margin-left: 1.875rem !important;
}
.m-xl-5 {
margin: 2.8125rem !important;
}
.mt-xl-5,
.my-xl-5 {
margin-top: 2.8125rem !important;
}
.mr-xl-5,
.mx-xl-5 {
margin-right: 2.8125rem !important;
}
.mb-xl-5,
.my-xl-5 {
margin-bottom: 2.8125rem !important;
}
.ml-xl-5,
.mx-xl-5 {
margin-left: 2.8125rem !important;
}
.p-xl-0 {
padding: 0 !important;
}
.pt-xl-0,
.py-xl-0 {
padding-top: 0 !important;
}
.pr-xl-0,
.px-xl-0 {
padding-right: 0 !important;
}
.pb-xl-0,
.py-xl-0 {
padding-bottom: 0 !important;
}
.pl-xl-0,
.px-xl-0 {
padding-left: 0 !important;
}
.p-xl-1 {
padding: 0.3125rem !important;
}
.pt-xl-1,
.py-xl-1 {
padding-top: 0.3125rem !important;
}
.pr-xl-1,
.px-xl-1 {
padding-right: 0.3125rem !important;
}
.pb-xl-1,
.py-xl-1 {
padding-bottom: 0.3125rem !important;
}
.pl-xl-1,
.px-xl-1 {
padding-left: 0.3125rem !important;
}
.p-xl-2 {
padding: 0.625rem !important;
}
.pt-xl-2,
.py-xl-2 {
padding-top: 0.625rem !important;
}
.pr-xl-2,
.px-xl-2 {
padding-right: 0.625rem !important;
}
.pb-xl-2,
.py-xl-2 {
padding-bottom: 0.625rem !important;
}
.pl-xl-2,
.px-xl-2 {
padding-left: 0.625rem !important;
}
.p-xl-3 {
padding: 0.9375rem !important;
}
.pt-xl-3,
.py-xl-3 {
padding-top: 0.9375rem !important;
}
.pr-xl-3,
.px-xl-3 {
padding-right: 0.9375rem !important;
}
.pb-xl-3,
.py-xl-3 {
padding-bottom: 0.9375rem !important;
}
.pl-xl-3,
.px-xl-3 {
padding-left: 0.9375rem !important;
}
.p-xl-4 {
padding: 1.875rem !important;
}
.pt-xl-4,
.py-xl-4 {
padding-top: 1.875rem !important;
}
.pr-xl-4,
.px-xl-4 {
padding-right: 1.875rem !important;
}
.pb-xl-4,
.py-xl-4 {
padding-bottom: 1.875rem !important;
}
.pl-xl-4,
.px-xl-4 {
padding-left: 1.875rem !important;
}
.p-xl-5 {
padding: 2.8125rem !important;
}
.pt-xl-5,
.py-xl-5 {
padding-top: 2.8125rem !important;
}
.pr-xl-5,
.px-xl-5 {
padding-right: 2.8125rem !important;
}
.pb-xl-5,
.py-xl-5 {
padding-bottom: 2.8125rem !important;
}
.pl-xl-5,
.px-xl-5 {
padding-left: 2.8125rem !important;
}
.m-xl-n1 {
margin: -0.3125rem !important;
}
.mt-xl-n1,
.my-xl-n1 {
margin-top: -0.3125rem !important;
}
.mr-xl-n1,
.mx-xl-n1 {
margin-right: -0.3125rem !important;
}
.mb-xl-n1,
.my-xl-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-xl-n1,
.mx-xl-n1 {
margin-left: -0.3125rem !important;
}
.m-xl-n2 {
margin: -0.625rem !important;
}
.mt-xl-n2,
.my-xl-n2 {
margin-top: -0.625rem !important;
}
.mr-xl-n2,
.mx-xl-n2 {
margin-right: -0.625rem !important;
}
.mb-xl-n2,
.my-xl-n2 {
margin-bottom: -0.625rem !important;
}
.ml-xl-n2,
.mx-xl-n2 {
margin-left: -0.625rem !important;
}
.m-xl-n3 {
margin: -0.9375rem !important;
}
.mt-xl-n3,
.my-xl-n3 {
margin-top: -0.9375rem !important;
}
.mr-xl-n3,
.mx-xl-n3 {
margin-right: -0.9375rem !important;
}
.mb-xl-n3,
.my-xl-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-xl-n3,
.mx-xl-n3 {
margin-left: -0.9375rem !important;
}
.m-xl-n4 {
margin: -1.875rem !important;
}
.mt-xl-n4,
.my-xl-n4 {
margin-top: -1.875rem !important;
}
.mr-xl-n4,
.mx-xl-n4 {
margin-right: -1.875rem !important;
}
.mb-xl-n4,
.my-xl-n4 {
margin-bottom: -1.875rem !important;
}
.ml-xl-n4,
.mx-xl-n4 {
margin-left: -1.875rem !important;
}
.m-xl-n5 {
margin: -2.8125rem !important;
}
.mt-xl-n5,
.my-xl-n5 {
margin-top: -2.8125rem !important;
}
.mr-xl-n5,
.mx-xl-n5 {
margin-right: -2.8125rem !important;
}
.mb-xl-n5,
.my-xl-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-xl-n5,
.mx-xl-n5 {
margin-left: -2.8125rem !important;
}
.m-xl-auto {
margin: auto !important;
}
.mt-xl-auto,
.my-xl-auto {
margin-top: auto !important;
}
.mr-xl-auto,
.mx-xl-auto {
margin-right: auto !important;
}
.mb-xl-auto,
.my-xl-auto {
margin-bottom: auto !important;
}
.ml-xl-auto,
.mx-xl-auto {
margin-left: auto !important;
}
}
.stretched-link::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
pointer-events: auto;
content: "";
background-color: rgba(0, 0, 0, 0);
}
.text-monospace {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
}
.text-justify {
text-align: justify !important;
}
.text-wrap {
white-space: normal !important;
}
.text-nowrap {
white-space: nowrap !important;
}
.text-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.text-left {
text-align: left !important;
}
.text-right {
text-align: right !important;
}
.text-center {
text-align: center !important;
}
@media (min-width: 576px) {
.text-sm-left {
text-align: left !important;
}
.text-sm-right {
text-align: right !important;
}
.text-sm-center {
text-align: center !important;
}
}
@media (min-width: 768px) {
.text-md-left {
text-align: left !important;
}
.text-md-right {
text-align: right !important;
}
.text-md-center {
text-align: center !important;
}
}
@media (min-width: 992px) {
.text-lg-left {
text-align: left !important;
}
.text-lg-right {
text-align: right !important;
}
.text-lg-center {
text-align: center !important;
}
}
@media (min-width: 1200px) {
.text-xl-left {
text-align: left !important;
}
.text-xl-right {
text-align: right !important;
}
.text-xl-center {
text-align: center !important;
}
}
.text-lowercase {
text-transform: lowercase !important;
}
.text-uppercase {
text-transform: uppercase !important;
}
.text-capitalize {
text-transform: capitalize !important;
}
.font-weight-light {
font-weight: 300 !important;
}
.font-weight-lighter {
font-weight: lighter !important;
}
.font-weight-normal {
font-weight: 400 !important;
}
.font-weight-bold {
font-weight: 700 !important;
}
.font-weight-bolder {
font-weight: bolder !important;
}
.font-italic {
font-style: italic !important;
}
.text-white {
color: #fff !important;
}
.text-primary {
color: #007bff !important;
}
a.text-primary:hover, a.text-primary:focus {
color: #0056b3 !important;
}
.text-secondary {
color: #6c757d !important;
}
a.text-secondary:hover, a.text-secondary:focus {
color: #494f54 !important;
}
.text-success {
color: #28a745 !important;
}
a.text-success:hover, a.text-success:focus {
color: #19692c !important;
}
.text-info {
color: #17a2b8 !important;
}
a.text-info:hover, a.text-info:focus {
color: #0f6674 !important;
}
.text-warning {
color: #ffc107 !important;
}
a.text-warning:hover, a.text-warning:focus {
color: #ba8b00 !important;
}
.text-danger {
color: #dc3545 !important;
}
a.text-danger:hover, a.text-danger:focus {
color: #a71d2a !important;
}
.text-light {
color: #f8f9fa !important;
}
a.text-light:hover, a.text-light:focus {
color: #cbd3da !important;
}
.text-dark {
color: #343a40 !important;
}
a.text-dark:hover, a.text-dark:focus {
color: #121416 !important;
}
.text-body {
color: #212529 !important;
}
.text-muted {
color: #6c757d !important;
}
.text-black-50 {
color: rgba(0, 0, 0, 0.5) !important;
}
.text-white-50 {
color: rgba(255, 255, 255, 0.5) !important;
}
.text-hide {
font: 0/0 a;
color: transparent;
text-shadow: none;
background-color: transparent;
border: 0;
}
.text-decoration-none {
text-decoration: none !important;
}
.text-break {
word-wrap: break-word !important;
}
.text-reset {
color: inherit !important;
}
.visible {
visibility: visible !important;
}
.invisible {
visibility: hidden !important;
}
.d-none {
display: none !important;
}
.d-inline {
display: inline !important;
}
.d-inline-block {
display: inline-block !important;
}
.d-block {
display: block !important;
}
.d-table {
display: table !important;
}
.d-table-row {
display: table-row !important;
}
.d-table-cell {
display: table-cell !important;
}
.d-flex {
display: flex !important;
}
.d-inline-flex {
display: inline-flex !important;
}
@media (min-width: 576px) {
.d-sm-none {
display: none !important;
}
.d-sm-inline {
display: inline !important;
}
.d-sm-inline-block {
display: inline-block !important;
}
.d-sm-block {
display: block !important;
}
.d-sm-table {
display: table !important;
}
.d-sm-table-row {
display: table-row !important;
}
.d-sm-table-cell {
display: table-cell !important;
}
.d-sm-flex {
display: flex !important;
}
.d-sm-inline-flex {
display: inline-flex !important;
}
}
@media (min-width: 768px) {
.d-md-none {
display: none !important;
}
.d-md-inline {
display: inline !important;
}
.d-md-inline-block {
display: inline-block !important;
}
.d-md-block {
display: block !important;
}
.d-md-table {
display: table !important;
}
.d-md-table-row {
display: table-row !important;
}
.d-md-table-cell {
display: table-cell !important;
}
.d-md-flex {
display: flex !important;
}
.d-md-inline-flex {
display: inline-flex !important;
}
}
@media (min-width: 992px) {
.d-lg-none {
display: none !important;
}
.d-lg-inline {
display: inline !important;
}
.d-lg-inline-block {
display: inline-block !important;
}
.d-lg-block {
display: block !important;
}
.d-lg-table {
display: table !important;
}
.d-lg-table-row {
display: table-row !important;
}
.d-lg-table-cell {
display: table-cell !important;
}
.d-lg-flex {
display: flex !important;
}
.d-lg-inline-flex {
display: inline-flex !important;
}
}
@media (min-width: 1200px) {
.d-xl-none {
display: none !important;
}
.d-xl-inline {
display: inline !important;
}
.d-xl-inline-block {
display: inline-block !important;
}
.d-xl-block {
display: block !important;
}
.d-xl-table {
display: table !important;
}
.d-xl-table-row {
display: table-row !important;
}
.d-xl-table-cell {
display: table-cell !important;
}
.d-xl-flex {
display: flex !important;
}
.d-xl-inline-flex {
display: inline-flex !important;
}
}
@media print {
.d-print-none {
display: none !important;
}
.d-print-inline {
display: inline !important;
}
.d-print-inline-block {
display: inline-block !important;
}
.d-print-block {
display: block !important;
}
.d-print-table {
display: table !important;
}
.d-print-table-row {
display: table-row !important;
}
.d-print-table-cell {
display: table-cell !important;
}
.d-print-flex {
display: flex !important;
}
.d-print-inline-flex {
display: inline-flex !important;
}
}
.flex-row {
flex-direction: row !important;
}
.flex-column {
flex-direction: column !important;
}
.flex-row-reverse {
flex-direction: row-reverse !important;
}
.flex-column-reverse {
flex-direction: column-reverse !important;
}
.flex-wrap {
flex-wrap: wrap !important;
}
.flex-nowrap {
flex-wrap: nowrap !important;
}
.flex-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-fill {
flex: 1 1 auto !important;
}
.flex-grow-0 {
flex-grow: 0 !important;
}
.flex-grow-1 {
flex-grow: 1 !important;
}
.flex-shrink-0 {
flex-shrink: 0 !important;
}
.flex-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-start {
justify-content: flex-start !important;
}
.justify-content-end {
justify-content: flex-end !important;
}
.justify-content-center {
justify-content: center !important;
}
.justify-content-between {
justify-content: space-between !important;
}
.justify-content-around {
justify-content: space-around !important;
}
.align-items-start {
align-items: flex-start !important;
}
.align-items-end {
align-items: flex-end !important;
}
.align-items-center {
align-items: center !important;
}
.align-items-baseline {
align-items: baseline !important;
}
.align-items-stretch {
align-items: stretch !important;
}
.align-content-start {
align-content: flex-start !important;
}
.align-content-end {
align-content: flex-end !important;
}
.align-content-center {
align-content: center !important;
}
.align-content-between {
align-content: space-between !important;
}
.align-content-around {
align-content: space-around !important;
}
.align-content-stretch {
align-content: stretch !important;
}
.align-self-auto {
align-self: auto !important;
}
.align-self-start {
align-self: flex-start !important;
}
.align-self-end {
align-self: flex-end !important;
}
.align-self-center {
align-self: center !important;
}
.align-self-baseline {
align-self: baseline !important;
}
.align-self-stretch {
align-self: stretch !important;
}
@media (min-width: 576px) {
.flex-sm-row {
flex-direction: row !important;
}
.flex-sm-column {
flex-direction: column !important;
}
.flex-sm-row-reverse {
flex-direction: row-reverse !important;
}
.flex-sm-column-reverse {
flex-direction: column-reverse !important;
}
.flex-sm-wrap {
flex-wrap: wrap !important;
}
.flex-sm-nowrap {
flex-wrap: nowrap !important;
}
.flex-sm-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-sm-fill {
flex: 1 1 auto !important;
}
.flex-sm-grow-0 {
flex-grow: 0 !important;
}
.flex-sm-grow-1 {
flex-grow: 1 !important;
}
.flex-sm-shrink-0 {
flex-shrink: 0 !important;
}
.flex-sm-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-sm-start {
justify-content: flex-start !important;
}
.justify-content-sm-end {
justify-content: flex-end !important;
}
.justify-content-sm-center {
justify-content: center !important;
}
.justify-content-sm-between {
justify-content: space-between !important;
}
.justify-content-sm-around {
justify-content: space-around !important;
}
.align-items-sm-start {
align-items: flex-start !important;
}
.align-items-sm-end {
align-items: flex-end !important;
}
.align-items-sm-center {
align-items: center !important;
}
.align-items-sm-baseline {
align-items: baseline !important;
}
.align-items-sm-stretch {
align-items: stretch !important;
}
.align-content-sm-start {
align-content: flex-start !important;
}
.align-content-sm-end {
align-content: flex-end !important;
}
.align-content-sm-center {
align-content: center !important;
}
.align-content-sm-between {
align-content: space-between !important;
}
.align-content-sm-around {
align-content: space-around !important;
}
.align-content-sm-stretch {
align-content: stretch !important;
}
.align-self-sm-auto {
align-self: auto !important;
}
.align-self-sm-start {
align-self: flex-start !important;
}
.align-self-sm-end {
align-self: flex-end !important;
}
.align-self-sm-center {
align-self: center !important;
}
.align-self-sm-baseline {
align-self: baseline !important;
}
.align-self-sm-stretch {
align-self: stretch !important;
}
}
@media (min-width: 768px) {
.flex-md-row {
flex-direction: row !important;
}
.flex-md-column {
flex-direction: column !important;
}
.flex-md-row-reverse {
flex-direction: row-reverse !important;
}
.flex-md-column-reverse {
flex-direction: column-reverse !important;
}
.flex-md-wrap {
flex-wrap: wrap !important;
}
.flex-md-nowrap {
flex-wrap: nowrap !important;
}
.flex-md-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-md-fill {
flex: 1 1 auto !important;
}
.flex-md-grow-0 {
flex-grow: 0 !important;
}
.flex-md-grow-1 {
flex-grow: 1 !important;
}
.flex-md-shrink-0 {
flex-shrink: 0 !important;
}
.flex-md-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-md-start {
justify-content: flex-start !important;
}
.justify-content-md-end {
justify-content: flex-end !important;
}
.justify-content-md-center {
justify-content: center !important;
}
.justify-content-md-between {
justify-content: space-between !important;
}
.justify-content-md-around {
justify-content: space-around !important;
}
.align-items-md-start {
align-items: flex-start !important;
}
.align-items-md-end {
align-items: flex-end !important;
}
.align-items-md-center {
align-items: center !important;
}
.align-items-md-baseline {
align-items: baseline !important;
}
.align-items-md-stretch {
align-items: stretch !important;
}
.align-content-md-start {
align-content: flex-start !important;
}
.align-content-md-end {
align-content: flex-end !important;
}
.align-content-md-center {
align-content: center !important;
}
.align-content-md-between {
align-content: space-between !important;
}
.align-content-md-around {
align-content: space-around !important;
}
.align-content-md-stretch {
align-content: stretch !important;
}
.align-self-md-auto {
align-self: auto !important;
}
.align-self-md-start {
align-self: flex-start !important;
}
.align-self-md-end {
align-self: flex-end !important;
}
.align-self-md-center {
align-self: center !important;
}
.align-self-md-baseline {
align-self: baseline !important;
}
.align-self-md-stretch {
align-self: stretch !important;
}
}
@media (min-width: 992px) {
.flex-lg-row {
flex-direction: row !important;
}
.flex-lg-column {
flex-direction: column !important;
}
.flex-lg-row-reverse {
flex-direction: row-reverse !important;
}
.flex-lg-column-reverse {
flex-direction: column-reverse !important;
}
.flex-lg-wrap {
flex-wrap: wrap !important;
}
.flex-lg-nowrap {
flex-wrap: nowrap !important;
}
.flex-lg-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-lg-fill {
flex: 1 1 auto !important;
}
.flex-lg-grow-0 {
flex-grow: 0 !important;
}
.flex-lg-grow-1 {
flex-grow: 1 !important;
}
.flex-lg-shrink-0 {
flex-shrink: 0 !important;
}
.flex-lg-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-lg-start {
justify-content: flex-start !important;
}
.justify-content-lg-end {
justify-content: flex-end !important;
}
.justify-content-lg-center {
justify-content: center !important;
}
.justify-content-lg-between {
justify-content: space-between !important;
}
.justify-content-lg-around {
justify-content: space-around !important;
}
.align-items-lg-start {
align-items: flex-start !important;
}
.align-items-lg-end {
align-items: flex-end !important;
}
.align-items-lg-center {
align-items: center !important;
}
.align-items-lg-baseline {
align-items: baseline !important;
}
.align-items-lg-stretch {
align-items: stretch !important;
}
.align-content-lg-start {
align-content: flex-start !important;
}
.align-content-lg-end {
align-content: flex-end !important;
}
.align-content-lg-center {
align-content: center !important;
}
.align-content-lg-between {
align-content: space-between !important;
}
.align-content-lg-around {
align-content: space-around !important;
}
.align-content-lg-stretch {
align-content: stretch !important;
}
.align-self-lg-auto {
align-self: auto !important;
}
.align-self-lg-start {
align-self: flex-start !important;
}
.align-self-lg-end {
align-self: flex-end !important;
}
.align-self-lg-center {
align-self: center !important;
}
.align-self-lg-baseline {
align-self: baseline !important;
}
.align-self-lg-stretch {
align-self: stretch !important;
}
}
@media (min-width: 1200px) {
.flex-xl-row {
flex-direction: row !important;
}
.flex-xl-column {
flex-direction: column !important;
}
.flex-xl-row-reverse {
flex-direction: row-reverse !important;
}
.flex-xl-column-reverse {
flex-direction: column-reverse !important;
}
.flex-xl-wrap {
flex-wrap: wrap !important;
}
.flex-xl-nowrap {
flex-wrap: nowrap !important;
}
.flex-xl-wrap-reverse {
flex-wrap: wrap-reverse !important;
}
.flex-xl-fill {
flex: 1 1 auto !important;
}
.flex-xl-grow-0 {
flex-grow: 0 !important;
}
.flex-xl-grow-1 {
flex-grow: 1 !important;
}
.flex-xl-shrink-0 {
flex-shrink: 0 !important;
}
.flex-xl-shrink-1 {
flex-shrink: 1 !important;
}
.justify-content-xl-start {
justify-content: flex-start !important;
}
.justify-content-xl-end {
justify-content: flex-end !important;
}
.justify-content-xl-center {
justify-content: center !important;
}
.justify-content-xl-between {
justify-content: space-between !important;
}
.justify-content-xl-around {
justify-content: space-around !important;
}
.align-items-xl-start {
align-items: flex-start !important;
}
.align-items-xl-end {
align-items: flex-end !important;
}
.align-items-xl-center {
align-items: center !important;
}
.align-items-xl-baseline {
align-items: baseline !important;
}
.align-items-xl-stretch {
align-items: stretch !important;
}
.align-content-xl-start {
align-content: flex-start !important;
}
.align-content-xl-end {
align-content: flex-end !important;
}
.align-content-xl-center {
align-content: center !important;
}
.align-content-xl-between {
align-content: space-between !important;
}
.align-content-xl-around {
align-content: space-around !important;
}
.align-content-xl-stretch {
align-content: stretch !important;
}
.align-self-xl-auto {
align-self: auto !important;
}
.align-self-xl-start {
align-self: flex-start !important;
}
.align-self-xl-end {
align-self: flex-end !important;
}
.align-self-xl-center {
align-self: center !important;
}
.align-self-xl-baseline {
align-self: baseline !important;
}
.align-self-xl-stretch {
align-self: stretch !important;
}
}
.m-0 {
margin: 0 !important;
}
.mt-0,
.my-0 {
margin-top: 0 !important;
}
.mr-0,
.mx-0 {
margin-right: 0 !important;
}
.mb-0,
.my-0 {
margin-bottom: 0 !important;
}
.ml-0,
.mx-0 {
margin-left: 0 !important;
}
.m-1 {
margin: 0.3125rem !important;
}
.mt-1,
.my-1 {
margin-top: 0.3125rem !important;
}
.mr-1,
.mx-1 {
margin-right: 0.3125rem !important;
}
.mb-1,
.my-1 {
margin-bottom: 0.3125rem !important;
}
.ml-1,
.mx-1 {
margin-left: 0.3125rem !important;
}
.m-2 {
margin: 0.625rem !important;
}
.mt-2,
.my-2 {
margin-top: 0.625rem !important;
}
.mr-2,
.mx-2 {
margin-right: 0.625rem !important;
}
.mb-2,
.my-2 {
margin-bottom: 0.625rem !important;
}
.ml-2,
.mx-2 {
margin-left: 0.625rem !important;
}
.m-3 {
margin: 0.9375rem !important;
}
.mt-3,
.my-3 {
margin-top: 0.9375rem !important;
}
.mr-3,
.mx-3 {
margin-right: 0.9375rem !important;
}
.mb-3,
.my-3 {
margin-bottom: 0.9375rem !important;
}
.ml-3,
.mx-3 {
margin-left: 0.9375rem !important;
}
.m-4 {
margin: 1.875rem !important;
}
.mt-4,
.my-4 {
margin-top: 1.875rem !important;
}
.mr-4,
.mx-4 {
margin-right: 1.875rem !important;
}
.mb-4,
.my-4 {
margin-bottom: 1.875rem !important;
}
.ml-4,
.mx-4 {
margin-left: 1.875rem !important;
}
.m-5 {
margin: 2.8125rem !important;
}
.mt-5,
.my-5 {
margin-top: 2.8125rem !important;
}
.mr-5,
.mx-5 {
margin-right: 2.8125rem !important;
}
.mb-5,
.my-5 {
margin-bottom: 2.8125rem !important;
}
.ml-5,
.mx-5 {
margin-left: 2.8125rem !important;
}
.p-0 {
padding: 0 !important;
}
.pt-0,
.py-0 {
padding-top: 0 !important;
}
.pr-0,
.px-0 {
padding-right: 0 !important;
}
.pb-0,
.py-0 {
padding-bottom: 0 !important;
}
.pl-0,
.px-0 {
padding-left: 0 !important;
}
.p-1 {
padding: 0.3125rem !important;
}
.pt-1,
.py-1 {
padding-top: 0.3125rem !important;
}
.pr-1,
.px-1 {
padding-right: 0.3125rem !important;
}
.pb-1,
.py-1 {
padding-bottom: 0.3125rem !important;
}
.pl-1,
.px-1 {
padding-left: 0.3125rem !important;
}
.p-2 {
padding: 0.625rem !important;
}
.pt-2,
.py-2 {
padding-top: 0.625rem !important;
}
.pr-2,
.px-2 {
padding-right: 0.625rem !important;
}
.pb-2,
.py-2 {
padding-bottom: 0.625rem !important;
}
.pl-2,
.px-2 {
padding-left: 0.625rem !important;
}
.p-3 {
padding: 0.9375rem !important;
}
.pt-3,
.py-3 {
padding-top: 0.9375rem !important;
}
.pr-3,
.px-3 {
padding-right: 0.9375rem !important;
}
.pb-3,
.py-3 {
padding-bottom: 0.9375rem !important;
}
.pl-3,
.px-3 {
padding-left: 0.9375rem !important;
}
.p-4 {
padding: 1.875rem !important;
}
.pt-4,
.py-4 {
padding-top: 1.875rem !important;
}
.pr-4,
.px-4 {
padding-right: 1.875rem !important;
}
.pb-4,
.py-4 {
padding-bottom: 1.875rem !important;
}
.pl-4,
.px-4 {
padding-left: 1.875rem !important;
}
.p-5 {
padding: 2.8125rem !important;
}
.pt-5,
.py-5 {
padding-top: 2.8125rem !important;
}
.pr-5,
.px-5 {
padding-right: 2.8125rem !important;
}
.pb-5,
.py-5 {
padding-bottom: 2.8125rem !important;
}
.pl-5,
.px-5 {
padding-left: 2.8125rem !important;
}
.m-n1 {
margin: -0.3125rem !important;
}
.mt-n1,
.my-n1 {
margin-top: -0.3125rem !important;
}
.mr-n1,
.mx-n1 {
margin-right: -0.3125rem !important;
}
.mb-n1,
.my-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-n1,
.mx-n1 {
margin-left: -0.3125rem !important;
}
.m-n2 {
margin: -0.625rem !important;
}
.mt-n2,
.my-n2 {
margin-top: -0.625rem !important;
}
.mr-n2,
.mx-n2 {
margin-right: -0.625rem !important;
}
.mb-n2,
.my-n2 {
margin-bottom: -0.625rem !important;
}
.ml-n2,
.mx-n2 {
margin-left: -0.625rem !important;
}
.m-n3 {
margin: -0.9375rem !important;
}
.mt-n3,
.my-n3 {
margin-top: -0.9375rem !important;
}
.mr-n3,
.mx-n3 {
margin-right: -0.9375rem !important;
}
.mb-n3,
.my-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-n3,
.mx-n3 {
margin-left: -0.9375rem !important;
}
.m-n4 {
margin: -1.875rem !important;
}
.mt-n4,
.my-n4 {
margin-top: -1.875rem !important;
}
.mr-n4,
.mx-n4 {
margin-right: -1.875rem !important;
}
.mb-n4,
.my-n4 {
margin-bottom: -1.875rem !important;
}
.ml-n4,
.mx-n4 {
margin-left: -1.875rem !important;
}
.m-n5 {
margin: -2.8125rem !important;
}
.mt-n5,
.my-n5 {
margin-top: -2.8125rem !important;
}
.mr-n5,
.mx-n5 {
margin-right: -2.8125rem !important;
}
.mb-n5,
.my-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-n5,
.mx-n5 {
margin-left: -2.8125rem !important;
}
.m-auto {
margin: auto !important;
}
.mt-auto,
.my-auto {
margin-top: auto !important;
}
.mr-auto,
.mx-auto {
margin-right: auto !important;
}
.mb-auto,
.my-auto {
margin-bottom: auto !important;
}
.ml-auto,
.mx-auto {
margin-left: auto !important;
}
@media (min-width: 576px) {
.m-sm-0 {
margin: 0 !important;
}
.mt-sm-0,
.my-sm-0 {
margin-top: 0 !important;
}
.mr-sm-0,
.mx-sm-0 {
margin-right: 0 !important;
}
.mb-sm-0,
.my-sm-0 {
margin-bottom: 0 !important;
}
.ml-sm-0,
.mx-sm-0 {
margin-left: 0 !important;
}
.m-sm-1 {
margin: 0.3125rem !important;
}
.mt-sm-1,
.my-sm-1 {
margin-top: 0.3125rem !important;
}
.mr-sm-1,
.mx-sm-1 {
margin-right: 0.3125rem !important;
}
.mb-sm-1,
.my-sm-1 {
margin-bottom: 0.3125rem !important;
}
.ml-sm-1,
.mx-sm-1 {
margin-left: 0.3125rem !important;
}
.m-sm-2 {
margin: 0.625rem !important;
}
.mt-sm-2,
.my-sm-2 {
margin-top: 0.625rem !important;
}
.mr-sm-2,
.mx-sm-2 {
margin-right: 0.625rem !important;
}
.mb-sm-2,
.my-sm-2 {
margin-bottom: 0.625rem !important;
}
.ml-sm-2,
.mx-sm-2 {
margin-left: 0.625rem !important;
}
.m-sm-3 {
margin: 0.9375rem !important;
}
.mt-sm-3,
.my-sm-3 {
margin-top: 0.9375rem !important;
}
.mr-sm-3,
.mx-sm-3 {
margin-right: 0.9375rem !important;
}
.mb-sm-3,
.my-sm-3 {
margin-bottom: 0.9375rem !important;
}
.ml-sm-3,
.mx-sm-3 {
margin-left: 0.9375rem !important;
}
.m-sm-4 {
margin: 1.875rem !important;
}
.mt-sm-4,
.my-sm-4 {
margin-top: 1.875rem !important;
}
.mr-sm-4,
.mx-sm-4 {
margin-right: 1.875rem !important;
}
.mb-sm-4,
.my-sm-4 {
margin-bottom: 1.875rem !important;
}
.ml-sm-4,
.mx-sm-4 {
margin-left: 1.875rem !important;
}
.m-sm-5 {
margin: 2.8125rem !important;
}
.mt-sm-5,
.my-sm-5 {
margin-top: 2.8125rem !important;
}
.mr-sm-5,
.mx-sm-5 {
margin-right: 2.8125rem !important;
}
.mb-sm-5,
.my-sm-5 {
margin-bottom: 2.8125rem !important;
}
.ml-sm-5,
.mx-sm-5 {
margin-left: 2.8125rem !important;
}
.p-sm-0 {
padding: 0 !important;
}
.pt-sm-0,
.py-sm-0 {
padding-top: 0 !important;
}
.pr-sm-0,
.px-sm-0 {
padding-right: 0 !important;
}
.pb-sm-0,
.py-sm-0 {
padding-bottom: 0 !important;
}
.pl-sm-0,
.px-sm-0 {
padding-left: 0 !important;
}
.p-sm-1 {
padding: 0.3125rem !important;
}
.pt-sm-1,
.py-sm-1 {
padding-top: 0.3125rem !important;
}
.pr-sm-1,
.px-sm-1 {
padding-right: 0.3125rem !important;
}
.pb-sm-1,
.py-sm-1 {
padding-bottom: 0.3125rem !important;
}
.pl-sm-1,
.px-sm-1 {
padding-left: 0.3125rem !important;
}
.p-sm-2 {
padding: 0.625rem !important;
}
.pt-sm-2,
.py-sm-2 {
padding-top: 0.625rem !important;
}
.pr-sm-2,
.px-sm-2 {
padding-right: 0.625rem !important;
}
.pb-sm-2,
.py-sm-2 {
padding-bottom: 0.625rem !important;
}
.pl-sm-2,
.px-sm-2 {
padding-left: 0.625rem !important;
}
.p-sm-3 {
padding: 0.9375rem !important;
}
.pt-sm-3,
.py-sm-3 {
padding-top: 0.9375rem !important;
}
.pr-sm-3,
.px-sm-3 {
padding-right: 0.9375rem !important;
}
.pb-sm-3,
.py-sm-3 {
padding-bottom: 0.9375rem !important;
}
.pl-sm-3,
.px-sm-3 {
padding-left: 0.9375rem !important;
}
.p-sm-4 {
padding: 1.875rem !important;
}
.pt-sm-4,
.py-sm-4 {
padding-top: 1.875rem !important;
}
.pr-sm-4,
.px-sm-4 {
padding-right: 1.875rem !important;
}
.pb-sm-4,
.py-sm-4 {
padding-bottom: 1.875rem !important;
}
.pl-sm-4,
.px-sm-4 {
padding-left: 1.875rem !important;
}
.p-sm-5 {
padding: 2.8125rem !important;
}
.pt-sm-5,
.py-sm-5 {
padding-top: 2.8125rem !important;
}
.pr-sm-5,
.px-sm-5 {
padding-right: 2.8125rem !important;
}
.pb-sm-5,
.py-sm-5 {
padding-bottom: 2.8125rem !important;
}
.pl-sm-5,
.px-sm-5 {
padding-left: 2.8125rem !important;
}
.m-sm-n1 {
margin: -0.3125rem !important;
}
.mt-sm-n1,
.my-sm-n1 {
margin-top: -0.3125rem !important;
}
.mr-sm-n1,
.mx-sm-n1 {
margin-right: -0.3125rem !important;
}
.mb-sm-n1,
.my-sm-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-sm-n1,
.mx-sm-n1 {
margin-left: -0.3125rem !important;
}
.m-sm-n2 {
margin: -0.625rem !important;
}
.mt-sm-n2,
.my-sm-n2 {
margin-top: -0.625rem !important;
}
.mr-sm-n2,
.mx-sm-n2 {
margin-right: -0.625rem !important;
}
.mb-sm-n2,
.my-sm-n2 {
margin-bottom: -0.625rem !important;
}
.ml-sm-n2,
.mx-sm-n2 {
margin-left: -0.625rem !important;
}
.m-sm-n3 {
margin: -0.9375rem !important;
}
.mt-sm-n3,
.my-sm-n3 {
margin-top: -0.9375rem !important;
}
.mr-sm-n3,
.mx-sm-n3 {
margin-right: -0.9375rem !important;
}
.mb-sm-n3,
.my-sm-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-sm-n3,
.mx-sm-n3 {
margin-left: -0.9375rem !important;
}
.m-sm-n4 {
margin: -1.875rem !important;
}
.mt-sm-n4,
.my-sm-n4 {
margin-top: -1.875rem !important;
}
.mr-sm-n4,
.mx-sm-n4 {
margin-right: -1.875rem !important;
}
.mb-sm-n4,
.my-sm-n4 {
margin-bottom: -1.875rem !important;
}
.ml-sm-n4,
.mx-sm-n4 {
margin-left: -1.875rem !important;
}
.m-sm-n5 {
margin: -2.8125rem !important;
}
.mt-sm-n5,
.my-sm-n5 {
margin-top: -2.8125rem !important;
}
.mr-sm-n5,
.mx-sm-n5 {
margin-right: -2.8125rem !important;
}
.mb-sm-n5,
.my-sm-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-sm-n5,
.mx-sm-n5 {
margin-left: -2.8125rem !important;
}
.m-sm-auto {
margin: auto !important;
}
.mt-sm-auto,
.my-sm-auto {
margin-top: auto !important;
}
.mr-sm-auto,
.mx-sm-auto {
margin-right: auto !important;
}
.mb-sm-auto,
.my-sm-auto {
margin-bottom: auto !important;
}
.ml-sm-auto,
.mx-sm-auto {
margin-left: auto !important;
}
}
@media (min-width: 768px) {
.m-md-0 {
margin: 0 !important;
}
.mt-md-0,
.my-md-0 {
margin-top: 0 !important;
}
.mr-md-0,
.mx-md-0 {
margin-right: 0 !important;
}
.mb-md-0,
.my-md-0 {
margin-bottom: 0 !important;
}
.ml-md-0,
.mx-md-0 {
margin-left: 0 !important;
}
.m-md-1 {
margin: 0.3125rem !important;
}
.mt-md-1,
.my-md-1 {
margin-top: 0.3125rem !important;
}
.mr-md-1,
.mx-md-1 {
margin-right: 0.3125rem !important;
}
.mb-md-1,
.my-md-1 {
margin-bottom: 0.3125rem !important;
}
.ml-md-1,
.mx-md-1 {
margin-left: 0.3125rem !important;
}
.m-md-2 {
margin: 0.625rem !important;
}
.mt-md-2,
.my-md-2 {
margin-top: 0.625rem !important;
}
.mr-md-2,
.mx-md-2 {
margin-right: 0.625rem !important;
}
.mb-md-2,
.my-md-2 {
margin-bottom: 0.625rem !important;
}
.ml-md-2,
.mx-md-2 {
margin-left: 0.625rem !important;
}
.m-md-3 {
margin: 0.9375rem !important;
}
.mt-md-3,
.my-md-3 {
margin-top: 0.9375rem !important;
}
.mr-md-3,
.mx-md-3 {
margin-right: 0.9375rem !important;
}
.mb-md-3,
.my-md-3 {
margin-bottom: 0.9375rem !important;
}
.ml-md-3,
.mx-md-3 {
margin-left: 0.9375rem !important;
}
.m-md-4 {
margin: 1.875rem !important;
}
.mt-md-4,
.my-md-4 {
margin-top: 1.875rem !important;
}
.mr-md-4,
.mx-md-4 {
margin-right: 1.875rem !important;
}
.mb-md-4,
.my-md-4 {
margin-bottom: 1.875rem !important;
}
.ml-md-4,
.mx-md-4 {
margin-left: 1.875rem !important;
}
.m-md-5 {
margin: 2.8125rem !important;
}
.mt-md-5,
.my-md-5 {
margin-top: 2.8125rem !important;
}
.mr-md-5,
.mx-md-5 {
margin-right: 2.8125rem !important;
}
.mb-md-5,
.my-md-5 {
margin-bottom: 2.8125rem !important;
}
.ml-md-5,
.mx-md-5 {
margin-left: 2.8125rem !important;
}
.p-md-0 {
padding: 0 !important;
}
.pt-md-0,
.py-md-0 {
padding-top: 0 !important;
}
.pr-md-0,
.px-md-0 {
padding-right: 0 !important;
}
.pb-md-0,
.py-md-0 {
padding-bottom: 0 !important;
}
.pl-md-0,
.px-md-0 {
padding-left: 0 !important;
}
.p-md-1 {
padding: 0.3125rem !important;
}
.pt-md-1,
.py-md-1 {
padding-top: 0.3125rem !important;
}
.pr-md-1,
.px-md-1 {
padding-right: 0.3125rem !important;
}
.pb-md-1,
.py-md-1 {
padding-bottom: 0.3125rem !important;
}
.pl-md-1,
.px-md-1 {
padding-left: 0.3125rem !important;
}
.p-md-2 {
padding: 0.625rem !important;
}
.pt-md-2,
.py-md-2 {
padding-top: 0.625rem !important;
}
.pr-md-2,
.px-md-2 {
padding-right: 0.625rem !important;
}
.pb-md-2,
.py-md-2 {
padding-bottom: 0.625rem !important;
}
.pl-md-2,
.px-md-2 {
padding-left: 0.625rem !important;
}
.p-md-3 {
padding: 0.9375rem !important;
}
.pt-md-3,
.py-md-3 {
padding-top: 0.9375rem !important;
}
.pr-md-3,
.px-md-3 {
padding-right: 0.9375rem !important;
}
.pb-md-3,
.py-md-3 {
padding-bottom: 0.9375rem !important;
}
.pl-md-3,
.px-md-3 {
padding-left: 0.9375rem !important;
}
.p-md-4 {
padding: 1.875rem !important;
}
.pt-md-4,
.py-md-4 {
padding-top: 1.875rem !important;
}
.pr-md-4,
.px-md-4 {
padding-right: 1.875rem !important;
}
.pb-md-4,
.py-md-4 {
padding-bottom: 1.875rem !important;
}
.pl-md-4,
.px-md-4 {
padding-left: 1.875rem !important;
}
.p-md-5 {
padding: 2.8125rem !important;
}
.pt-md-5,
.py-md-5 {
padding-top: 2.8125rem !important;
}
.pr-md-5,
.px-md-5 {
padding-right: 2.8125rem !important;
}
.pb-md-5,
.py-md-5 {
padding-bottom: 2.8125rem !important;
}
.pl-md-5,
.px-md-5 {
padding-left: 2.8125rem !important;
}
.m-md-n1 {
margin: -0.3125rem !important;
}
.mt-md-n1,
.my-md-n1 {
margin-top: -0.3125rem !important;
}
.mr-md-n1,
.mx-md-n1 {
margin-right: -0.3125rem !important;
}
.mb-md-n1,
.my-md-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-md-n1,
.mx-md-n1 {
margin-left: -0.3125rem !important;
}
.m-md-n2 {
margin: -0.625rem !important;
}
.mt-md-n2,
.my-md-n2 {
margin-top: -0.625rem !important;
}
.mr-md-n2,
.mx-md-n2 {
margin-right: -0.625rem !important;
}
.mb-md-n2,
.my-md-n2 {
margin-bottom: -0.625rem !important;
}
.ml-md-n2,
.mx-md-n2 {
margin-left: -0.625rem !important;
}
.m-md-n3 {
margin: -0.9375rem !important;
}
.mt-md-n3,
.my-md-n3 {
margin-top: -0.9375rem !important;
}
.mr-md-n3,
.mx-md-n3 {
margin-right: -0.9375rem !important;
}
.mb-md-n3,
.my-md-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-md-n3,
.mx-md-n3 {
margin-left: -0.9375rem !important;
}
.m-md-n4 {
margin: -1.875rem !important;
}
.mt-md-n4,
.my-md-n4 {
margin-top: -1.875rem !important;
}
.mr-md-n4,
.mx-md-n4 {
margin-right: -1.875rem !important;
}
.mb-md-n4,
.my-md-n4 {
margin-bottom: -1.875rem !important;
}
.ml-md-n4,
.mx-md-n4 {
margin-left: -1.875rem !important;
}
.m-md-n5 {
margin: -2.8125rem !important;
}
.mt-md-n5,
.my-md-n5 {
margin-top: -2.8125rem !important;
}
.mr-md-n5,
.mx-md-n5 {
margin-right: -2.8125rem !important;
}
.mb-md-n5,
.my-md-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-md-n5,
.mx-md-n5 {
margin-left: -2.8125rem !important;
}
.m-md-auto {
margin: auto !important;
}
.mt-md-auto,
.my-md-auto {
margin-top: auto !important;
}
.mr-md-auto,
.mx-md-auto {
margin-right: auto !important;
}
.mb-md-auto,
.my-md-auto {
margin-bottom: auto !important;
}
.ml-md-auto,
.mx-md-auto {
margin-left: auto !important;
}
}
@media (min-width: 992px) {
.m-lg-0 {
margin: 0 !important;
}
.mt-lg-0,
.my-lg-0 {
margin-top: 0 !important;
}
.mr-lg-0,
.mx-lg-0 {
margin-right: 0 !important;
}
.mb-lg-0,
.my-lg-0 {
margin-bottom: 0 !important;
}
.ml-lg-0,
.mx-lg-0 {
margin-left: 0 !important;
}
.m-lg-1 {
margin: 0.3125rem !important;
}
.mt-lg-1,
.my-lg-1 {
margin-top: 0.3125rem !important;
}
.mr-lg-1,
.mx-lg-1 {
margin-right: 0.3125rem !important;
}
.mb-lg-1,
.my-lg-1 {
margin-bottom: 0.3125rem !important;
}
.ml-lg-1,
.mx-lg-1 {
margin-left: 0.3125rem !important;
}
.m-lg-2 {
margin: 0.625rem !important;
}
.mt-lg-2,
.my-lg-2 {
margin-top: 0.625rem !important;
}
.mr-lg-2,
.mx-lg-2 {
margin-right: 0.625rem !important;
}
.mb-lg-2,
.my-lg-2 {
margin-bottom: 0.625rem !important;
}
.ml-lg-2,
.mx-lg-2 {
margin-left: 0.625rem !important;
}
.m-lg-3 {
margin: 0.9375rem !important;
}
.mt-lg-3,
.my-lg-3 {
margin-top: 0.9375rem !important;
}
.mr-lg-3,
.mx-lg-3 {
margin-right: 0.9375rem !important;
}
.mb-lg-3,
.my-lg-3 {
margin-bottom: 0.9375rem !important;
}
.ml-lg-3,
.mx-lg-3 {
margin-left: 0.9375rem !important;
}
.m-lg-4 {
margin: 1.875rem !important;
}
.mt-lg-4,
.my-lg-4 {
margin-top: 1.875rem !important;
}
.mr-lg-4,
.mx-lg-4 {
margin-right: 1.875rem !important;
}
.mb-lg-4,
.my-lg-4 {
margin-bottom: 1.875rem !important;
}
.ml-lg-4,
.mx-lg-4 {
margin-left: 1.875rem !important;
}
.m-lg-5 {
margin: 2.8125rem !important;
}
.mt-lg-5,
.my-lg-5 {
margin-top: 2.8125rem !important;
}
.mr-lg-5,
.mx-lg-5 {
margin-right: 2.8125rem !important;
}
.mb-lg-5,
.my-lg-5 {
margin-bottom: 2.8125rem !important;
}
.ml-lg-5,
.mx-lg-5 {
margin-left: 2.8125rem !important;
}
.p-lg-0 {
padding: 0 !important;
}
.pt-lg-0,
.py-lg-0 {
padding-top: 0 !important;
}
.pr-lg-0,
.px-lg-0 {
padding-right: 0 !important;
}
.pb-lg-0,
.py-lg-0 {
padding-bottom: 0 !important;
}
.pl-lg-0,
.px-lg-0 {
padding-left: 0 !important;
}
.p-lg-1 {
padding: 0.3125rem !important;
}
.pt-lg-1,
.py-lg-1 {
padding-top: 0.3125rem !important;
}
.pr-lg-1,
.px-lg-1 {
padding-right: 0.3125rem !important;
}
.pb-lg-1,
.py-lg-1 {
padding-bottom: 0.3125rem !important;
}
.pl-lg-1,
.px-lg-1 {
padding-left: 0.3125rem !important;
}
.p-lg-2 {
padding: 0.625rem !important;
}
.pt-lg-2,
.py-lg-2 {
padding-top: 0.625rem !important;
}
.pr-lg-2,
.px-lg-2 {
padding-right: 0.625rem !important;
}
.pb-lg-2,
.py-lg-2 {
padding-bottom: 0.625rem !important;
}
.pl-lg-2,
.px-lg-2 {
padding-left: 0.625rem !important;
}
.p-lg-3 {
padding: 0.9375rem !important;
}
.pt-lg-3,
.py-lg-3 {
padding-top: 0.9375rem !important;
}
.pr-lg-3,
.px-lg-3 {
padding-right: 0.9375rem !important;
}
.pb-lg-3,
.py-lg-3 {
padding-bottom: 0.9375rem !important;
}
.pl-lg-3,
.px-lg-3 {
padding-left: 0.9375rem !important;
}
.p-lg-4 {
padding: 1.875rem !important;
}
.pt-lg-4,
.py-lg-4 {
padding-top: 1.875rem !important;
}
.pr-lg-4,
.px-lg-4 {
padding-right: 1.875rem !important;
}
.pb-lg-4,
.py-lg-4 {
padding-bottom: 1.875rem !important;
}
.pl-lg-4,
.px-lg-4 {
padding-left: 1.875rem !important;
}
.p-lg-5 {
padding: 2.8125rem !important;
}
.pt-lg-5,
.py-lg-5 {
padding-top: 2.8125rem !important;
}
.pr-lg-5,
.px-lg-5 {
padding-right: 2.8125rem !important;
}
.pb-lg-5,
.py-lg-5 {
padding-bottom: 2.8125rem !important;
}
.pl-lg-5,
.px-lg-5 {
padding-left: 2.8125rem !important;
}
.m-lg-n1 {
margin: -0.3125rem !important;
}
.mt-lg-n1,
.my-lg-n1 {
margin-top: -0.3125rem !important;
}
.mr-lg-n1,
.mx-lg-n1 {
margin-right: -0.3125rem !important;
}
.mb-lg-n1,
.my-lg-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-lg-n1,
.mx-lg-n1 {
margin-left: -0.3125rem !important;
}
.m-lg-n2 {
margin: -0.625rem !important;
}
.mt-lg-n2,
.my-lg-n2 {
margin-top: -0.625rem !important;
}
.mr-lg-n2,
.mx-lg-n2 {
margin-right: -0.625rem !important;
}
.mb-lg-n2,
.my-lg-n2 {
margin-bottom: -0.625rem !important;
}
.ml-lg-n2,
.mx-lg-n2 {
margin-left: -0.625rem !important;
}
.m-lg-n3 {
margin: -0.9375rem !important;
}
.mt-lg-n3,
.my-lg-n3 {
margin-top: -0.9375rem !important;
}
.mr-lg-n3,
.mx-lg-n3 {
margin-right: -0.9375rem !important;
}
.mb-lg-n3,
.my-lg-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-lg-n3,
.mx-lg-n3 {
margin-left: -0.9375rem !important;
}
.m-lg-n4 {
margin: -1.875rem !important;
}
.mt-lg-n4,
.my-lg-n4 {
margin-top: -1.875rem !important;
}
.mr-lg-n4,
.mx-lg-n4 {
margin-right: -1.875rem !important;
}
.mb-lg-n4,
.my-lg-n4 {
margin-bottom: -1.875rem !important;
}
.ml-lg-n4,
.mx-lg-n4 {
margin-left: -1.875rem !important;
}
.m-lg-n5 {
margin: -2.8125rem !important;
}
.mt-lg-n5,
.my-lg-n5 {
margin-top: -2.8125rem !important;
}
.mr-lg-n5,
.mx-lg-n5 {
margin-right: -2.8125rem !important;
}
.mb-lg-n5,
.my-lg-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-lg-n5,
.mx-lg-n5 {
margin-left: -2.8125rem !important;
}
.m-lg-auto {
margin: auto !important;
}
.mt-lg-auto,
.my-lg-auto {
margin-top: auto !important;
}
.mr-lg-auto,
.mx-lg-auto {
margin-right: auto !important;
}
.mb-lg-auto,
.my-lg-auto {
margin-bottom: auto !important;
}
.ml-lg-auto,
.mx-lg-auto {
margin-left: auto !important;
}
}
@media (min-width: 1200px) {
.m-xl-0 {
margin: 0 !important;
}
.mt-xl-0,
.my-xl-0 {
margin-top: 0 !important;
}
.mr-xl-0,
.mx-xl-0 {
margin-right: 0 !important;
}
.mb-xl-0,
.my-xl-0 {
margin-bottom: 0 !important;
}
.ml-xl-0,
.mx-xl-0 {
margin-left: 0 !important;
}
.m-xl-1 {
margin: 0.3125rem !important;
}
.mt-xl-1,
.my-xl-1 {
margin-top: 0.3125rem !important;
}
.mr-xl-1,
.mx-xl-1 {
margin-right: 0.3125rem !important;
}
.mb-xl-1,
.my-xl-1 {
margin-bottom: 0.3125rem !important;
}
.ml-xl-1,
.mx-xl-1 {
margin-left: 0.3125rem !important;
}
.m-xl-2 {
margin: 0.625rem !important;
}
.mt-xl-2,
.my-xl-2 {
margin-top: 0.625rem !important;
}
.mr-xl-2,
.mx-xl-2 {
margin-right: 0.625rem !important;
}
.mb-xl-2,
.my-xl-2 {
margin-bottom: 0.625rem !important;
}
.ml-xl-2,
.mx-xl-2 {
margin-left: 0.625rem !important;
}
.m-xl-3 {
margin: 0.9375rem !important;
}
.mt-xl-3,
.my-xl-3 {
margin-top: 0.9375rem !important;
}
.mr-xl-3,
.mx-xl-3 {
margin-right: 0.9375rem !important;
}
.mb-xl-3,
.my-xl-3 {
margin-bottom: 0.9375rem !important;
}
.ml-xl-3,
.mx-xl-3 {
margin-left: 0.9375rem !important;
}
.m-xl-4 {
margin: 1.875rem !important;
}
.mt-xl-4,
.my-xl-4 {
margin-top: 1.875rem !important;
}
.mr-xl-4,
.mx-xl-4 {
margin-right: 1.875rem !important;
}
.mb-xl-4,
.my-xl-4 {
margin-bottom: 1.875rem !important;
}
.ml-xl-4,
.mx-xl-4 {
margin-left: 1.875rem !important;
}
.m-xl-5 {
margin: 2.8125rem !important;
}
.mt-xl-5,
.my-xl-5 {
margin-top: 2.8125rem !important;
}
.mr-xl-5,
.mx-xl-5 {
margin-right: 2.8125rem !important;
}
.mb-xl-5,
.my-xl-5 {
margin-bottom: 2.8125rem !important;
}
.ml-xl-5,
.mx-xl-5 {
margin-left: 2.8125rem !important;
}
.p-xl-0 {
padding: 0 !important;
}
.pt-xl-0,
.py-xl-0 {
padding-top: 0 !important;
}
.pr-xl-0,
.px-xl-0 {
padding-right: 0 !important;
}
.pb-xl-0,
.py-xl-0 {
padding-bottom: 0 !important;
}
.pl-xl-0,
.px-xl-0 {
padding-left: 0 !important;
}
.p-xl-1 {
padding: 0.3125rem !important;
}
.pt-xl-1,
.py-xl-1 {
padding-top: 0.3125rem !important;
}
.pr-xl-1,
.px-xl-1 {
padding-right: 0.3125rem !important;
}
.pb-xl-1,
.py-xl-1 {
padding-bottom: 0.3125rem !important;
}
.pl-xl-1,
.px-xl-1 {
padding-left: 0.3125rem !important;
}
.p-xl-2 {
padding: 0.625rem !important;
}
.pt-xl-2,
.py-xl-2 {
padding-top: 0.625rem !important;
}
.pr-xl-2,
.px-xl-2 {
padding-right: 0.625rem !important;
}
.pb-xl-2,
.py-xl-2 {
padding-bottom: 0.625rem !important;
}
.pl-xl-2,
.px-xl-2 {
padding-left: 0.625rem !important;
}
.p-xl-3 {
padding: 0.9375rem !important;
}
.pt-xl-3,
.py-xl-3 {
padding-top: 0.9375rem !important;
}
.pr-xl-3,
.px-xl-3 {
padding-right: 0.9375rem !important;
}
.pb-xl-3,
.py-xl-3 {
padding-bottom: 0.9375rem !important;
}
.pl-xl-3,
.px-xl-3 {
padding-left: 0.9375rem !important;
}
.p-xl-4 {
padding: 1.875rem !important;
}
.pt-xl-4,
.py-xl-4 {
padding-top: 1.875rem !important;
}
.pr-xl-4,
.px-xl-4 {
padding-right: 1.875rem !important;
}
.pb-xl-4,
.py-xl-4 {
padding-bottom: 1.875rem !important;
}
.pl-xl-4,
.px-xl-4 {
padding-left: 1.875rem !important;
}
.p-xl-5 {
padding: 2.8125rem !important;
}
.pt-xl-5,
.py-xl-5 {
padding-top: 2.8125rem !important;
}
.pr-xl-5,
.px-xl-5 {
padding-right: 2.8125rem !important;
}
.pb-xl-5,
.py-xl-5 {
padding-bottom: 2.8125rem !important;
}
.pl-xl-5,
.px-xl-5 {
padding-left: 2.8125rem !important;
}
.m-xl-n1 {
margin: -0.3125rem !important;
}
.mt-xl-n1,
.my-xl-n1 {
margin-top: -0.3125rem !important;
}
.mr-xl-n1,
.mx-xl-n1 {
margin-right: -0.3125rem !important;
}
.mb-xl-n1,
.my-xl-n1 {
margin-bottom: -0.3125rem !important;
}
.ml-xl-n1,
.mx-xl-n1 {
margin-left: -0.3125rem !important;
}
.m-xl-n2 {
margin: -0.625rem !important;
}
.mt-xl-n2,
.my-xl-n2 {
margin-top: -0.625rem !important;
}
.mr-xl-n2,
.mx-xl-n2 {
margin-right: -0.625rem !important;
}
.mb-xl-n2,
.my-xl-n2 {
margin-bottom: -0.625rem !important;
}
.ml-xl-n2,
.mx-xl-n2 {
margin-left: -0.625rem !important;
}
.m-xl-n3 {
margin: -0.9375rem !important;
}
.mt-xl-n3,
.my-xl-n3 {
margin-top: -0.9375rem !important;
}
.mr-xl-n3,
.mx-xl-n3 {
margin-right: -0.9375rem !important;
}
.mb-xl-n3,
.my-xl-n3 {
margin-bottom: -0.9375rem !important;
}
.ml-xl-n3,
.mx-xl-n3 {
margin-left: -0.9375rem !important;
}
.m-xl-n4 {
margin: -1.875rem !important;
}
.mt-xl-n4,
.my-xl-n4 {
margin-top: -1.875rem !important;
}
.mr-xl-n4,
.mx-xl-n4 {
margin-right: -1.875rem !important;
}
.mb-xl-n4,
.my-xl-n4 {
margin-bottom: -1.875rem !important;
}
.ml-xl-n4,
.mx-xl-n4 {
margin-left: -1.875rem !important;
}
.m-xl-n5 {
margin: -2.8125rem !important;
}
.mt-xl-n5,
.my-xl-n5 {
margin-top: -2.8125rem !important;
}
.mr-xl-n5,
.mx-xl-n5 {
margin-right: -2.8125rem !important;
}
.mb-xl-n5,
.my-xl-n5 {
margin-bottom: -2.8125rem !important;
}
.ml-xl-n5,
.mx-xl-n5 {
margin-left: -2.8125rem !important;
}
.m-xl-auto {
margin: auto !important;
}
.mt-xl-auto,
.my-xl-auto {
margin-top: auto !important;
}
.mr-xl-auto,
.mx-xl-auto {
margin-right: auto !important;
}
.mb-xl-auto,
.my-xl-auto {
margin-bottom: auto !important;
}
.ml-xl-auto,
.mx-xl-auto {
margin-left: auto !important;
}
}
================================================
FILE: webserver/static/css/style.css
================================================
/*
1. Table of Contents
2. Typography
3. Structure
4. Page Logos
5. Highlight Colors
6. Header and Page Title
7. Footer Menu
8. Menu Structure & Design
9. General Utility Classes
10. Preloader
11. Buttons
12. Icons
13. Accordion
14. Offline Detection
15. Add to Home
16. Ads
17. Alerts
18. Notifications
19. Back to Top
20. Cards
21. Chips
22. Dividers
23. Switches
24. Radios & Checkboxes
25. Input Styles
26. Range Sliders
27. List Groups
28. Toasts
29. Snackbars
30. Pagination
31. Search
32. Tabs
33. Working Hours
34. Iframes
35. Page Calendar
36. Page Chat
37. Page Contact
38. Page Map
39. Page Media
40. Page Timeline
41. Page Interests
42. Page VCard
43. Dark Mode Settings
44. Demo Styles - Can be Removed
45. Lightbox Plugin
46. Owl Carousel
*/
/*Typography Settings*/
body {
font-size: 13px;
font-family: "Roboto", sans-serif !important;
line-height: 24px !important;
color: #727272 !important;
background-color: #f8fbfb;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 700;
color: #1f1f1f;
font-family: "Inter", sans-serif !important;
margin-bottom: 5px;
letter-spacing: -0.8px;
}
h1 {
font-size: 24px;
line-height: 30px;
padding-bottom: 5px;
}
h2 {
font-size: 21px;
line-height: 25px;
}
h3 {
font-size: 20px;
line-height: 24px;
}
h4 {
font-size: 18px;
line-height: 23px;
}
h5 {
font-size: 16px;
line-height: 22px;
}
a {
text-decoration: none !important;
}
p {
color: #727272;
margin-bottom: 30px;
padding-bottom: 0px;
}
.price-sup {
display: inline-block;
transform: translateY(-10px);
}
h1 .badge, h2 .badge, h3 .badge, h4 .badge, h5 .badge {
transform: translateY(-3px);
}
/*Page Stucture Settings*/
#page {
overflow-x: hidden;
position: relative;
}
.page-content {
position: relative;
transition: all 300ms ease;
z-index: 90;
padding-bottom: 80px;
padding-bottom: calc(80px + (constant(safe-area-inset-bottom))*1.1);
padding-bottom: calc(80px + (env(safe-area-inset-bottom))*1.1);
}
.page-content-bg {
z-index: 52;
position: fixed;
top: -1250px;
bottom: -1250px;
transform: translate3d(0, 0, 0);
left: -50px;
right: -50px;
}
.content-box {
background-color: #FFFFFF;
border-radius: 20px;
margin-left: 15px;
margin-right: 15px;
box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.08);
}
/*Content Boxes*/
.content {
margin: 20px 15px 20px 15px;
}
.content p:last-child {
margin-bottom: 0px;
}
.content-full {
margin: 0px;
}
.content-boxed {
padding: 20px 15px 0px 15px;
}
/*Logos*/
.header-logo {
background-size: 28px 28px;
width: 50px;
}
.footer .footer-logo {
background-size: 80px 80px;
height: 80px !important;
margin-bottom: 20px !important;
}
.theme-light .header .header-logo {
background-image: url(../images/preload-logo.png);
}
.theme-dark .header .header-logo {
background-image: url(../images/preload-logo.png);
}
.theme-light .footer .footer-logo {
background-image: url(../images/preload-logo.png);
}
.theme-dark .footer .footer-logo {
background-image: url(../images/preload-logo.png);
}
/* Generating Color Pack*/
.color-highlight {
color: #4A89DC !important;
}
.bg-highlight {
background-color: #4A89DC !important;
color: #FFF !important;
}
.border-highlight {
border-color: #4A89DC !important;
}
.gradient-highlight {
background-image: linear-gradient(to bottom, #5D9CEC, #4A89DC) !important;
}
.gradient-menu {
background-image: linear-gradient(130deg, #7ea5f6, #ff384c) !important;
}
.color-highlight-light {
color: #5D9CEC !important;
}
.bg-highlight-light {
background-color: #5D9CEC !important;
color: #FFF !important;
}
.bg-highlight-fade {
background-color: !important;
color: #FFF !important;
}
.color-highlight-dark {
color: #4A89DC !important;
}
.color-icon-highlight {
stroke: #4A89DC !important;
fill: !important;
}
.bg-highlight-dark {
background-color: #4A89DC !important;
color: #FFF !important;
}
.border-highlight-light {
border-color: #5D9CEC !important;
}
.border-highlight-dark {
border-color: #4A89DC !important;
}
.gradient-highlight {
background-image: linear-gradient(to bottom, #5D9CEC, #4A89DC);
}
.color-green-light {
color: #A0D468 !important;
}
.bg-green-light {
background-color: #A0D468 !important;
color: #FFF !important;
}
.bg-green-fade {
background-color: rgba(140, 193, 82, 0.7) !important;
color: #FFF !important;
}
.color-green-dark {
color: #8CC152 !important;
}
.color-icon-green {
stroke: #8CC152 !important;
fill: rgba(140, 193, 82, 0.3) !important;
}
.bg-green-dark {
background-color: #8CC152 !important;
color: #FFF !important;
}
.border-green-light {
border-color: #A0D468 !important;
}
.border-green-dark {
border-color: #8CC152 !important;
}
.gradient-green {
background-image: linear-gradient(to bottom, #A0D468, #8CC152);
}
.color-red-light {
color: #ED5565 !important;
}
.bg-red-light {
background-color: #ED5565 !important;
color: #FFF !important;
}
.bg-red-fade {
background-color: rgba(218, 68, 83, 0.7) !important;
color: #FFF !important;
}
.color-red-dark {
color: #DA4453 !important;
}
.color-icon-red {
stroke: #DA4453 !important;
fill: rgba(218, 68, 83, 0.3) !important;
}
.bg-red-dark {
background-color: #DA4453 !important;
color: #FFF !important;
}
.border-red-light {
border-color: #ED5565 !important;
}
.border-red-dark {
border-color: #DA4453 !important;
}
.gradient-red {
background-image: linear-gradient(to bottom, #ED5565, #DA4453);
}
.color-orange-light {
color: #FC6E51 !important;
}
.bg-orange-light {
background-color: #FC6E51 !important;
color: #FFF !important;
}
.bg-orange-fade {
background-color: rgba(233, 87, 63, 0.7) !important;
color: #FFF !important;
}
.color-orange-dark {
color: #E9573F !important;
}
.color-icon-orange {
stroke: #E9573F !important;
fill: rgba(233, 87, 63, 0.3) !important;
}
.bg-orange-dark {
background-color: #E9573F !important;
color: #FFF !important;
}
.border-orange-light {
border-color: #FC6E51 !important;
}
.border-orange-dark {
border-color: #E9573F !important;
}
.gradient-orange {
background-image: linear-gradient(to bottom, #FC6E51, #E9573F);
}
.color-yellow-light {
color: #FFCE54 !important;
}
.bg-yellow-light {
background-color: #FFCE54 !important;
color: #FFF !important;
}
.bg-yellow-fade {
background-color: rgba(246, 187, 66, 0.7) !important;
color: #FFF !important;
}
.color-yellow-dark {
color: #F6BB42 !important;
}
.color-icon-yellow {
stroke: #F6BB42 !important;
fill: rgba(246, 187, 66, 0.3) !important;
}
.bg-yellow-dark {
background-color: #F6BB42 !important;
color: #FFF !important;
}
.border-yellow-light {
border-color: #FFCE54 !important;
}
.border-yellow-dark {
border-color: #F6BB42 !important;
}
.gradient-yellow {
background-image: linear-gradient(to bottom, #FFCE54, #F6BB42);
}
.color-blue-light {
color: #5D9CEC !important;
}
.bg-blue-light {
background-color: #5D9CEC !important;
color: #FFF !important;
}
.bg-blue-fade {
background-color: rgba(74, 137, 220, 0.7) !important;
color: #FFF !important;
}
.color-blue-dark {
color: #4A89DC !important;
}
.color-icon-blue {
stroke: #4A89DC !important;
fill: rgba(74, 137, 220, 0.3) !important;
}
.bg-blue-dark {
background-color: #4A89DC !important;
color: #FFF !important;
}
.border-blue-light {
border-color: #5D9CEC !important;
}
.border-blue-dark {
border-color: #4A89DC !important;
}
.gradient-blue {
background-image: linear-gradient(to bottom, #5D9CEC, #4A89DC);
}
.color-teal-light {
color: #A0CECB !important;
}
.bg-teal-light {
background-color: #A0CECB !important;
color: #FFF !important;
}
.bg-teal-fade {
background-color: rgba(125, 177, 177, 0.7) !important;
color: #FFF !important;
}
.color-teal-dark {
color: #7DB1B1 !important;
}
.color-icon-teal {
stroke: #7DB1B1 !important;
fill: rgba(125, 177, 177, 0.3) !important;
}
.bg-teal-dark {
background-color: #7DB1B1 !important;
color: #FFF !important;
}
.border-teal-light {
border-color: #A0CECB !important;
}
.border-teal-dark {
border-color: #7DB1B1 !important;
}
.gradient-teal {
background-image: linear-gradient(to bottom, #A0CECB, #7DB1B1);
}
.color-mint-light {
color: #48CFAD !important;
}
.bg-mint-light {
background-color: #48CFAD !important;
color: #FFF !important;
}
.bg-mint-fade {
background-color: rgba(55, 188, 155, 0.7) !important;
color: #FFF !important;
}
.color-mint-dark {
color: #37BC9B !important;
}
.color-icon-mint {
stroke: #37BC9B !important;
fill: rgba(55, 188, 155, 0.3) !important;
}
.bg-mint-dark {
background-color: #37BC9B !important;
color: #FFF !important;
}
.border-mint-light {
border-color: #48CFAD !important;
}
.border-mint-dark {
border-color: #37BC9B !important;
}
.gradient-mint {
background-image: linear-gradient(to bottom, #48CFAD, #37BC9B);
}
.color-pink-light {
color: #EC87C0 !important;
}
.bg-pink-light {
background-color: #EC87C0 !important;
color: #FFF !important;
}
.bg-pink-fade {
background-color: rgba(215, 112, 173, 0.7) !important;
color: #FFF !important;
}
.color-pink-dark {
color: #D770AD !important;
}
.color-icon-pink {
stroke: #D770AD !important;
fill: rgba(215, 112, 173, 0.3) !important;
}
.bg-pink-dark {
background-color: #D770AD !important;
color: #FFF !important;
}
.border-pink-light {
border-color: #EC87C0 !important;
}
.border-pink-dark {
border-color: #D770AD !important;
}
.gradient-pink {
background-image: linear-gradient(to bottom, #EC87C0, #D770AD);
}
.color-magenta-light {
color: #AC92EC !important;
}
.bg-magenta-light {
background-color: #AC92EC !important;
color: #FFF !important;
}
.bg-magenta-fade {
background-color: rgba(150, 122, 220, 0.7) !important;
color: #FFF !important;
}
.color-magenta-dark {
color: #967ADC !important;
}
.color-icon-magenta {
stroke: #967ADC !important;
fill: rgba(150, 122, 220, 0.3) !important;
}
.bg-magenta-dark {
background-color: #967ADC !important;
color: #FFF !important;
}
.border-magenta-light {
border-color: #AC92EC !important;
}
.border-magenta-dark {
border-color: #967ADC !important;
}
.gradient-magenta {
background-image: linear-gradient(to bottom, #AC92EC, #967ADC);
}
.color-brown-light {
color: #BAA286 !important;
}
.bg-brown-light {
background-color: #BAA286 !important;
color: #FFF !important;
}
.bg-brown-fade {
background-color: rgba(170, 142, 105, 0.7) !important;
color: #FFF !important;
}
.color-brown-dark {
color: #AA8E69 !important;
}
.color-icon-brown {
stroke: #AA8E69 !important;
fill: rgba(170, 142, 105, 0.3) !important;
}
.bg-brown-dark {
background-color: #AA8E69 !important;
color: #FFF !important;
}
.border-brown-light {
border-color: #BAA286 !important;
}
.border-brown-dark {
border-color: #AA8E69 !important;
}
.gradient-brown {
background-image: linear-gradient(to bottom, #BAA286, #AA8E69);
}
.color-gray-light {
color: #e2e5ea !important;
}
.bg-gray-light {
background-color: #e2e5ea !important;
color: #FFF !important;
}
.bg-gray-fade {
background-color: rgba(170, 178, 189, 0.7) !important;
color: #FFF !important;
}
.color-gray-dark {
color: #AAB2BD !important;
}
.color-icon-gray {
stroke: #AAB2BD !important;
fill: rgba(170, 178, 189, 0.3) !important;
}
.bg-gray-dark {
background-color: #AAB2BD !important;
color: #FFF !important;
}
.border-gray-light {
border-color: #e2e5ea !important;
}
.border-gray-dark {
border-color: #AAB2BD !important;
}
.gradient-gray {
background-image: linear-gradient(to bottom, #e2e5ea, #AAB2BD);
}
.color-dark-light {
color: #656D78 !important;
}
.bg-dark-light {
background-color: #656D78 !important;
color: #FFF !important;
}
.bg-dark-fade {
background-color: rgba(67, 74, 84, 0.7) !important;
color: #FFF !important;
}
.color-dark-dark {
color: #434A54 !important;
}
.color-icon-dark {
stroke: #434A54 !important;
fill: rgba(67, 74, 84, 0.3) !important;
}
.bg-dark-dark {
background-color: #434A54 !important;
color: #FFF !important;
}
.border-dark-light {
border-color: #656D78 !important;
}
.border-dark-dark {
border-color: #434A54 !important;
}
.gradient-dark {
background-image: linear-gradient(to bottom, #656D78, #434A54);
}
.color-white-light {
color: #FFF !important;
}
.bg-white-light {
background-color: #FFF !important;
color: #FFF !important;
}
.bg-white-fade {
background-color: rgba(255, 255, 255, 0.7) !important;
color: #FFF !important;
}
.color-white-dark {
color: #FFF !important;
}
.color-icon-white {
stroke: #FFF !important;
fill: rgba(255, 255, 255, 0.3) !important;
}
.bg-white-dark {
background-color: #FFF !important;
color: #FFF !important;
}
.border-white-light {
border-color: #FFF !important;
}
.border-white-dark {
border-color: #FFF !important;
}
.gradient-white {
background-image: linear-gradient(to bottom, #FFF, #FFF);
}
/*Social Colors*/
.color-facebook {
color: #3b5998 !important;
}
.bg-facebook {
background-color: #3b5998 !important;
}
.color-linkedin {
color: #0077B5 !important;
}
.bg-linkedin {
background-color: #0077B5 !important;
}
.color-twitter {
color: #4099ff !important;
}
.bg-twitter {
background-color: #4099ff !important;
}
.color-google {
color: #d34836 !important;
}
.bg-google {
background-color: #d34836 !important;
}
.color-whatsapp {
color: #34AF23 !important;
}
.bg-whatsapp {
background-color: #34AF23 !important;
}
.color-pinterest {
color: #C92228 !important;
}
.bg-pinterest {
background-color: #C92228 !important;
}
.color-mail {
color: #3498db !important;
}
.bg-mail {
background-color: #3498db !important;
}
.color-phone {
color: #27ae60 !important;
}
.bg-phone {
background-color: #27ae60 !important;
}
.color-instagram {
color: #e1306c !important;
}
.bg-instagram {
background-color: #e1306c !important;
}
/*Default Colors*/
.color-white {
color: #FFF !important;
}
.color-black {
color: #000 !important;
}
.border-transparent {
border-color: transparent !important;
}
/*--Header---*/
.header-title span {
font-family: "Inter", sans-serif;
}
.footer-title span {
font-family: "Inter", sans-serif;
}
.header-logo {
color: rgba(0, 0, 0, 0) !important;
}
.header-logo span {
display: none;
display: none;
}
.header {
-webkit-backdrop-filter: saturate(180%) blur(20px);
backdrop-filter: saturate(180%) blur(20px);
background-color: rgba(255, 255, 255, 0.7);
position: fixed;
top: 0px;
left: 0px;
right: 0px;
height: 50px;
z-index: 99;
transition: all 300ms ease;
border-bottom: solid 1px rgba(0, 0, 0, 0.08);
}
.header .header-title {
position: absolute;
height: 50px;
line-height: 49px;
font-size: 14px;
color: #000;
font-weight: 600;
z-index: 1;
font-family: "Inter", sans-serif;
}
.header .header-logo {
background-repeat: no-repeat;
background-position: center center;
height: 100%;
position: absolute;
z-index: 1;
left: 50%;
}
.header .header-icon {
position: absolute;
height: 50px;
width: 45px;
text-align: center;
line-height: 49px;
font-size: 12px;
color: #1f1f1f;
border: none;
-webkit-appearance: none;
appearance: none;
background-color: rgba(0, 0, 0, 0) !important;
}
.header .dropdown-menu {
z-index: 99;
}
.footer .footer-logo {
background-repeat: no-repeat;
background-position: center center;
height: 100%;
position: absolute;
z-index: 1;
left: 50%;
}
.header-auto-show {
opacity: 0;
pointer-events: none;
transition: all 300ms ease;
}
.header-active {
opacity: 1;
pointer-events: all;
transition: all 300ms ease;
}
.header-always-show .header {
margin-top: 0px !important;
}
.header-static {
position: relative !important;
}
.header-transparent {
background-color: rgba(0, 0, 0, 0) !important;
box-shadow: none !important;
border: none !important;
}
.header-clear {
padding-top: 50px;
}
.header-clear-small {
padding-top: 20px;
}
.header-clear-medium {
padding-top: 70px;
}
.header-clear-large {
padding-top: 85px;
}
.header-icon .badge {
position: absolute;
margin-left: -5px;
color: #FFF !important;
width: 16px;
text-align: center;
line-height: 16px;
padding: 0px;
padding-left: 1px !important;
border-radius: 18px;
margin-top: 7px;
font-size: 11px;
}
.header-transparent-light {
background-color: rgba(0, 0, 0, 0);
box-shadow: none !important;
}
.header-transparent-light a {
color: #FFF;
}
.header-transparent-dark {
background-color: rgba(0, 0, 0, 0);
box-shadow: none !important;
}
.header-transparent-dark a {
color: #000;
}
.header-logo-center .header-icon-1 {
left: 0px;
}
.header-logo-center .header-icon-2 {
left: 45px;
}
.header-logo-center .header-icon-3 {
right: 45px;
}
.header-logo-center .header-icon-4 {
right: 0px;
}
.header-logo-center .header-title {
width: 150px;
left: 50%;
margin-left: -75px;
text-align: center;
}
.header-logo-center .header-logo {
background-position: center center;
width: 150px !important;
left: 50%;
margin-left: -75px;
text-align: center;
}
.header-logo-left .header-icon-1 {
right: 0px;
}
.header-logo-left .header-icon-2 {
right: 45px;
}
.header-logo-left .header-icon-3 {
right: 90px;
}
.header-logo-left .header-icon-4 {
right: 135px;
}
.header-logo-left .header-logo {
left: 0px !important;
margin-left: 0px !important;
}
.header-logo-left .header-title {
left: 15px !important;
margin-left: 0px !important;
}
.header-logo-right .header-icon-1 {
left: 0px;
}
.header-logo-right .header-icon-2 {
left: 45px;
}
.header-logo-right .header-icon-3 {
left: 90px;
}
.header-logo-right .header-icon-4 {
left: 135px;
}
.header-logo-right .header-logo {
left: auto !important;
right: 20px !important;
margin-left: 0px !important;
}
.header-logo-right .header-title {
left: auto !important;
right: 20px !important;
margin-left: 0px !important;
}
.header-logo-app .header-icon-1 {
left: 0px;
}
.header-logo-app .header-icon-2 {
right: 2px;
}
.header-logo-app .header-icon-3 {
right: 45px;
}
.header-logo-app .header-icon-4 {
right: 90px;
}
.header-logo-app .header-logo {
left: 0px !important;
margin-left: 40px !important;
}
.header-logo-app .header-title {
left: 0px !important;
margin-left: 50px !important;
}
.footer-logo span {
display: none;
}
.header-demo {
z-index: 98 !important;
position: relative;
}
.is-on-homescreen .notch-clear {
padding-top: calc(0px + (constant(safe-area-inset-top))*0.8) !important;
padding-top: calc(0px + (env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header-clear-notch {
padding-top: calc(0px + (constant(safe-area-inset-top))*0.8) !important;
padding-top: calc(0px + (env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header-clear-small {
padding-top: calc(20px + (constant(safe-area-inset-top))*0.8) !important;
padding-top: calc(20px + (env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header-clear-medium {
padding-top: calc(70px + (constant(safe-area-inset-top))*0.8) !important;
padding-top: calc(70px + (env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header-clear-large {
padding-top: calc(85px + (constant(safe-area-inset-top))*0.8) !important;
padding-top: calc(85px + (env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header {
height: calc(50px + (constant(safe-area-inset-top))*0.8) !important;
height: calc(50px + (env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header-icon {
margin-top: calc((constant(safe-area-inset-top))*0.8) !important;
margin-top: calc((env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .header-title {
margin-top: calc((constant(safe-area-inset-top))*0.8) !important;
margin-top: calc((env(safe-area-inset-top))*0.8) !important;
}
.is-on-homescreen .page-title {
padding-top: calc((constant(safe-area-inset-top))*0.8) !important;
padding-top: calc((env(safe-area-inset-top))*0.8) !important;
}
/*Page Titles*/
.page-title {
display: flex;
transition: all 300ms ease;
margin-top: 23px;
margin-bottom: 30px;
}
.page-title-fixed {
dislay: flex;
position: fixed;
left: 0px;
right: 0px;
}
.page-title-over {
z-index: 99;
}
.page-title-clear {
height: calc(90px + (constant(safe-area-inset-top))*0.8) !important;
height: calc(90px + (env(safe-area-inset-top))*0.8) !important;
}
.page-title h1 {
margin-right: auto;
font-weight: 700 !important;
font-size: 28px;
padding-top: 3px;
margin-left: 15px;
}
.page-title div {
margin-right: auto;
}
.page-title p {
font-weight: 500;
margin-top: -9px;
margin-bottom: -10px;
margin-left: 15px;
}
.page-title-icon {
float: left;
z-index: 2;
height: 38px;
width: 38px;
margin-right: 13.33333px;
line-height: 39px;
border-radius: 16px;
text-align: center;
}
.page-content-top {
position: fixed;
left: 0px;
right: 0px;
z-index: 53;
}
.page-content-top .owl-carousel {
touch-action: pan-x;
}
/*-Footer Menu-*/
#footer-bar {
position: fixed;
bottom: 0px;
left: 0px;
right: 0px;
z-index: 98;
-webkit-backdrop-filter: saturate(180%) blur(20px);
backdrop-filter: saturate(180%) blur(20px);
background-color: rgba(255, 255, 255, 0.7);
display: flex;
min-height: 61px;
border-top: solid 1px rgba(0, 0, 0, 0.05);
text-align: center;
transition: transform 350ms ease !important;
}
#footer-bar a {
color: #1f1f1f;
padding-top: 12px;
position: relative;
flex: 1 1 auto;
}
#footer-bar a span {
position: relative;
z-index: 2;
display: block;
font-size: 10px;
font-weight: 500;
margin-top: -6px;
opacity: 0.7;
font-family: "Roboto", sans-serif !important;
}
#footer-bar a i {
font-size: 18px;
position: relative;
z-index: 2;
}
#footer-bar a svg {
transform: translateY(-6px);
}
#footer-bar .badge {
font-style: normal;
z-index: 5;
top: 0px;
position: absolute;
margin-left: 3px;
color: #FFF !important;
width: 18px;
text-align: center;
line-height: 18px;
padding: 0px;
padding-left: 0px !important;
border-radius: 18px;
margin-top: 7px;
font-size: 11px;
}
.footer-bar-2 .active-nav {
color: #FFF !important;
}
.footer-bar-2 .active-nav strong {
background-color: #5D9CEC;
position: absolute;
width: 80px;
left: 50%;
transform: translateX(-50%);
top: 0px;
bottom: 0px;
}
.footer-bar-4 .active-nav {
color: #FFF !important;
}
.footer-bar-4 .active-nav strong {
position: absolute;
width: 47px;
height: 47px;
border-radius: 60px;
left: 50%;
top: 50%;
background-color: #5D9CEC;
transform: translate(-50%, -50%);
bottom: 0px;
}
.footer-bar-4 .active-nav i {
padding-top: 8px;
}
.footer-bar-4 span {
display: none !important;
}
.footer-bar-4 i {
padding-top: 10px;
}
.footer-bar-5 .active-nav strong {
background-color: #5D9CEC;
position: absolute;
width: 50px;
height: 2px;
border-radius: 60px;
left: 50%;
top: 0px;
transform: translateX(-50%);
}
.footer-bar-1 .active-nav strong {
background-color: #5D9CEC;
position: absolute;
width: 50px;
height: 2px;
border-radius: 60px;
left: 50%;
bottom: 0px;
transform: translateX(-50%);
}
.footer-bar-6 u {
background-color: rgba(255, 255, 255, 0.2);
}
.footer-bar-6 {
margin-left: -3px;
}
.footer-bar-6 span {
font-size: 11px !important;
}
.footer-bar-6 i {
transform: translateY(-2px);
opacity: 0.7;
}
.footer-bar-6 .circle-nav strong {
position: absolute;
width: 50px;
height: 50px;
border-radius: 50px;
left: 50%;
top: -23px;
z-index: 0;
transform: translateX(-50%);
box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.09);
animation: footerAni 1s infinite;
background-image: linear-gradient(to bottom, #1b55bf 0%, #1740bf 100%) !important;
}
@keyframes footerAni {
0% {
transform: scale(1, 1) translateX(-50%);
}
50% {
transform: scale(1.05, 1.05) translateX(-48%);
}
}
.footer-bar-6 .circle-nav span {
font-size: 11px !important;
margin-top: -8px !important;
}
.footer-bar-6 .circle-nav i {
transform: translateY(-21px) translateX(0px);
color: #FFF !important;
opacity: 1 !important;
font-size: 20px !important;
position: relative;
z-index: 2;
}
.footer-bar-6 .circle-nav svg {
width: 25px !important;
height: 25px !important;
stroke: #FFF !important;
fill: rgba(255, 255, 255, 0.1) !important;
transform: translateY(-25px) translateX(-1px) !important;
position: relative;
z-index: 2;
}
.footer-bar-6 .circle-nav u {
position: absolute;
left: 0px;
right: 0px;
width: 50px;
border-radius: 50px;
height: 50px;
z-index: 0;
}
.footer-bar-6 .active-nav em {
position: absolute;
width: 60px;
height: 4px;
border-radius: 60px;
left: 50%;
top: 57px;
transform: translateX(-50%);
background-image: linear-gradient(to bottom, #1b55bf 0%, #1740bf 100%) !important;
}
.footer-bar-3 span {
display: none !important;
}
.footer-bar-3 .active-nav {
padding-top: 11px !important;
}
.footer-bar-3 .active-nav span {
display: block !important;
color: #5D9CEC;
}
.footer-bar-3 .active-nav i {
color: #5D9CEC;
}
.footer-bar-3 a {
padding-top: 18px !important;
}
.footer-menu-hidden {
transition: all 100ms ease;
transform: translateY(100%) !important;
}
.footer-bar-white * {
color: #FFF;
}
#footer-bar.position-relative {
z-index: 2 !important;
}
.is-ios #footer-bar {
height: calc(65px + (constant(safe-area-inset-bottom))*1.1);
height: calc(65px + (env(safe-area-inset-bottom))*1.1);
}
.is-not-ios .footer-menu-clear {
height: 70px;
display: block;
}
.is-not-ios .footer {
padding-bottom: 0px;
}
.is-not-ios #footer-menu a i {
padding-top: 13px;
}
.is-not-ios #footer-menu a span {
opacity: 0.6;
}
/*Menus & Action Sheets & Modals*/
/*--Menu System---*/
.menu-title {
position: relative;
}
.menu-title h1 {
font-size: 28px;
font-weight: 700;
padding: 20px 0px 10px 15px;
}
.menu-title p {
font-weight: 600;
font-size: 12px;
margin: 15px 0px -25px 15px !important;
padding: 0px 0px 0px 0px;
}
.menu-title a {
font-size: 20px;
color: #dc3545;
position: absolute;
text-align: center;
width: 55px;
right: 0px;
top: 50%;
margin-top: -13px;
}
.menu-bg {
background-color: #f8fbfb;
}
.menu-hider {
position: fixed;
top: -100px;
bottom: -100px;
left: 0px;
right: 0px;
background-color: rgba(0, 0, 0, 0.35);
z-index: 100;
pointer-events: none;
opacity: 0;
transition: all 300ms ease;
}
.menu {
position: fixed;
-webkit-backdrop-filter: saturate(180%) blur(20px);
backdrop-filter: saturate(180%) blur(20px);
background-color: rgba(255, 255, 255, 0.8);
z-index: 101;
overflow: scroll;
transition: all 300ms ease;
-webkit-overflow-scrolling: touch;
}
.menu .content {
margin-bottom: 0px !important;
}
.menu-box-left {
left: 0px;
top: 0px !important;
width: 250px;
height: 100%;
bottom: 0px;
transform: translate3d(-100%, 0, 0);
}
.menu-box-right {
display: none;
right: 0px;
transform: translateX(100%);
top: 0px !important;
height: 100%;
bottom: 0px;
width: 250px;
}
.menu-box-top {
transform: translate3d(0, -115%, 0);
top: 0px;
left: 0px;
right: 0px;
height: 300px;
}
.menu-box-bottom {
bottom: 0px;
left: 0px;
right: 0px;
height: 300px;
transform: translate3d(0, 110%, 0);
}
.menu-box-modal {
top: 50%;
left: 50%;
transform: translate(-50%, -40%);
opacity: 0;
pointer-events: none;
transition: all 200ms ease;
}
.menu-box-top.menu-box-detached {
top: 10px;
left: 10px;
right: 10px;
}
.menu-box-bottom.menu-box-detached {
bottom: 20px;
left: 10px;
right: 10px;
}
.menu-box-left.menu-active {
transform: translate3d(0%, 0, 0) !important;
}
.menu-box-right.menu-active {
transform: translate3d(0%, 0, 0) !important;
}
.menu-box-top.menu-active {
transform: translate3d(0%, 0, 0) !important;
}
.is-on-homescreen .menu-box-top.menu-active {
transform: translate3d(0%, 40px, 0) !important;
}
.menu-box-bottom.menu-active {
transform: translate3d(0%, 20px, 0) !important;
}
.menu-box-bottom-full.menu-active {
transform: translate3d(0%, 0px, 0) !important;
}
.menu-box-modal.menu-active {
transition: all 200ms ease;
pointer-events: all !important;
opacity: 1 !important;
transform: translate(-50%, -50%) !important;
}
.menu-hider.menu-active {
transition: all 300ms ease;
opacity: 1;
pointer-events: all;
}
.menu-hider.menu-active.menu-active-clear {
background-color: rgba(0, 0, 0, 0) !important;
}
.menu-box-left[data-menu-effect="menu-reveal"] {
opacity: 0;
pointer-events: none;
transform: translate(0px) !important;
z-index: 96;
}
.menu-box-right[data-menu-effect="menu-reveal"] {
opacity: 0;
pointer-events: none;
transform: translate(0px) !important;
z-index: 96;
}
.menu-active.menu {
opacity: 1 !important;
transition: all 300ms ease;
pointer-events: all !important;
}
/*Menu Update*/
#menu-update {
background-color: #FFF;
position: fixed;
z-index: 9999;
width: 310px;
height: 430px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
opacity: 0;
pointer-events: none;
border-radius: 10px;
transition: all 300ms ease;
}
.menu-active {
opacity: 1 !important;
}
.menu-active-no-click {
opacity: 1;
background-color: rgba(0, 0, 0, 0.7);
pointer-events: all !important;
}
#menu-install-pwa-ios {
overflow: visible !important;
}
.fa-ios-arrow {
transform: translateY(4px);
}
.theme-light .fa-ios-arrow {
color: #FFF !important;
}
.menu-open {
overflow: hidden !important;
}
/*Menu Design*/
/*Menu*/
.menu-divider {
padding-left: 16px;
text-transform: uppercase;
font-weight: 700;
font-size: 11px;
letter-spacing: 0.3px;
}
.menu-list a {
padding-left: 55px;
color: #7e8793;
font-size: 13px;
font-weight: 500;
font-family: "Inter", sans-serif;
line-height: 48px;
display: block;
}
.menu-list a i {
font-size: 15px;
height: 45px;
color: #707883 !important;
width: 50px;
text-align: center;
line-height: 48px;
position: absolute;
margin-left: -50px;
}
.menu-list-image a {
position: relative;
}
.menu-list-image {
padding-top: 5px;
padding-left: 10px;
}
.menu-list-image img {
height: 33px;
color: #707883 !important;
width: 33px;
margin-top: 8px;
border-radius: 13px !important;
text-align: center;
line-height: 45px;
position: absolute;
margin-left: -47px;
}
.theme-light .menu .active-nav {
font-weight: 700;
color: #000 !important;
}
.theme-dark .menu .active-nav {
font-weight: 700;
color: #FFF !important;
}
.menu-list .active-nav i {
color: #4A89DC !important;
}
.menu-content {
min-height: 100%;
}
.menu-list-large a {
position: relative;
padding-left: 65px;
color: #7e8793;
font-size: 13px;
font-weight: 500;
font-family: "Inter", sans-serif;
line-height: 50px;
display: block;
}
.menu-list-large a span {
border-radius: 12px;
position: absolute;
height: 32px;
line-height: 32px;
width: 32px;
text-align: center;
left: 18px;
top: 50%;
margin-top: -15px;
}
.menu-list-large .badge, .menu-list-image .badge {
position: absolute;
right: 18px;
top: 50%;
margin-top: -12px;
font-weight: 600;
font-size: 10px;
padding: 6px 9px;
border-radius: 7px;
}
.menu-list-large .fa-angle-right, .menu-list-image .fa-angle-right {
position: absolute;
right: 27px;
font-size: 10px;
opacity: 0.5;
margin-top: -6px;
top: 50%;
}
.list-menu {
font-family: "Inter", sans-serif;
margin: 0px 25px 0px 10px;
}
.list-menu a i:first-child {
border-radius: 12px;
height: 32px !important;
line-height: 33px !important;
width: 32px !important;
box-shadow: 0 5px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.02);
}
.list-menu a img {
border-radius: 12px;
height: 32px !important;
line-height: 32px !important;
width: 32px !important;
margin-left: 5px !important;
box-shadow: 0 5px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.02);
}
.list-menu a {
border: none !important;
}
.list-menu .badge {
padding: 6px 9px !important;
font-size: 10px !important;
font-weight: 500 !important;
margin-right: 2px;
transform: translateY(-2px);
border: 0px !important;
border-radius: 8px;
}
.list-menu .custom-control {
margin-top: -44px !important;
}
.list-menu span {
font-weight: 500;
padding-left: 7px;
color: #7e8793;
}
.list-menu .menu-active span {
color: #000;
font-weight: 700;
}
/*Sticky Utility / Secondary Classes*/
/*Rounded Borders*/
.rounded-0 {
border-radius: 0px !important;
}
.rounded-xs {
border-radius: 5px !important;
}
.rounded-s {
border-radius: 8px !important;
}
.rounded-sm {
border-radius: 12px !important;
}
.rounded-m {
border-radius: 20px !important;
}
.rounded-l {
border-radius: 30px !important;
}
.rounded-xl {
border-radius: 50px !important;
}
/*Shadows*/
.shadow-none {
box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0) !important;
}
.shadow-0 {
box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0) !important;
}
.shadow-xs {
box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.04) !important;
}
.shadow-s {
box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1) !important;
}
.shadow-m {
box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.08) !important;
}
.shadow-l {
box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.09) !important;
}
.shadow-xl {
box-shadow: 0 5px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.02) !important;
}
.shadow-xxl {
box-shadow: 0 5px 30px 0 rgba(0, 0, 0, 0.2), 0 5px 25px 0 rgba(0, 0, 0, 0.2) !important;
}
/*Line Height Control*/
.line-height-xs {
line-height: 14px !important;
}
.line-height-s {
line-height: 17px !important;
}
.line-height-m {
line-height: 24px !important;
}
.line-height-l {
line-height: 26px !important;
}
.line-height-xl {
line-height: 37px !important;
}
.line-height-xxl {
line-height: 45px !important;
}
/*Text Shadow*/
.text-shadow-s {
text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.4);
}
.text-shadow-l {
text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.4);
}
/*Boxed Text*/
.boxed-text-xl, .boxed-text-l, .boxed-text-m, .boxed-text-s {
display: block;
text-align: center;
margin-left: auto;
margin-right: auto;
}
.boxed-text-xl {
width: 90%;
max-width: 340px;
}
.boxed-text-l {
width: 85%;
max-width: 300px;
}
.boxed-text-m {
width: 80%;
max-width: 300px;
}
.boxed-text-s {
width: 70%;
max-width: 260px;
}
.border-xs {
border: solid 1px !important;
}
.border-s {
border: solid 2px !important;
}
.border-m {
border: solid 3px !important;
}
.border-l {
border: solid 4px !important;
}
.border-xl {
border: solid 5px !important;
}
/*Font Weights*/
.font-200 {
font-weight: 200;
}
.font-300 {
font-weight: 300;
}
.font-400 {
font-weight: 400;
}
.font-500 {
font-weight: 500;
}
.font-600 {
font-weight: 600;
}
.font-700 {
font-weight: 700;
}
.font-800 {
font-weight: 800;
}
.font-900 {
font-weight: 900;
}
/*Opacity Values - Used for Contrasting Text, example opacity-30 will make the opacity 0.3*/
.opacity-0 {
opacity: 0;
}
.opacity-10 {
opacity: 0.1;
}
.opacity-20 {
opacity: 0.2;
}
.opacity-30 {
opacity: 0.3;
}
.opacity-40 {
opacity: 0.4;
}
.opacity-50 {
opacity: 0.5;
}
.opacity-60 {
opacity: 0.6;
}
.opacity-70 {
opacity: 0.7;
}
.opacity-80 {
opacity: 0.8;
}
.opacity-85 {
opacity: 0.85;
}
.opacity-90 {
opacity: 0.9;
}
/*Font Array - Better Typography Control, example font-30 class will make the font size 30px*/
.font-8 {
font-size: 8px !important;
}
.font-9 {
font-size: 9px !important;
}
.font-10 {
font-size: 10px !important;
}
.font-11 {
font-size: 11px !important;
}
.font-12 {
font-size: 12px !important;
}
.font-13 {
font-size: 13px !important;
}
.font-14 {
font-size: 14px !important;
}
.font-15 {
font-size: 15px !important;
}
.font-16 {
font-size: 16px !important;
}
.font-17 {
font-size: 17px !important;
}
.font-18 {
font-size: 18px !important;
}
.font-19 {
font-size: 19px !important;
}
.font-20 {
font-size: 20px !important;
}
.font-21 {
font-size: 21px !important;
}
.font-22 {
font-size: 22px !important;
}
.font-23 {
font-size: 23px !important;
}
.font-24 {
font-size: 24px !important;
}
.font-25 {
font-size: 25px !important;
}
.font-26 {
font-size: 26px !important;
}
.font-27 {
font-size: 27px !important;
}
.font-28 {
font-size: 28px !important;
}
.font-29 {
font-size: 29px !important;
}
.font-30 {
font-size: 30px !important;
}
.font-31 {
font-size: 31px !important;
}
.font-32 {
font-size: 32px !important;
}
.font-33 {
font-size: 33px !important;
}
.font-34 {
font-size: 34px !important;
}
.font-35 {
font-size: 35px !important;
}
.font-36 {
font-size: 36px !important;
}
.font-37 {
font-size: 37px !important;
}
.font-38 {
font-size: 38px !important;
}
.font-39 {
font-size: 39px !important;
}
.font-40 {
font-size: 40px !important;
}
.font-41 {
font-size: 41px !important;
}
.font-42 {
font-size: 42px !important;
}
.font-43 {
font-size: 43px !important;
}
.font-44 {
font-size: 44px !important;
}
.font-45 {
font-size: 45px !important;
}
.font-46 {
font-size: 46px !important;
}
.font-47 {
font-size: 47px !important;
}
.font-48 {
font-size: 48px !important;
}
.font-49 {
font-size: 49px !important;
}
.font-50 {
font-size: 50px !important;
}
/*Rotate*/
.rotate-45 {
transform-origin: center;
transform: rotate(45deg) !important;
}
.rotate-90 {
transform-origin: center;
transform: rotate(90deg) !important;
}
.rotate-135 {
transform-origin: center;
transform: rotate(135deg) !important;
}
.rotate-180 {
transform-origin: center;
transform: rotate(180deg) !important;
}
.rotate-225 {
transform-origin: center;
transform: rotate(225deg) !important;
}
.rotate-270 {
transform-origin: center;
transform: rotate(270deg) !important;
}
.rotate-315 {
transform-origin: center;
transform: rotate(315deg) !important;
}
/*Scaling Animation*/
@keyframes scale-animation {
0% {
transform: scale(1, 1);
}
50% {
transform: scale(1.05, 1.05);
}
0% {
transform: scale(1, 1);
}
}
.scale-box {
animation: scale-animation 1.5s;
animation-iteration-count: infinite;
}
@keyframes scale-icon {
0% {
transform: scale(1, 1);
}
50% {
transform: scale(1.3, 1.3);
}
0% {
transform: scale(1, 1);
}
}
.scale-icon {
animation: scale-icon 1.5s;
animation-iteration-count: infinite;
}
/*Control Classes*/
::-webkit-scrollbar {
display: none;
}
img.mx-auto {
display: block;
}
.disabled {
display: none !important;
}
.no-click {
pointer-events: none !important;
}
.no-outline {
outline: none !important;
}
.fixed-height-page {
overflow-y: hidden !important;
min-height: 100% !important;
}
/*Prealoder*/
#preloader {
position: fixed;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
z-index: 99999;
transition: all 150ms ease;
}
#preloader .spinner-border {
position: absolute;
top: 50%;
left: 50%;
margin-left: -15px;
}
.preloader-hide {
opacity: 0;
pointer-events: none;
}
.theme-light #preloader {
background-color: #FFF;
}
.theme-dark #preloader {
background-color: #0f1117;
}
/*Buttons*/
.btn {
font-family: "Inter", sans-serif;
transition: all 300ms ease;
color: #FFF;
}
.btn:hover {
opacity: 0.9;
color: #FFF;
}
.btn-full {
display: block;
}
.btn-xxs, .btn-xs, .btn-s, .btn-sm, .btn-m, .btn-l {
font-size: 12px;
}
.btn-xxs {
padding: 6px 10px !important;
}
.btn-xs {
padding: 7px 14px !important;
}
.btn-s {
padding: 8px 18px !important;
}
.btn-sm {
padding: 10px 18px !important;
}
.btn-m {
padding: 13px 20px !important;
}
.btn-l {
padding: 14px 26px !important;
}
.btn-xl {
padding: 15px 30px !important;
font-size: 15px !important;
}
.btn-xxl {
padding: 17px 34px !important;
font-size: 17px !important;
}
.btn-uppercase {
text-transform: uppercase;
}
.btn-center-xs {
width: 100px;
margin: 0 auto;
display: block;
}
.btn-center-s {
width: 120px;
margin: 0 auto;
display: block;
}
.btn-center-m {
width: 160px;
margin: 0 auto;
display: block;
}
.btn-center-l {
width: 220px;
margin: 0 auto;
display: block;
}
.btn-center-xl {
width: 250px;
margin: 0 auto;
display: block;
}
.btn.bg-highlight {
color: #FFF;
}
.btn-3d {
transition: all 150ms ease;
border: none;
border-bottom: solid 4px;
}
.btn-3d:hover {
border-width: 2px !important;
}
.btn:focus {
outline: none !important;
}
.btn-margins {
margin-left: 17px;
margin-right: 17px;
margin-bottom: 30px;
}
.under-slider-btn {
z-index: 50;
position: relative;
margin-top: -20px;
}
.btn-icon:hover {
color: #FFF;
}
.btn-icon {
padding-left: 50px !important;
overflow: hidden;
position: relative;
}
.btn-icon i {
position: absolute;
left: 0px;
top: 0px;
line-height: 43px;
width: 40px;
height: 100%;
background-color: rgba(0, 0, 0, 0.1);
}
/*Icons*/
.icon:hover {
color: #FFF;
}
.icon {
display: inline-block;
position: relative;
text-align: center;
color: #FFF;
}
.icon-xxs i {
width: 32px;
line-height: 32px;
font-size: 13px;
}
.icon-xs i {
width: 38px;
line-height: 38px;
font-size: 14px;
}
.icon-sm i {
width: 40px;
line-height: 40px;
font-size: 15px;
}
.icon-s i {
width: 40px;
line-height: 40px;
font-size: 15px;
}
.icon-m i {
width: 45px;
line-height: 45px;
font-size: 16px;
}
.icon-l i {
width: 51px;
line-height: 51px;
font-size: 17px;
}
.icon-xl i {
width: 55px;
line-height: 55px;
font-size: 18px;
}
.icon-xxl i {
width: 60px;
line-height: 60px;
font-size: 19px;
}
.icon-center {
display: block;
margin: 0 auto;
}
.icon-border {
border: solid 1px;
color: inherit;
}
.icon-20 {
width: 20px;
}
.icon-30 {
width: 30px;
}
.icon-40 {
width: 40px;
}
.icon-50 {
width: 50px;
}
.icon-60 {
width: 60px;
}
.icon-70 {
width: 70px;
}
.icon-80 {
width: 80px;
}
.icon-90 {
width: 90px;
}
/*Accordion Settings*/
.accordion * {
outline: 0 !important;
box-shadow: 0px !important;
box-shadow: none !important;
}
.accordion .btn:first-child {
width: 100%;
}
.accordion .card {
transition: all 0ms ease !important;
}
.accordion button {
transition: all 0ms ease !important;
}
.accordion [data-card-height] button {
width: 100%;
}
.btn.accordion-btn i:first-child {
width: 18px;
text-align: center;
}
.btn.accordion-btn {
text-align: left !important;
padding: 15px 17px;
font-size: 13px;
font-weight: 700;
}
.accordion-icon {
float: right;
transition: all 250ms ease;
margin-top: 5px;
}
[aria-expanded="true"] .fa-plus {
transform: rotate(45deg);
}
[aria-expanded="true"] .fa-arrow-down {
transform: rotate(180deg);
}
[aria-expanded="true"] .fa-chevron-down {
transform: rotate(180deg);
}
[aria-expanded="true"] .fa-angle-down {
transform: rotate(180deg);
}
/*Offline Detector*/
.offline-message {
position: fixed;
transform: translateY(-200%);
padding-bottom: 0px;
text-align: center;
text-transform: uppercase;
font-weight: 900;
transition: all 300ms ease;
top: 0px;
left: 0px;
right: 0px;
z-index: 9999;
line-height: 55px;
}
.online-message {
position: fixed;
transform: translateY(-200%);
padding-bottom: 0px;
text-align: center;
text-transform: uppercase;
font-weight: 900;
transition: all 300ms ease;
top: 0px;
left: 0px;
right: 0px;
z-index: 9999;
line-height: 55px;
}
.is-on-homescreen .offline-message {
padding-top: 30px !important;
}
.is-on-homescreen .online-message {
padding-top: 30px !important;
}
.offline-message-active {
transform: translateY(0%);
}
.online-message-active {
transform: translateY(0%);
}
/*---Added to Home---*/
.add-to-home-visible {
opacity: 1 !important;
pointer-events: all !important;
}
.add-to-home {
position: fixed;
background-color: #000;
z-index: 99;
left: 15px;
right: 15px;
border-radius: 10px;
height: 80px;
opacity: 0;
pointer-events: none;
transition: all 250ms ease;
}
.add-to-home .close-add-to-home {
pointer-events: none;
}
.add-to-home h1 {
position: absolute;
padding-left: 75px;
padding-top: 8px;
color: #FFF;
font-size: 13px;
}
.add-to-home p {
color: #ced4da;
position: absolute;
font-size: 11px;
padding-right: 20px;
padding-left: 75px;
padding-top: 35px;
line-height: 14px;
}
.add-to-home img {
width: 45px;
margin-top: 17px;
margin-left: 15px;
}
.add-to-home-ios {
bottom: 25px;
}
.add-to-home-ios i {
width: 40px;
text-align: center;
position: absolute;
font-size: 30px;
left: 50%;
bottom: -18px !important;
margin-left: -21px;
transform: rotate(180deg);
color: #000;
display: block;
}
.add-to-home-ios .close-add-to-home i {
color: #e34e47 !important;
}
.add-to-home-ios .close-add-to-home {
position: absolute;
right: 13px;
top: 13px;
transform: scale(0.5, 0.5);
}
.add-to-home-android {
top: 20px;
}
.add-to-home-android i {
width: 40px;
text-align: center;
position: absolute;
top: -18px;
right: 15px;
font-size: 30px;
margin-left: -20px;
color: #000;
display: block;
}
.add-to-home-android .close-add-to-home i {
color: #e34e47 !important;
}
.add-to-home-android .close-add-to-home {
position: absolute;
right: 2px;
top: 20px;
transform: scale(0.5, 0.5);
}
.show-on-homescreen {
display: none;
}
.is-on-homescreen .show-on-homescreen {
display: block !important;
}
/*Ads*/
.ad-300x50 {
margin: 0 auto;
width: 300px;
height: 50px;
}
.ad-300x250 {
margin: 0 auto;
width: 300px;
height: 250px;
}
.ad-300x50-fixed {
left: 50%;
margin-left: -150px;
bottom: 60px;
bottom: calc(85px + (constant(safe-area-inset-bottom))*1.1) !important;
bottom: calc(85px + (env(safe-area-inset-bottom))*1.1) !important;
position: fixed;
z-index: 90;
}
.ad-time-close {
position: absolute;
right: 10px;
top: 10px;
width: 30px;
height: 30px;
line-height: 27px;
text-align: center;
border: solid 2px;
border-radius: 30px;
}
/*Scroll Fixed Ads*/
.scroll-ad-visible {
transform: translateY(0%) !important;
}
.is-on-homescreen .scroll-ad {
bottom: 110px;
}
.scroll-ad {
position: fixed;
bottom: 75px;
left: 10px;
right: 10px;
background-color: #FFF;
z-index: 93;
height: 80px;
box-shadow: 0px 0px 5px 2px rgba(0, 0, 0, 0.04);
border-radius: 12px;
transform: translateY(150%);
transition: all 300ms ease;
}
.scroll-ad img {
width: 60px;
position: absolute;
margin: 10px;
border-radius: 10px;
}
.scroll-ad h1 {
display: block;
font-size: 18px;
padding: 7px 0px 0px 80px;
margin-bottom: -3px;
}
.scroll-ad em {
padding: 0px 85px 0px 80px;
font-style: normal;
font-size: 11px;
opacity: 0.7;
display: block;
line-height: 15px;
}
.scroll-ad a {
width: 60px;
font-size: 9px;
right: 15px;
text-transform: uppercase;
text-align: center;
font-weight: 700;
position: absolute;
top: 50%;
border-radius: 5px;
transform: translateY(-50%);
}
.alert h4 {
padding-left: 47px;
margin-bottom: -5px;
}
.alert button {
position: absolute;
right: 0px;
top: 50%;
transform: translateY(-50%);
width: 50px;
text-align: center;
}
.alert button span {
background-color: transparent;
}
.alert button:active {
box-shadow: none !important;
border: none !important;
outline: none !important;
}
.alert button:focus {
box-shadow: none !important;
border: none !important;
outline: none !important;
}
.alert span {
background-color: rgba(255, 255, 255, 0.2);
position: absolute;
left: -1px;
top: -1px;
bottom: -1px;
width: 47px;
}
.alert span i {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.alert strong {
padding-left: 47px;
font-weight: 400;
}
.alert-content button {
top: 35px !important;
}
/*Notifications*/
.notification {
position: fixed;
top: 10px;
left: 10px;
right: 10px;
z-index: 101;
border-radius: 10px;
-webkit-backdrop-filter: saturate(180%) blur(20px);
backdrop-filter: saturate(180%) blur(20px);
transform: translateY(-120%);
transition: all 250ms ease;
}
.notification .notification-icon {
padding: 5px 5px;
display: block;
background-color: #343a40;
}
.notification .notification-icon i:first-child {
margin: 0px 5px 0px 10px;
font-size: 10px;
}
.notification .notification-icon i:last-child {
position: absolute;
right: 0px;
line-height: 30px;
width: 40px;
text-align: center;
}
.notification .notification-icon em {
font-size: 11px;
text-transform: uppercase;
font-style: normal;
}
.notification h1 {
margin: 10px 15px -7px 15px;
}
.notification p {
line-height: 15px;
margin: 5px 15px 18px 15px;
color: #FFF;
}
.notification.show {
transform: translateY(0%) !important;
}
.is-ios.is-on-homescreen .notification.show {
transform: translateY(30px) !important;
}
.notification-android {
left: 5px;
right: 5px;
top: 5px;
border-radius: 3px;
}
.notification-android i {
position: absolute;
top: 50%;
transform: translateY(-55%);
width: 35px;
margin-left: 15px;
line-height: 35px;
border-radius: 35px;
text-align: center;
font-size: 13px;
}
.notification-android h1 {
padding-left: 55px;
}
.notification-android p {
padding-right: 60px;
padding-left: 55px;
font-size: 12px;
}
.notification-android strong {
position: absolute;
right: 20px;
top: 20px;
font-size: 10px;
font-weight: 400;
font-style: normal;
}
.notification-android .notification-buttons {
width: 100%;
margin-left: 70px;
padding-top: 5px;
border-top: solid 1px rgba(255, 255, 255, 0.1);
}
.notification-android .notification-buttons i {
opacity: 0.6;
font-size: 11px;
position: relative;
float: left;
margin: 0px 10px 0px 0px;
width: auto;
transform: translateY(-22px);
}
.notification-android a {
font-size: 11px;
color: #FFF;
text-transform: uppercase;
text-align: left;
font-weight: 500;
}
.notification-material {
left: 0px;
right: 0px;
top: 0px;
border-radius: 0px;
}
.notification-material strong {
font-size: 10px;
font-weight: 400;
}
.notification-material em {
text-transform: none !important;
}
.notification-material .notification-icon {
background-color: rgba(0, 0, 0, 0) !important;
margin-bottom: -15px;
}
.notification-material img {
position: absolute;
width: 50px;
border-radius: 50px;
right: 20px;
top: 50%;
transform: translateY(-50%);
}
.notification-material p {
padding-right: 50px;
}
/*Back to Top*/
.content .back-to-top-badge {
transform: translate(0, 0) !important;
width: 130px;
margin: 10px auto 20px auto !important;
left: auto;
bottom: auto;
display: block;
position: relative !important;
}
.content .back-to-top-icon {
transform: scale(1, 1) translate(0, 0px) !important;
margin: 0px auto 30px auto;
right: auto;
bottom: auto;
display: block;
position: relative !important;
}
.back-to-top-badge {
position: fixed;
z-index: 90;
bottom: 80px;
left: 50%;
transform: translate(-50%, 70px);
display: inline-block;
padding: 5px 20px;
border-radius: 35px;
color: #FFF;
text-align: center;
font-size: 12px;
transition: all 300ms ease;
}
.back-to-top-badge i {
padding: 0px 10px 0px 0px;
}
.back-to-top-icon {
position: fixed;
z-index: 9999;
bottom: 70px;
right: 15px;
display: inline-block;
width: 35px;
line-height: 35px;
border-radius: 35px;
color: #FFF;
text-align: center;
font-size: 12px;
transform: scale(0, 0);
transition: all 300ms ease;
}
.back-to-top-icon span {
display: none;
}
.back-to-top-badge.back-to-top-visible {
transform: translate(-50%, 0px);
}
.back-to-top-icon.back-to-top-visible {
transform: scale(1, 1);
}
.back-to-top-icon-square {
border-radius: 0px;
}
.back-to-top-icon-round {
border-radius: 5px;
}
.back-to-top-icon-circle {
border-radius: 40px;
}
/*Extending Cards Features*/
.row {
margin-bottom: 30px;
}
.card {
-webkit-transform: translate3d(0, 0, 0);
background-size: cover;
border: 0px !important;
max-height: 150000px;
margin-bottom: 30px;
background-position: center center !important;
}
.cover-slider .card {
margin-bottom: 0px !important;
}
[data-card-height="cover"].card {
margin-bottom: 0px !important;
}
.card-style {
overflow: hidden;
margin: 0px 15px 30px 15px;
border-radius: 20px;
border: none;
box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.1);
}
.card-style .card-body {
padding: 15px;
}
.card-style .card-overlay {
border-radius: 20px;
}
.card-style-full {
margin-left: 0px;
margin-right: 0px;
}
.card-body {
z-index: 2;
}
.card-header {
z-index: 2;
}
.card-footer {
z-index: 2;
}
.card-top {
z-index: 2;
position: absolute;
left: 0px;
right: 0px;
top: 0px;
}
.card-bottom {
z-index: 2;
position: absolute;
left: 0px;
right: 0px;
bottom: 0px;
}
.card-center {
z-index: 2;
position: absolute;
left: 0px;
right: 0px;
top: 50%;
transform: translateY(-50%);
}
.card-overlay {
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
position: absolute;
z-index: 1;
}
.card-image {
display: block;
width: 100%;
min-height: 250px;
overflow: hidden;
position: absolute;
width: 100%;
}
.card-image img {
transition: all 450ms ease;
}
.card-fixed {
position: fixed;
left: 0px;
right: 0px;
}
.card-clear {
pointer-events: none;
margin-bottom: -30px;
opacity: 0;
}
.card-overflow {
overflow: visible !important;
z-index: 20;
}
[data-card-height] p {
padding-bottom: 0px;
}
/*Card Effects*/
.card-scale-image {
transform: scale(1.05, 1.05) !important;
}
.card-rotate-image {
transform: rotate(5deg) scale(1.2, 1.2) !important;
}
.card-grayscale-image {
filter: grayscale(100%);
}
.card-blur-image {
filter: blur(5px);
}
.card-hide-image {
opacity: 0 !important;
}
.card-hide div {
transition: all 300ms ease;
}
.card-hide * {
transition: all 300ms ease;
}
.polaroid-effect {
background-color: #FFF;
padding: 5px;
border: solid 1px rgba(0, 0, 0, 0.1);
}
.card-scale * {
transition: all 300ms ease;
}
.card-rotate * {
transition: all 300ms ease;
}
.card-grayscale * {
transition: all 300ms ease;
}
.card-blur * {
transition: all 300ms ease;
}
.card-overlay {
background-position: center center;
background-size: cover !important;
}
.card-overlay-infinite {
position: absolute;
left: 0px;
right: 0px;
bottom: 0px;
width: 2000px;
height: 100%;
z-index: 0;
animation: infiniteBG 600s;
animation-iteration-count: infinite;
animation-timing-function: linear;
background-image: url(images/mountain.jpg);
background-size: cover;
background-repeat: repeat;
background-position: left center;
transform: translateX(0px);
}
@keyframes infiniteBG {
0% {
transform: translateX(0px);
}
50% {
transform: translateX(-1400px);
}
100% {
transform: translateX(0px);
}
}
.card-overlay-zoom {
position: absolute;
left: 0px;
right: 0px;
bottom: 0px;
top: 0px;
height: 100%;
z-index: 0;
animation: zoomBG 30s;
animation-iteration-count: infinite;
animation-timing-function: linear;
background-size: cover;
background-repeat: repeat;
background-position: center center;
transform: translateX(0px);
}
@keyframes zoomBG {
0% {
transform: scale(1, 1);
}
50% {
transform: scale(1.5, 1.5);
}
100% {
transform: scale(1, 1);
}
}
.card-overlay-rotate {
position: absolute;
margin-top: -25%;
margin-left: -25%;
width: 150%;
height: 160%;
z-index: 0;
animation: rotateBG 50s;
animation-iteration-count: infinite;
animation-timing-function: linear;
background-repeat: repeat;
background-position: center center;
}
@keyframes rotateBG {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(45deg);
}
100% {
transform: rotate(0deg);
}
}
/*Card Full Left & Right*/
.theme-dark .drag-line {
background-color: rgba(255, 255, 255, 0.05);
}
.drag-line {
width: 45px;
height: 3px;
border-radius: 10px;
background-color: rgba(0, 0, 0, 0.1);
margin: 15px auto -15px auto;
animation: moveDragLine 1.5s infinite;
}
@keyframes moveDragLine {
0% {
transform: translateY(0px);
}
20% {
transform: translateY(-3px);
}
40% {
transform: translateY(1px);
}
45% {
transform: translateY(0px);
}
}
.card-full-left, .card-full-left .card-overlay {
margin-left: 0px !important;
border-top-left-radius: 0px !important;
border-bottom-left-radius: 0px !important;
}
.card-full-right, .card-full-right .card-overlay {
margin-right: 0px !important;
border-top-right-radius: 0px !important;
border-bottom-right-radius: 0px !important;
}
/*Chips*/
.chip {
display: inline-block;
margin: 0px 10px 15px 0px;
border-radius: 30px;
padding-right: 15px;
}
.chip * {
font-size: 12px;
}
.chip span {
line-height: 29px;
}
.chip i {
width: 30px;
line-height: 30px;
border-radius: 30px;
display: inline-block;
text-align: center;
margin-right: 5px;
}
.chip img {
display: inline;
margin-right: 9px;
border-radius: 30px;
width: 30px;
line-height: 30px;
}
.chip-s {
transform: scale(1, 1);
}
.chip-m {
transform: scale(1.05, 1.05);
}
.chip-l {
transform: scale(1.15, 1.15);
}
.chip-xl {
transform: scale(1.2, 1.2);
}
/*Dividers*/
.divider {
height: 1px;
display: block;
background-color: rgba(0, 0, 0, 0.05);
margin-bottom: 30px;
}
.divider-margins {
margin: 0px 17px 30px 17px;
}
.divider-icon {
height: 1px;
display: block;
background-color: rgba(0, 0, 0, 0.05);
margin-bottom: 50px;
}
.divider-icon i {
position: absolute;
width: 50px;
background-color: #f8fbfb;
text-align: center;
margin-top: -8px;
left: 50%;
transform: translateX(-50%);
}
.card .divider-icon i {
background-color: #FFF;
}
.divider-small {
height: 2px;
width: 80px;
margin: auto;
}
/*Custom Switches*/
.custom-control * {
cursor: pointer;
user-select: none !important;
}
.switch-is-unchecked {
display: none;
}
.switch-is-checked {
display: block;
}
.switch-s {
transform: scale(0.8, 0.8);
}
/*iOS Switcher*/
.ios-switch {
padding-left: 10px;
}
.ios-switch label::before {
background-color: #e8e9ea;
pointer-events: all;
margin-top: -3px;
margin-left: -1px;
width: 58px !important;
height: 32px !important;
border-radius: 50px !important;
}
.ios-switch label::after {
margin-top: -2px;
z-index: 6;
width: 30px !important;
height: 30px !important;
transition: all 250ms ease;
border-radius: 50px !important;
background-color: #FFF;
border: solid 1px rgba(152, 152, 152, 0.4);
transition: all 250ms ease;
}
.ios-input:checked ~ .custom-control-label::after {
-webkit-transform: translateX(26px) !important;
}
.ios-input:checked ~ .custom-control-label::before {
background-color: #8CC152 !important;
}
.highlight-switch .ios-input:checked ~ .custom-control-label::before {
background-color: #4A89DC !important;
}
.ios-switch-icon label::before {
background-color: #DA4453 !important;
}
.ios-switch-icon i {
line-height: 32px;
pointer-events: none;
z-index: 5;
position: absolute;
left: 10px;
}
.ios-switch-icon i:last-child {
z-index: 5;
position: absolute;
margin-left: 29px;
}
.ios-switch-icon span {
font-size: 9px;
font-weight: 700;
color: #FFF;
line-height: 32px;
pointer-events: none;
z-index: 5;
position: absolute;
left: 10px;
}
.ios-switch-icon span:last-child {
z-index: 5;
position: absolute;
margin-left: 24px;
}
/*Android Switcher*/
.android-switch {
padding-left: 10px;
}
.android-switch label::before {
pointer-events: all;
margin-top: 0px;
margin-left: -2px;
width: 53px !important;
height: 17px !important;
border-radius: 50px !important;
background-color: #AAB2BD;
}
.android-switch label::after {
border: solid 1px rgba(0, 0, 0, 0.1) !important;
margin-top: -6px;
margin-left: -3px;
width: 28px !important;
height: 28px !important;
background-color: #FFF !important;
box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2) !important;
border-radius: 50px !important;
transition: all 250ms ease;
}
.android-input {
transform: translateY(1px) !important;
}
.android-input:checked ~ .custom-control-label::after {
background-color: #458be3 !important;
border: none !important;
-webkit-transform: translateX(30px) !important;
}
.android-input:checked ~ .custom-control-label::before {
background-color: #458be3 !important;
}
[data-activate] {
cursor: pointer;
display: block;
width: 100%;
}
/*Classic Switcher*/
.classic-switch input {
display: none;
}
.classic-switch label::before {
pointer-events: all;
width: 40px !important;
height: 40px !important;
transform: translateX(11px);
margin-top: -10px;
border: none;
background-color: rgba(0, 0, 0, 0) !important;
}
.classic-switch i {
pointer-events: none;
transition: all 250ms ease;
}
.classic-input:checked ~ .custom-control-label::after {
-webkit-transform: translateX(26px) !important;
}
.classic-input:checked ~ .fa-plus {
color: #DA4453 !important;
transform: rotate(45deg);
transition: all 250ms ease;
}
.classic-input:checked ~ .fa-angle-down {
color: #DA4453 !important;
transform: rotate(180deg);
transition: all 250ms ease;
}
.classic-input:checked ~ .fa-circle {
color: #DA4453 !important;
transform: scale(1.3, 1.3);
transition: all 250ms ease;
}
/*Interests Page*/
.icon-check input {
position: absolute !important;
transform: translateX(-150524px);
}
.icon-check .fa-check-circle {
display: none;
}
.icon-check i {
width: 20px;
text-align: center;
pointer-events: none;
position: absolute;
left: 30px;
top: 0px;
height: 24px;
line-height: 24px;
}
.icon-check {
margin-left: -30px;
margin-right: 10px;
margin-bottom: 10px;
cursor: pointer;
position: relative;
width: auto;
display: block;
}
.icon-check label {
cursor: pointer;
font-size: 13px;
padding: 0px 15px 0px 40px;
}
.icon-check .icon-check-2 {
display: none;
}
.icon-check input:checked ~ .icon-check-1 {
opacity: 0 !important;
display: none !important;
}
.icon-check input:checked ~ .icon-check-2 {
display: block;
}
/*Input Style 1*/
.input-style-1 {
position: relative;
}
.input-style-1 input {
border-width: 1px;
font-size: 13px;
display: block;
width: 100%;
height: 50px;
line-height: 50px;
margin-bottom: 10px;
border: none;
background-color: rgba(0, 0, 0, 0);
border-bottom: solid 1px rgba(0, 0, 0, 0.08);
transition: all 250ms ease;
}
.input-style-1 input:focus {
border-bottom: solid 1px black;
}
.input-style-1 textarea {
border-width: 1px;
font-size: 13px;
display: block;
width: 100%;
height: 50px;
line-height: 28px;
padding-right: 15px;
padding-top: 14px;
margin-top: -5px;
margin-bottom: 15px;
background-color: rgba(0, 0, 0, 0);
margin-left: 0px !important;
padding-left: 0px !important;
text-indent: 0px !important;
border: none;
border-bottom: solid 1px rgba(0, 0, 0, 0.08);
transition: all 250ms ease;
}
.input-style-1 textarea:focus {
line-height: 24px;
height: 150px;
transition: all 250ms ease;
}
.input-style-1 span {
color: #007bff !important;
font-weight: 500;
position: absolute;
font-size: 10px;
margin-top: -3px;
opacity: 0;
pointer-events: none;
transition: all 250ms ease;
}
.input-style-1 em {
position: absolute;
top: 14px;
font-size: 10px;
font-style: normal;
right: 0px;
color: #dee2e6;
}
.input-style-1 em i {
font-size: 12px;
width: 15px;
text-align: center;
margin-top: 7px;
display: block;
}
.input-style-1 input[type="month"] {
color: #6c757d;
}
.input-style-1 input[type="date"] {
border-width: 1px;
font-size: 13px;
display: block;
width: 100%;
height: 50px;
line-height: 50px;
margin-bottom: 15px;
background-color: rgba(0, 0, 0, 0);
border-bottom: solid 1px rgba(0, 0, 0, 0.08);
transition: all 250ms ease;
color: #6c757d;
}
.input-style-1 input[type="date"]::-webkit-inner-spin-button {
opacity: 0;
}
.input-style-1 input[type="date"]::-webkit-calendar-picker-indicator {
opacity: 0;
}
.input-style-1 input[type="date"]::-webkit-clear-button {
opacity: 0;
}
.input-style-1 select {
border-width: 1px;
color: #6c757d;
border: none;
border-bottom: solid 1px rgba(0, 0, 0, 0.08);
box-sizing: border-box;
margin-bottom: 15px;
height: 50px;
line-height: 50px;
border-radius: 0px;
width: 100%;
box-shadow: none;
-webkit-appearance: none;
background-color: rgba(0, 0, 0, 0);
font-size: 14px;
}
.input-style-1 select:focus {
border-bottom: solid 1px black;
}
.input-style-1-active {
opacity: 1 !important;
}
.input-style-1-inactive {
color: #dee2e6 !important;
}
.input-style-1.has-icon .input-icon {
position: absolute;
z-index: 10;
margin-top: 20px;
margin-left: 0px;
}
.input-style-1.has-icon input {
padding-left: 30px;
}
.input-style-1.has-icon span {
margin-left: 25px;
}
.input-style-1.has-icon .input-style-1-active {
transform: translateX(-25px);
transition: all 150ms ease;
}
input[type="range"] {
-webkit-appearance: none;
height: 20px;
width: 100%;
outline: none;
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
width: 20px;
height: 20px;
background: #F26B5E;
position: relative;
z-index: 3;
}
input[type="range"]::-webkit-slider-thumb:after {
content: " ";
height: 10px;
position: absolute;
z-index: 1;
right: 20px;
top: 5px;
background: #ff5b32;
}
/*Input Style 2*/
.input-style-2 {
margin-bottom: 15px;
position: relative;
}
.input-style-2 span {
pointer-events: none;
color: #000 !important;
position: absolute;
font-size: 13px;
z-index: 1;
height: 22px;
line-height: 20px;
padding: 2px 5px 2px 5px;
top: 14px;
left: 10px;
right: 10px;
background-color: #FFF;
transition: all 150ms ease;
}
.input-style-2 .input-style-1-active {
color: #007bff !important;
transform: translateY(-25px);
transition: all 150ms ease;
}
.input-style-2 em {
position: absolute;
right: 10px;
z-index: 2;
font-size: 10px;
font-style: normal;
color: #dee2e6;
line-height: 53px;
}
.input-style-2 em i {
font-size: 12px !important;
margin-top: 5px !important;
}
.input-style-2 input {
border-width: 1px;
background-color: rgba(0, 0, 0, 0);
border-radius: 10px !important;
border-color: rgba(0, 0, 0, 0.1);
display: block;
width: 100%;
height: 50px;
line-height: 50px;
padding: 0px 14px;
font-size: 13px;
-webkit-appearance: none;
}
.input-style-2 textarea {
border-width: 1px;
background-color: rgba(0, 0, 0, 0);
border-radius: 10px !important;
display: block;
border-color: rgba(0, 0, 0, 0.1);
width: 100%;
height: 50px;
line-height: 50px;
padding: 0px 14px;
font-size: 13px;
-webkit-appearance: none;
transition: all 250ms ease;
}
.input-style-2 textarea:focus {
padding-top: 14px;
line-height: 24px;
height: 150px;
transition: all 250ms ease;
}
.input-style-2 select {
border-width: 1px;
background-color: rgba(0, 0, 0, 0);
border-radius: 10px !important;
display: block;
border-color: rgba(0, 0, 0, 0.1);
width: 100%;
height: 50px;
line-height: 50px;
padding: 0px 14px;
font-size: 13px;
-webkit-appearance: none;
}
.input-style-2 input[type="date"]::-webkit-inner-spin-button, .input-style-2 input[type="month"]::-webkit-inner-spin-button {
opacity: 0;
}
.input-style-2 input[type="date"]::-webkit-calendar-picker-indicator, .input-style-2 input[type="month"]::-webkit-calendar-picker-indicator {
opacity: 0;
}
.input-style-2 input[type="date"]::-webkit-clear-button, .input-style-2 input[type="month"]::-webkit-clear-button {
opacity: 0;
}
span.input-style-1-active {
opacity: 1;
padding-right: 10px !important;
right: auto !important;
}
.input-style-2.has-icon .input-icon {
position: absolute;
z-index: 10;
margin-top: 20px;
margin-left: 15px;
}
.input-style-2.has-icon input {
padding-left: 40px;
}
.input-style-2.has-icon span {
margin-left: 25px;
}
.input-style-2.has-icon .input-style-1-active {
transform: translate(-25px, -25px);
transition: all 150ms ease;
}
.input-light i {
color: #FFF;
}
.input-light span {
color: #FFF !important;
}
.input-light em {
color: #6c757d !important;
}
.input-light input {
color: #FFF !important;
border-bottom: solid 1px rgba(255, 255, 255, 0.1) !important;
}
.input-light input::placeholder {
color: #FFF;
}
/*File Upload*/
.upload-file {
text-indent: -999px;
outline: none;
width: 100%;
height: 45px;
color: rgba(0, 0, 0, 0) !important;
}
.upload-file-text {
pointer-events: none;
margin-top: -36px !important;
text-align: center;
color: #FFF;
height: 10px;
text-transform: uppercase;
font-weight: 900;
}
.file-data input[type='file'] {
font-size: 0px !important;
}
input {
font-size: 13px !important;
}
input::placeholder {
font-size: 13px !important;
}
input:focus {
outline: none;
}
select:focus {
outline: none;
}
textarea {
font-size: 13px !important;
}
textarea:focus {
outline: none;
}
button:focus {
outline: none;
}
.tooltip {
font-size: 13px;
}
code {
font-size: 11px;
line-height: 22px;
}
.stepper {
width: 102px;
border: solid 1px rgba(0, 0, 0, 0.1);
}
.stepper:after {
content: "";
display: table;
clear: both;
}
.stepper input {
height: 33px;
width: 33px;
float: left;
border: none !important;
text-align: center;
display: block;
line-height: 33px;
font-size: 11px !important;
background-color: transparent;
}
.stepper input::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
.stepper input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.stepper a {
text-align: center;
width: 33px;
height: 33px;
line-height: 33px;
font-size: 9px;
}
.stepper a:first-child {
float: left;
border-right: solid 1px rgba(0, 0, 0, 0.1);
}
.stepper a:last-child {
float: right;
border-left: solid 1px rgba(0, 0, 0, 0.1);
}
/*Range Sliders*/
.ios-slider {
height: 40px !important;
background: linear-gradient(to right, #5D9CEC 0%, #5D9CEC 100%);
background-size: 100% 3px;
background-position: center;
background-repeat: no-repeat;
}
.ios-slider::-webkit-slider-thumb {
background-color: #FFF !important;
border: solid 1px rgba(0, 0, 0, 0.1);
border-radius: 30px;
height: 25px !important;
width: 25px !important;
box-shadow: -3px 3px 10px 1px rgba(0, 0, 0, 0.2) !important;
}
.material-slider {
height: 40px !important;
background: linear-gradient(to right, #CCD1D9 0%, #CCD1D9 100%);
background-size: 100% 18px;
background-position: center;
background-repeat: no-repeat;
padding: 0px 3px 0px 3px;
}
.material-slider::-webkit-slider-thumb {
background-color: #1f1f1f !important;
border: solid 1px rgba(0, 0, 0, 0.1);
height: 10px !important;
width: 30px !important;
}
.classic-slider {
height: 20px !important;
background-color: #FFF;
border: solid 1px rgba(0, 0, 0, 0.1);
border-radius: 30px !important;
background-size: 100% 25px;
background-position: center;
background-repeat: no-repeat;
background-color: rgba(0, 0, 0, 0);
padding: 0px 3px 0px 3px;
-webkit-box-shadow: inset 0 2px 2px 1px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 2px 2px 1px rgba(0, 0, 0, 0.1);
}
.classic-slider::-webkit-slider-thumb {
background-color: #007bff !important;
border: solid 1px rgba(0, 0, 0, 0);
height: 16px !important;
border-radius: 20px;
width: 16px !important;
box-shadow: -3px 3px 10px 1px rgba(0, 0, 0, 0.2) !important;
}
.range-slider-icons {
padding: 0px 30px 0px 30px;
}
.range-slider.range-slider-icons i {
position: absolute;
top: 0px;
height: 44px;
line-height: 44px;
text-align: center;
}
.range-slider {
position: relative;
}
.range-slider .fa-range-icon-1 {
left: 0px;
}
.range-slider .fa-range-icon-2 {
right: 0px;
}
/*List Groups*/
.check-visited .visited-link i:last-child::before {
opacity: 0;
}
.check-visited .visited-link i:last-child::after {
font-family: "Font Awesome 5 Free";
font-weight: 900;
position: absolute;
right: 13px;
font-size: 16px;
margin-top: 0.5px;
content: "\f058";
opacity: 1;
color: #A0D468;
}
.list-custom-small {
line-height: 50px;
}
.list-custom-small .badge {
position: absolute;
right: 15px;
margin-top: 16px !important;
font-size: 9px;
padding: 5px 8px 5px 8px;
font-weight: 700;
}
.list-custom-small a {
color: #1f1f1f;
font-weight: 600;
font-size: 13px;
border-bottom: solid 1px rgba(0, 0, 0, 0.05);
}
.list-custom-small a img {
margin-left: 0px;
width: 30px;
height: 30px;
line-height: 30px;
margin-top: 10px;
text-align: center;
float: left;
margin-right: 10px;
}
.list-custom-small a i:first-child {
margin-left: 0px;
width: 30px;
height: 30px;
line-height: 30px;
margin-top: 10px;
text-align: center;
float: left;
margin-right: 10px;
}
.list-custom-small a i:last-child {
float: right;
font-size: 10px;
opacity: 0.5;
}
.list-custom-small i {
line-height: 50px;
}
.list-custom-small .custom-control {
z-index: 10;
position: absolute;
right: 40px;
margin-top: -40px;
}
.list-custom-small .custom-control input {
transform: translateY(-5px) !important;
}
.menu .list-custom-small a i:first-child {
margin-left: 6px;
}
.list-custom-large a {
line-height: 70px;
color: #1f1f1f;
font-weight: 500;
font-size: 13px;
border-bottom: solid 1px rgba(0, 0, 0, 0.05);
}
.list-custom-large a span:not(.badge) {
font-family: "Inter", sans-serif;
font-weight: 600;
font-size: 14px;
letter-spacing: -0.3px;
position: absolute;
margin-top: -7px;
}
.list-custom-large a strong {
font-size: 7px;
position: absolute;
font-size: 12px;
margin-top: 11px;
color: #adb5bd;
font-weight: 500;
}
.list-custom-large a img {
width: 32px;
height: 32px;
line-height: 32px;
margin-top: 21px;
text-align: center;
float: left;
margin-right: 15px;
}
.list-custom-large a i:first-child {
width: 32px;
height: 32px;
line-height: 32px;
margin-top: 21px;
text-align: center;
float: left;
margin-right: 15px;
}
.list-custom-large a i:last-child {
float: right;
font-size: 10px;
}
.list-custom-large .badge {
position: absolute;
right: 10px;
margin-top: 30px;
font-size: 9px;
padding: 5px 8px 5px 8px;
font-weight: 700;
}
.list-custom-large i {
line-height: 74px;
}
.list-custom-large .custom-control {
z-index: 10;
position: absolute;
right: 40px;
margin-top: 22px;
}
.list-custom-large .custom-control input {
transform: translateY(-12px) !important;
}
.list-boxes a {
line-height: 60px;
margin-bottom: 10px;
color: #1f1f1f;
font-weight: 500;
font-size: 13px;
border-bottom: solid 1px rgba(0, 0, 0, 0.05);
}
.list-boxes a span:not(.badge) {
padding-left: 10px;
font-size: 14px;
position: absolute;
margin-top: -4px;
}
.list-boxes a strong {
padding-left: 10px;
font-size: 7px;
position: absolute;
font-size: 11px;
margin-top: 10px;
color: #6c757d;
font-weight: 500;
}
.list-boxes a i:first-child {
width: 40px;
float: left;
padding-left: 15px;
}
.list-boxes a i:last-child {
float: right;
font-size: 16px;
margin-top: -5px;
margin-right: 15px;
}
.list-boxes a u {
position: absolute;
right: 0px;
margin-right: 9px;
width: 60px;
font-size: 7px;
text-align: center;
margin-top: 13px;
text-decoration: none;
}
.list-boxes .badge {
position: absolute;
right: 10px;
margin-top: 30px;
font-size: 9px;
padding: 5px 8px 5px 8px;
font-weight: 700;
}
.list-boxes i {
line-height: 64px;
}
.short-border {
margin-left: 45px;
}
.short-border i:first-child {
margin-left: -45px;
margin-top: 23px;
}
.list-group .badge {
z-index: 2;
}
.list-icon-0 a i:first-child {
margin-left: 0px !important;
}
.icon-list {
margin-left: 0px;
padding-left: 0px;
}
.icon-list li {
list-style: none;
}
.icon-list li i {
width: 20px;
padding-right: 10px;
}
/*Badge Text in Lists*/
.badge-text {
margin-top: 13px !important;
transform: translateY(-3px);
padding-right: 20px !important;
}
/*Todo List*/
.todo-list.list-custom-large a {
min-height: 70px;
}
.todo-list.list-custom-small a {
min-height: 40px;
}
.todo-list .icon-check {
float: right;
margin-right: 28px;
}
/*Toasts*/
.toast-tiny {
z-index: 90;
position: fixed;
left: 50%;
line-height: 35px;
padding: 0px 20px;
color: #FFF;
transition: all 200ms ease;
max-width: auto !important;
font-size: 12px;
border-radius: 60px;
border: 0px !important;
}
.toast-bottom {
bottom: 80px;
bottom: calc(80px + (constant(safe-area-inset-bottom))*1.1) !important;
bottom: calc(80px + (env(safe-area-inset-bottom))*1.1) !important;
transform: translate(-50%, 160px) scale(0, 0);
}
.toast-bottom.toast-tiny.show {
transform: translate(-50%, 0px) scale(1, 1);
}
.toast-top {
top: 60px;
top: calc(65px + (constant(safe-area-inset-bottom))*1.1) !important;
top: calc(65px + (env(safe-area-inset-bottom))*1.1) !important;
transform: translate(-50%, -100px) scale(0, 0);
}
.toast-top.toast-tiny.show {
transform: translate(-50%, 0px) scale(1, 1);
}
.toast-center {
opacity: 0;
top: 50%;
transform: translate(-50.1%, 0px) scale(0, 0);
}
.toast-center.toast-tiny.show {
opacity: 1;
transform: translate(-50.1%, 0px) scale(1, 1);
}
/*Snackbars*/
.snackbar-toast {
bottom: 70px !important;
bottom: calc(70px + (constant(safe-area-inset-bottom))*1.1) !important;
bottom: calc(70px + (env(safe-area-inset-bottom))*1.1) !important;
position: fixed;
left: 10px !important;
right: 10px !important;
padding: 0px 18px;
line-height: 50px;
border-radius: 8px;
overflow: hidden;
z-index: 95;
transform: translateY(150px);
transition: all 300ms ease;
}
.snackbar-toast.show {
transform: translateY(-20px);
}
/*Pagination*/
.pagination {
margin-bottom: 30px;
}
.pagination .page-link {
padding: 10px 14px;
}
.pagination .page-item {
margin-right: 5px;
margin-left: 5px;
}
.page-item.active a {
color: #FFF !important;
}
/*Search*/
.search-results {
overflow: scroll;
}
.disabled-search-list {
position: relative;
max-height: 0px !important;
padding: 0px !important;
margin: 0px !important;
overflow: hidden;
}
.disabled-search {
display: none;
}
.search-box {
line-height: 50px;
border: solid 1px rgba(0, 0, 0, 0.08);
}
.search-box input {
outline: none !important;
width: 100%;
background-color: rgba(0, 0, 0, 0);
padding-left: 40px;
line-height: 45px;
}
.search-box .fa-search {
position: absolute;
left: 0px;
line-height: 52px;
padding: 0px 15px 0px 30px;
}
.search-box a {
position: absolute;
right: 15px;
font-size: 14px;
line-height: 52px;
width: 45px;
text-align: center;
}
.search-box input.bg-white {
color: #000 !important;
}
.search-color input {
color: #FFF;
}
.search-color input::placeholder {
color: #FFF;
}
.search-color i {
color: #FFF !important;
z-index: 10;
}
.search-icon-list {
padding-left: 10px;
padding-top: 10px;
}
.search-icon-list a {
color: #1f1f1f;
line-height: 35px;
}
.search-icon-list a i {
padding-right: 10px;
}
.search-page .search-result-list {
position: relative;
min-height: 80px;
margin-bottom: 20px;
}
.search-page .search-results img {
width: 80px;
position: absolute;
border-radius: 10px;
}
.search-page .search-results h1 {
font-size: 15px;
font-weight: 600;
padding-left: 100px;
margin-bottom: 0px;
}
.search-page .search-results p {
font-size: 12px;
line-height: 20px;
padding-left: 100px;
padding-right: 80px;
}
.search-page .search-results a {
position: absolute;
right: 0px;
height: 30px;
line-height: 31px;
padding: 0px 12px;
top: 50%;
transform: translateY(-50%);
color: #FFF;
font-size: 10px;
font-weight: 500;
border-radius: 10px;
}
/*Tabs*/
.tab-content {
display: none;
position: relative;
-webkit-transform: translate3d(0, 0, 0);
}
.tab-controls a {
font-family: "Inter", sans-serif;
border: solid 1px rgba(0, 0, 0, 0.07);
text-align: center;
float: left;
font-size: 12px;
margin-right: -1px;
color: #1f1f1f;
font-weight: 600;
background-color: #FFF;
transition: all 250ms ease;
}
.tab-controls a:last-child {
border-right: none !important;
border: solid 1px rgba(0, 0, 0, 0.07);
}
.tabs-large a {
height: 45px;
line-height: 45px;
font-size: 14px;
}
.tabs-medium a {
height: 40px;
line-height: 40px;
font-size: 13px;
}
.tabs-small a {
height: 33px;
line-height: 33px;
font-size: 12px;
}
.tabs-rounded {
border-radius: 11px;
}
.tabs-rounded a:first-child {
border-top-left-radius: 11px !important;
border-bottom-left-radius: 11px !important;
}
.tabs-rounded a:last-child {
border-top-right-radius: 11px !important;
border-bottom-right-radius: 11px !important;
}
.tabs-circled a:first-child {
border-top-left-radius: 30px !important;
border-bottom-left-radius: 30px !important;
}
.tabs-circled a:last-child {
border-top-right-radius: 30px !important;
border-bottom-right-radius: 30px !important;
}
.tabs-no-border * {
background-color: transparent !important;
border: none !important;
}
.tabs-no-border a {
padding: 0px 8px;
}
.border-tab {
border-top-width: 0px !important;
border-right-width: 0px !important;
border-left-width: 0px !important;
border-bottom-width: 3px !important;
padding-bottom: 12px !important;
border-style: solid !important;
}
/*Working Hours*/
.working-hours {
border-radius: 5px;
}
.working-hours p {
padding-top: 34px;
padding-bottom: 15px !important;
line-height: 0px;
padding-left: 10px;
padding-right: 10px;
margin-top: -8px !important;
width: 33.3%;
float: left;
margin-bottom: 10px;
display: inline-block;
}
.working-hours p:nth-child(2) {
text-align: center;
}
.working-hours p:last-child {
text-align: right;
}
.working-hours::after {
content: "";
clear: both;
display: table;
}
/*Responsive Videos and iframes*/
.max-iframe {
max-height: 200px !important;
height: 300px !important;
padding-bottom: 0px !important;
margin: 0 auto;
}
.responsive-iframe {
position: relative;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
max-width: 100%;
}
.responsive-iframe iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
.responsive-iframe object {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
.responsive-iframe embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
/*PageApp Calendar*/
.calendar {
position: relative;
background-color: #FFF;
overflow: hidden;
}
.cal-title {
color: #FFF;
line-height: 60px;
margin-bottom: 0px;
padding: 0px 15px;
}
.cal-sub-title {
color: #FFF;
line-height: 60px;
margin-bottom: 0px;
padding: 0px 15px;
}
.cal-title-right {
float: right;
margin-top: -60px;
line-height: 62px;
height: 50px;
padding-right: 20px;
}
.cal-title-left {
float: left;
margin-top: -60px;
line-height: 62px;
height: 50px;
padding-left: 20px;
}
.cal-days a {
position: relative;
width: 14.28%;
float: left;
text-align: center;
height: 35px;
line-height: 35px;
color: #FFF;
z-index: 3;
font-weight: 800;
}
.cal-disabled {
color: #ced4da !important;
}
.cal-selected span {
z-index: 2;
position: relative;
color: #FFF;
}
.cal-selected i {
color: #000;
z-index: 0;
opacity: 1;
font-size: 32px;
position: absolute;
width: 32px;
height: 32px;
margin-top: 50%;
left: 50%;
margin: 7px 0px 0px -16px;
text-align: center;
line-height: 32px;
}
.cal-dates a {
width: 14.2857142857%;
float: left;
text-align: center;
line-height: 45px;
color: #1f1f1f;
font-weight: 500;
}
.theme-dark .cal-dates a {
color: #FFF !important;
}
.theme-dark .cal-disabled {
opacity: 0.3;
}
.cal-dates-border a {
overflow: hidden;
border-right: solid 1px rgba(0, 0, 0, 0.05);
border-bottom: solid 1px rgba(0, 0, 0, 0.05);
}
.cal-schedule {
min-height: 80px;
border-bottom: solid 1px rgba(0, 0, 0, 0.055);
}
.cal-schedule em {
line-height: 20px;
padding: 20px 0px 0px 20px;
position: absolute;
font-size: 11px;
font-style: normal;
}
.cal-schedule strong {
color: #000;
display: block;
padding: 17px 0px 0px 100px;
font-size: 14px;
}
.cal-schedule span {
display: block;
font-size: 10px;
color: #adb5bd;
margin-top: 0px;
}
.cal-schedule span i {
width: 50px;
display: inline-block;
text-align: center;
padding: 0px 20px 0px 102px;
}
.theme-dark .cal-schedule strong {
color: #FFF !important;
}
.theme-dark .cal-schedule span {
color: #FFF !important;
opacity: 0.5;
}
.cal-message {
display: block;
}
.cal-message i {
position: absolute;
height: 40px;
line-height: 43px;
font-size: 27px;
right: 20px;
}
.cal-message strong {
display: block;
line-height: 20px;
font-weight: 400;
font-size: 11px;
padding-left: 20px;
}
/*-Pageapp Chat-*/
.speech-left {
max-width: 240px;
float: right;
border-bottom-right-radius: 0px !important;
color: #FFF;
}
.speech-right {
max-width: 240px;
float: left;
border-bottom-left-radius: 0px !important;
}
.speach-image {
padding: 0px !important;
}
.speach-image img {
margin: 0px;
}
.speech-last {
margin-bottom: 0px !important;
}
.speech-bubble {
position: relative;
border-radius: 17px;
padding: 10px 15px;
margin-bottom: 15px;
line-height: 22px;
font-size: 13px;
background-color: #dee2e6;
overflow: hidden;
}
.speech-bubble:after {
content: '';
display: block;
clear: both;
}
.speech-read {
font-size: 10px;
font-style: normal;
display: block;
text-align: right;
font-weight: 500;
color: #adb5bd;
margin-bottom: 80px;
}
.speach-input input {
width: 100%;
display: block;
line-height: 45px;
height: 45px;
margin-top: 8px;
border-radius: 45px;
}
.speach-icon a {
padding-top: 0px !important;
display: block;
border-radius: 35px;
width: 35px;
height: 35px;
line-height: 38px;
margin-top: 3px;
transform: translateY(10px);
}
/*Contact Form*/
.menu input[type="text"] {
height: 35px;
line-height: 35px;
}
.menu textarea {
height: 85px !important;
padding-top: 3px !important;
}
.menu .form-field {
margin-bottom: 5px;
}
.menu .form-field label {
font-size: 12px;
margin-bottom: -10px;
}
.form-field span {
position: absolute;
right: 20px;
font-size: 9px;
opacity: 0.5;
}
.form-field input {
box-shadow: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: rgba(0, 0, 0, 0) !important;
border-radius: 10px;
margin: 0px 0px 15px 0px;
}
.form-field textarea {
box-shadow: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: rgba(0, 0, 0, 0) !important;
border-radius: 10px;
margin: 0px 0px 15px 0px;
}
.form-name input {
line-height: 40px;
border: solid 1px rgba(0, 0, 0, 0.1);
width: 100%;
padding: 0px 10px 0px 10px;
}
.form-email input {
line-height: 40px;
border: solid 1px rgba(0, 0, 0, 0.1);
width: 100%;
padding: 0px 10px 0px 10px;
}
.form-text textarea {
height: 145px;
line-height: 24px;
width: 100%;
border: solid 1px rgba(0, 0, 0, 0.1);
padding: 10px 10px 0px 10px;
margin-bottom: 30px;
}
.contactSubmitButton {
width: 100%;
display: block;
border-radius: 10px;
color: #FFF !important;
padding: 12px 0px !important;
}
.fieldHasError {
border: solid 1px #BF263C !important;
}
/*Map Full*/
.map-full .caption, .map-full .card-overlay {
transition: all 350ms ease;
}
.hide-map {
position: absolute;
margin-top: -120px;
width: 200px;
left: 50%;
margin-left: -100px;
text-align: center;
opacity: 0;
z-index: 2;
}
.map-full .card {
z-index: 2;
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
}
.map-full iframe {
position: absolute;
width: 102vw;
height: 100vh;
z-index: 1;
}
.activate-map {
opacity: 1 !important;
transition: all 250ms ease;
transition: all 350ms ease;
}
.deactivate-map {
opacity: 0 !important;
pointer-events: none;
transition: all 350ms ease;
}
/*Filter*/
.gallery-filter-links, .gallery-filter-select * {
overflow: visible !important;
}
.gallery-filter-all {
float: left !important;
padding-left: 0px !important;
}
.gallery-filter-controls {
padding: 0px;
margin: 0px;
}
.gallery-filter-controls li {
list-style: none;
cursor: pointer;
float: right;
padding-left: 15px;
font-weight: 500;
color: #1f1f1f;
font-size: 13px;
transition: all 350ms ease;
}
.gallery-filter-controls li:first-child {
padding-right: 30px;
}
.gallery-filter-controls {
width: 100%;
box-sizing: border-box;
display: block;
}
.gallery-filter-controls-hidden {
position: absolute;
width: 50px;
left: -50000px;
}
.gallery-filter-links, .gallery-filter-select {
transition: height 350ms ease;
margin-left: -5px;
margin-right: -5px;
}
.gallery-filter-links a, .gallery-filter-select a {
width: 33.3%;
padding: 5px;
display: block;
transition: height 350ms ease;
}
.gallery-filter-links a img, .gallery-filter-select a img {
display: block;
width: 100%;
box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 0.08);
}
/*Collection*/
.gallery-collection-round a img {
border-radius: 10px;
}
.gallery-collection a {
width: 48%;
float: left;
position: relative;
}
.gallery-collection a:nth-child(2n+2) {
margin-left: 4%;
margin-bottom: 4%;
}
.gallery-collection a img {
width: 50%;
float: left;
padding: 1px;
}
.gallery-collection i {
position: absolute;
width: 50px;
height: 50px;
line-height: 50px;
left: 50%;
top: 50%;
z-index: 10;
margin-top: -25px;
margin-left: -25px;
text-align: center;
background-color: #FFFFFF;
border-radius: 50px;
font-size: 17px;
color: #1f1f1f;
}
/*Gallery Views*/
.gallery-view-controls a {
float: left;
width: 33.3%;
text-align: center;
height: 50px;
line-height: 50px;
font-size: 16px;
color: #1f1f1f;
}
.theme-dark .gallery-view-controls a {
color: #FFF;
}
.theme-dark .gallery-view-controls {
border-bottom: solid 1px rgba(255, 255, 255, 0.07);
}
.gallery-view-controls {
border-bottom: solid 1px rgba(0, 0, 0, 0.05);
margin-bottom: 30px;
}
.gallery-view-1 a {
width: 30%;
float: left;
}
.gallery-view-1 .caption {
display: none;
}
.gallery-view-2 .caption {
display: none;
}
.gallery-view-3 .caption {
padding-top: 20px;
}
.gallery-view-1 a {
margin-bottom: 5%;
}
.gallery-view-1 a:nth-child(3n-1) {
margin: auto 5% auto 5%;
}
.gallery-view-2 a {
width: 47.5%;
margin-bottom: 5%;
float: left;
}
.gallery-view-2 a:nth-child(2n-1) {
margin-right: 5%;
}
/*Page Timeline*/
.timeline-cover {
height: 430px;
width: 100%;
position: fixed;
z-index: 1;
top: 0px;
background-position: center center;
background-size: cover;
margin-top: 50px;
}
.timeline-cover .overlay {
opacity: 0.8;
}
.timeline-cover .content {
z-index: 10;
}
.timeline-body {
position: relative;
margin-top: 300px;
padding-top: 5px;
z-index: 2;
background-color: #f0f0f0;
padding-bottom: 10px;
box-shadow: none !important;
}
.timeline-header {
height: 55px;
border-bottom: solid 1px rgba(255, 255, 255, 0.5);
}
.timeline-header .back-button {
position: absolute;
top: 0px;
left: 0px;
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
font-size: 16px;
color: #FFF;
z-index: 11;
}
.timeline-header .menu-icon {
position: absolute;
top: 2px;
right: 0px;
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
font-size: 16px;
color: #FFF;
z-index: 11;
}
.timeline-header .menu-icon em {
background-color: #FFF;
}
.timeline-logo {
background-position: center;
background-repeat: no-repeat;
position: absolute;
z-index: 10;
width: 100%;
}
.timeline-deco {
background-color: rgba(0, 0, 0, 0.08);
position: absolute;
top: 0px;
z-index: 0;
bottom: 0px;
left: 43px;
width: 1px;
}
.timeline-item-content, .timeline-item-content-full {
border: solid 1px rgba(0, 0, 0, 0.1);
background-color: #FFF;
margin: 0px 15px 30px 90px;
padding: 20px 15px;
}
.timeline-item {
position: relative;
z-index: 2;
}
.timeline-item-content-full {
padding: 0px;
}
.timeline-item-content-full h5 {
padding: 5px 15px 15px 15px;
}
.timeline-item .timeline-icon {
color: #FFF;
position: absolute;
width: 45px;
height: 45px;
left: 21px;
line-height: 45px;
border-radius: 45px;
top: 25px;
font-size: 18px;
text-align: center;
}
/*Timeline Center*/
.timeline-cover-center .timeline-sub-heading,
.timeline-cover-center .timeline-heading {
padding-left: 0px;
text-align: center;
}
.timeline-cover-center .timeline-image {
top: 50%;
bottom: auto;
margin-top: -150px;
left: 50%;
margin-left: -60px;
background-size: 120px 120px;
width: 120px;
height: 120px;
border-radius: 100px;
}
.timeline-body-center {
padding-bottom: 40px;
}
.timeline-body-center .timeline-icon {
width: 60px;
height: 60px;
left: 50%;
line-height: 60px;
margin-left: -31px;
margin-top: -115px;
}
.timeline-body-center .timeline-deco {
left: 50%;
margin-left: -1px;
}
.timeline-body-center .timeline-item-content,
.timeline-body-center .timeline-item-content-full {
margin: 120px 20px 20px 20px !important;
padding: 20px;
}
/*Interests Page*/
.interest-check input {
position: absolute !important;
transform: translateX(-150524px);
}
.interest-check .fa-check-circle {
display: none;
}
.interest-check i {
width: 20px;
text-align: center;
pointer-events: none;
position: absolute;
left: 30px;
top: 0px;
height: 40px;
line-height: 40px;
}
.interest-check {
margin-left: -20px;
margin-right: 10px;
margin-bottom: 35px;
height: 22px;
cursor: pointer;
position: relative;
width: auto;
display: inline-block;
}
.interest-check label {
cursor: pointer;
font-weight: 500;
font-size: 13px;
font-family: "Inter", sans-serif;
padding: 8px 15px 8px 40px;
}
.interest-check input:checked ~ .fa {
display: block !important;
}
.interest-check input:checked ~ label {
color: #FFF !important;
background-color: #4A89DC !important;
}
.interest-check input:checked ~ .fa:last-child,
.interest-check input:checked ~ .fab:last-child,
.interest-check input:checked ~ .fas:last-child,
.interest-check input:checked ~ .far:last-child {
display: none !important;
}
/*Page VCard*/
.vcard-title {
font-size: 18px;
text-transform: uppercase;
}
.vcard-field {
line-height: 50px;
border-left: 0px !important;
border-top: 0px !important;
border-right: 0px !important;
padding-top: 15px;
border-bottom: solid 1px rgba(0, 0, 0, 0.05);
position: relative;
}
.vcard-field strong {
position: absolute;
margin-top: -18px;
color: #ababab;
font-weight: 400;
font-size: 10px;
}
.vcard-field i {
position: absolute;
top: 25px;
width: 15px;
text-align: center;
right: 0px;
opacity: 0.3;
}
.vcard-field a {
color: #000;
font-weight: 400;
font-size: 14px;
margin-top: -10px;
margin-bottom: 10px;
opacity: 0.7;
}
/*Gradient Adjustments*/
.bg-gradient {
background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0.1) 30%, rgba(0, 0, 0, 0.8) 70%, black 100%);
}
.bg-gradient-fade {
bottom: 0px !important;
}
.theme-light .bg-gradient-fade {
background: linear-gradient(to bottom, rgba(240, 240, 240, 0) 0%, rgba(240, 240, 240, 0.99) 65%, #f0f0f0 100%);
}
.theme-dark .bg-gradient-fade {
background: linear-gradient(to bottom, rgba(27, 29, 33, 0) 0%, rgba(27, 29, 33, 0.99) 65%, #1b1d21 100%);
}
.theme-light .bg-gradient-fade-small {
background: linear-gradient(to bottom, rgba(240, 240, 240, 0) 0%, rgba(240, 240, 240, 0.2) 50%, rgba(240, 240, 240, 0.9) 75%, #f0f0f0 100%);
}
.theme-dark .bg-gradient-fade-small {
background: linear-gradient(to bottom, rgba(27, 29, 33, 0) 0%, rgba(27, 29, 33, 0.2) 50%, rgba(27, 29, 33, 0.9) 75%, #1b1d21 100%);
}
/*Page Tint*/
.theme-dark .page-content-bg div {
position: fixed;
top: -50px;
bottom: -50px;
left: -50px;
right: -50px;
background-color: rgba(0, 0, 0, 0.6);
}
/*Basic Colors*/
.color-white {
color: #FFF !important;
}
.color-black {
color: #000 !important;
}
.bg-white {
background-color: #FFF !important;
}
.bg-black {
background-color: #000 !important;
}
/*Main Color Settings*/
.theme-dark .bg-theme {
background-color: #0f1117 !important;
}
.theme-light .bg-theme {
background-color: #FFF !important;
}
.theme-light .color-theme {
color: #0f1117 !important;
}
.theme-dark .color-theme {
color: #FFF !important;
}
/*Hide Show Based on Color Scheme*/
.theme-dark .show-on-theme-dark {
display: block;
}
.theme-dark .show-on-theme-light {
display: none;
}
.theme-light .show-on-theme-light {
display: block;
}
.theme-light .show-on-theme-dark {
display: none;
}
/*Dark Theme Settings*/
.theme-dark p {
color: #898989;
}
.theme-dark h1,
.theme-dark h2,
.theme-dark h3,
.theme-dark h4,
.theme-dark h5,
.theme-dark h6,
.theme-dark #footer-bar a i,
.theme-dark #footer-bar a span
.theme-dark p strong {
color: #FFF;
}
.theme-dark .accordion-btn,
.theme-dark .menu .nav-title,
.theme-dark .menu .nav a i,
.theme-dark .menu .nav a span,
.theme-dark .menu .nav .active-nav i,
.theme-dark .menu .nav .active-nav span,
.theme-dark .header .header-icon,
.theme-dark .header .header-title,
.theme-dark .search-header .fa-search,
.theme-dark .color-theme,
.theme-dark .countdown div,
.theme-dark .list-group i:last-child,
.theme-dark .search-icon-list a,
.theme-dark .fac label,
.theme-dark .pagination a,
.theme-dark .accordion-style-2 a,
.theme-dark .input-style-1 .input-icon,
.theme-dark .input-style-2 .input-icon,
.theme-dark .input-style-1 span,
.theme-dark .input-style-2 span,
.theme-dark .input-style-1 input,
.theme-dark .input-style-2 input,
.theme-dark input,
.theme-dark .contact-form i,
.theme-dark .demo-icon-font article,
.theme-dark [data-tab],
.theme-dark span:not(.badge),
.theme-dark .profile-2 .profile-stats a,
.theme-dark .vcard-field *,
.theme-dark .search-header input,
.theme-dark .search-header input::placeholder,
.theme-dark .footer .footer-title {
color: #FFF !important;
}
.theme-dark,
.theme-dark .page-bg,
.theme-dark #page,
.theme-dark .loader-main,
.theme-dark .instant-article,
.theme-dark .divider-icon i,
.theme-dark .table tr.even td,
.theme-dark .timeline-body,
.theme-dark table,
.theme-dark td {
background-color: #1b1d21 !important;
}
.theme-dark .ios-switch label::before,
.theme-dark .android-switch label::before {
background-color: #1b1d21;
border: solid 1px rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .footer,
.theme-dark .card,
.theme-dark #preloader {
background-color: #0f1117;
}
.theme-dark .input-style-2 span {
background-color: #000;
}
.theme-dark .card .input-style-2 span,
.theme-dark .card.input-style span,
.theme-dark .bg-theme {
background-color: #0f1117 !important;
}
.theme-dark .menu .input-style-1 span,
.theme-dark .menu .input-style-2 span {
background-color: rgba(23, 26, 31, 0.8) !important;
}
.theme-dark .link-list-3 a,
.theme-dark .pricing-1,
.theme-dark .pricing-2,
.theme-dark .pricing-3,
.theme-dark .pricing-4,
.theme-dark .search-box,
.theme-dark .link-list-2 a,
.theme-dark .vcard-field,
.theme-dark table {
border: solid 1px rgba(255, 255, 255, 0.05);
}
.theme-dark input::placeholder,
.theme-dark textarea::placeholder,
.theme-dark select::placeholder,
.theme-dark select,
.theme-dark .stepper,
.theme-dark .form-field input,
.theme-dark .form-field textarea {
color: #FFF !important;
border-color: rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .input-style-1 input,
.theme-dark .input-style-1 select,
.theme-dark .input-style-1 textarea,
.theme-dark input,
.theme-dark textarea,
.theme-dark select {
border-color: rgba(255, 255, 255, 0.05);
}
.theme-dark .input-style-1 input:focus,
.theme-dark .input-style-1 select:focus,
.theme-dark .input-style-1 textarea:focus,
.theme-dark input:focus,
.theme-dark textarea:focus,
.theme-dark select:focus {
border-color: #495057 !important;
}
.theme-dark .list-custom-large a,
.theme-dark .list-custom-small a {
border-color: rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .input-style-1 em,
.theme-dark .input-style-2 em {
color: #898989;
}
.theme-dark .timeline-deco {
background-color: rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .footer-links,
.theme-dark #footer-bar,
.theme-dark .footer-copyright {
border-top: solid 1px rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .border-bottom {
border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .border-top {
border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .border-left {
border-left: 1px solid rgba(255, 255, 255, 0.05) !important;
}
.theme-dark .border-right {
border-right: 1px solid rgba(255, 255, 255, 0.05) !important;
}
.theme-dark th,
.theme-dark .polaroid-effect,
.theme-dark .timeline-item-content,
.theme-dark .tab-controls,
.theme-dark .timeline-item-content-full {
background-color: #21252a !important;
color: #FFF;
}
.theme-dark .divider,
.theme-dark .menu .nav a:hover,
.theme-dark .menu .nav .active-subnav,
.theme-dark .menu .nav .divider {
background-color: rgba(255, 255, 255, 0.05);
}
.theme-dark .menu-hider {
background-color: rgba(0, 0, 0, 0.7);
}
.theme-dark .gallery-filter-controls li {
color: #FFF;
}
.theme-dark .gallery-view-controls a {
color: #FFF;
}
.theme-dark .gallery-view-controls {
border-bottom: solid 1px rgba(255, 255, 255, 0.05);
}
.theme-dark .tab-controls a {
background-color: #21252a;
border: solid 1px rgba(255, 255, 255, 0.05);
}
.theme-dark .form-control:focus,
.theme-dark .form-control {
background-color: transparent !important;
}
.theme-dark .tabs-no-border a {
background-color: transparent !important;
}
.theme-dark .header,
.theme-dark #footer-bar {
background-color: rgba(11, 14, 18, 0.8);
color: #FFF;
}
.theme-dark .menu,
.theme-dark .interest-check label {
background-color: rgba(23, 26, 31, 0.8);
color: #FFF;
}
/*Styles used to showcase the demo product on ThemeForest and create backgrounds. These can be deleted to increase speed of loading*/
.bg-0 {
background-image: url(../images/pictures/0l.jpg);
}
.bg-1 {
background-image: url(../images/pictures/1.jpg);
}
.bg-2 {
background-image: url(../images/pictures/2.jpg);
}
.bg-3 {
background-image: url(../images/pictures/3.jpg);
}
.bg-4 {
background-image: url(../images/pictures/4.jpg);
}
.bg-5 {
background-image: url(../images/pictures/5.jpg);
}
.bg-6 {
background-image: url(../images/pictures/6.jpg);
}
.bg-7 {
background-image: url(../images/pictures/7.jpg);
}
.bg-8 {
background-image: url(../images/pictures/8.jpg);
}
.bg-9 {
background-image: url(../images/pictures/9.jpg);
}
.bg-10 {
background-image: url(../images/pictures/10.jpg);
}
.bg-11 {
background-image: url(../images/pictures/11.jpg);
}
.bg-12 {
background-image: url(../images/pictures/12.jpg);
}
.bg-13 {
background-image: url(../images/pictures/13.jpg);
}
.bg-14 {
background-image: url(../images/pictures/14.jpg);
}
.bg-15 {
background-image: url(../images/pictures/15.jpg);
}
.bg-16 {
background-image: url(../images/header.png);
}
.bg-17 {
background-image: url(../images/pictures/17.jpg);
}
.bg-18 {
background-image: url(../images/pictures/18.jpg);
}
.bg-19 {
background-image: url(../images/pictures/19.jpg);
}
.bg-20 {
background-image: url(../images/pictures/20.jpg);
}
.bg-21 {
background-image: url(../images/pictures/21.jpg);
}
.bg-22 {
background-image: url(../images/pictures/22.jpg);
}
.bg-23 {
background-image: url(../images/pictures/23.jpg);
}
.bg-24 {
background-image: url(../images/pictures/24.jpg);
}
.bg-25 {
background-image: url(../images/pictures/25.jpg);
}
.bg-26 {
background-image: url(../images/pictures/26.jpg);
}
.bg-27 {
background-image: url(../images/pictures/27.jpg);
}
.bg-28 {
background-image: url(../images/pictures/28.jpg);
}
.bg-29 {
background-image: url(../images/pictures/29.jpg);
}
.bg-30 {
background-image: url(../images/pictures/30.jpg);
}
.bg-31 {
background-image: url(../images/pictures/31.jpg);
}
.bg-32 {
background-image: url(../images/pictures/32.jpg);
}
.bg-33 {
background-image: url(../images/pictures/33.jpg);
}
.bg-34 {
background-image: url(../images/pictures/34.jpg);
}
.bg-aurora{
background-image: url(../images/header.png);
}
/*Demo Colors*/
.demo-color {
display: block;
width: 100%;
line-height: 45px;
padding-left: 10px;
text-transform: capitalize;
border-bottom: solid 1px rgba(255, 255, 255, 0.05);
}
.demo-color strong {
display: block;
font-size: 9px;
margin-top: -25px;
padding-bottom: 3px;
font-weight: 400;
opacity: 0.8;
}
.demo-color span {
font-size: 10px;
position: absolute;
right: 20px;
line-height: 48px;
color: rgba(255, 255, 255, 0.5);
}
/* Lightbox v2.10.0 Copyright 2007, 2018 Lokesh Dhakar Released under the MIT license */
.lb-loader, .lightbox {
position: fixed;
text-align: center;
line-height: 0;
left: 0;
}
.lb-dataContainer:after, .lb-outerContainer:after {
content: "";
clear: both;
}
html.lb-disable-scrolling {
overflow: hidden;
position: fixed;
height: 100vh;
width: 100vw;
}
.lightboxOverlay {
position: fixed;
top: 0;
bottom: 0 !important;
left: 0;
z-index: 9999;
height: 100% !important;
width: 100% !important;
background-color: #000;
filter: alpha(Opacity=80);
opacity: 1;
display: none;
overflow: hidden;
}
.lightbox {
right: 0;
bottom: 0;
top: 50% !important;
transform: translateY(-50%);
width: 100%;
z-index: 10000;
font-weight: 400;
}
.lightbox .lb-image {
display: block;
height: auto;
max-width: inherit;
max-height: none;
border-radius: 3px;
}
.lightbox a img {
border: none;
}
.lb-outerContainer {
width: 250px;
height: 250px;
margin: 0 auto;
border-radius: 4px;
background-color: rgba(255, 255, 255, 0);
}
.lb-outerContainer:after {
display: table;
}
.lb-loader {
top: 50%;
height: 25%;
width: 100%;
}
.lb-cancel {
display: block;
width: 32px;
height: 32px;
margin: 0 auto;
background: url(../images/loading.gif) no-repeat;
}
.lb-nav {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 10;
}
.lb-container > .nav {
left: 0;
}
.lb-nav a {
outline: 0;
background-image: url(data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);
}
.lb-next, .lb-prev {
height: 100%;
cursor: pointer;
display: block;
}
.lb-nav a.lb-prev {
width: 34%;
left: 0;
float: left;
background: url(../images/prev.png) left 48% no-repeat;
filter: alpha(Opacity=0);
opacity: 0;
-webkit-transition: opacity .6s;
-moz-transition: opacity .6s;
-o-transition: opacity .6s;
transition: opacity .6s;
}
.lb-nav a.lb-prev:hover {
filter: alpha(Opacity=100);
opacity: 1;
}
.lb-nav a.lb-next {
width: 64%;
right: 0;
float: right;
background: url(../images/next.png) right 48% no-repeat;
filter: alpha(Opacity=0);
opacity: 0;
-webkit-transition: opacity .6s;
-moz-transition: opacity .6s;
-o-transition: opacity .6s;
transition: opacity .6s;
}
.lb-nav a.lb-next:hover {
filter: alpha(Opacity=100);
opacity: 1;
}
.lb-dataContainer {
margin: 0 auto;
padding-top: 5px;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
.lb-dataContainer:after {
display: table;
}
.lb-data {
padding: 0 4px;
color: #ccc;
}
.lb-data .lb-details {
width: 85%;
float: left;
text-align: left;
line-height: 1.1em;
}
.lb-data .lb-caption a {
color: #4ae;
}
.lb-data .lb-number {
display: block;
clear: left;
padding-bottom: 1em;
font-size: 12px;
color: #999;
}
.lb-data .lb-close {
display: block;
float: right;
width: 30px;
height: 30px;
background: url(../images/close.png) top right no-repeat;
text-align: right;
outline: 0;
filter: alpha(Opacity=70);
opacity: .7;
-webkit-transition: opacity .2s;
-moz-transition: opacity .2s;
-o-transition: opacity .2s;
transition: opacity .2s;
}
.lb-dataContainer, .lb-details {
width: 100% !important;
position: fixed;
}
.lb-data .lb-close:hover {
cursor: pointer;
filter: alpha(Opacity=100);
opacity: 1;
}
.lb-outerContainer {
position: fixed !important;
left: 50%;
top: 50%;
transform: translate(-50%, -50%) !important;
}
.lb-dataContainer {
bottom: -50%;
left: 0;
right: 0;
}
.lb-closeContainer {
position: fixed;
left: 50%;
bottom: -50%;
padding-bottom: 70px;
transform: scale(0.8, 0.8);
margin-left: -15px;
}
.lb-details {
padding-top: 30px;
top: -50%;
left: 0;
right: 0;
text-align: center !important;
}
.lb-data .lb-caption {
font-weight: 700;
line-height: 1em;
font-size: 16px;
padding-bottom: 5px;
}
/* Owl Custom Settings*/
.task-slider {
transform: translateX(-35px);
}
.task-slider .owl-stage-outer {
overflow: visible !important;
}
.single-slider {
z-index: 50 !important;
}
.single-slider img {
width: 100% !important;
}
.under-slider-btn {
z-index: 90;
margin-top: -53px;
margin-bottom: 0px;
}
.double-slider {
padding-left: 15px !important;
padding-right: 15px;
}
.double-slider .owl-stage-outer {
overflow: visible !important;
}
.double-slider .under-slider-button {
margin-bottom: -50px;
}
.cta-buttons {
display: block;
width: 280px;
margin: 0px auto -1px auto;
z-index: 10;
}
.cta-buttons a {
display: inline-block;
}
.owl-has-controls .owl-nav {
display: block !important;
}
.owl-has-controls .owl-prev {
margin-left: 15px;
}
.owl-has-controls .owl-next {
margin-right: 15px;
}
.slider-boxed {
padding: 0px 15px;
}
.slider-boxed * {
overflow: visible !important;
}
.slider-boxed .owl-nav {
margin-top: -25px !important;
}
.slider-boxed .owl-dots {
transform: translateX(0px) !important;
}
.carousel-boxed {
padding: 0px 15px;
}
.card-slider * {
overflow: visible !important;
}
.card-carousel * {
overflow: visible !important;
}
.cover-slider .owl-dots {
transform: translateY(-70px) !important;
}
.walkthrough-slider .owl-dots {
transform: translateY(-22px) !important;
}
.cover-button-bottom {
position: absolute;
left: 50px;
right: 50px;
bottom: 70px;
z-index: 99;
font-size: 12px;
}
.cover-button-top {
position: absolute;
width: 170px;
left: 50%;
margin-left: -85px;
top: 20px;
top: calc(20px + (constant(safe-area-inset-top))*1.1) !important;
top: calc(20px + (env(safe-area-inset-top))*1.1) !important;
z-index: 99;
font-size: 12px;
}
.cover-next {
position: absolute;
z-index: 99;
bottom: 20px;
right: 0px;
}
.cover-prev {
position: absolute;
z-index: 99;
bottom: 20px;
left: 0px;
}
.cover-slider {
touch-action: pan-x;
}
.cover-slider .content {
margin-bottom: 0px !important;
}
/* Owl Carousel v2.2.1 Copyright 2013-2017 David Deutsch Licensed under ()*/
@keyframes "fadeOut" {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.owl-carousel {
-webkit-tap-highlight-color: transparent;
position: relative;
display: none;
width: 100%;
z-index: 1;
}
.owl-carousel .owl-item {
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-webkit-tap-highlight-color: transparent;
position: relative;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
min-height: 1px;
float: left;
-webkit-backface-visibility: hidden;
-webkit-touch-callout: none;
}
.owl-carousel .owl-item img {
display: block;
transform-style: preserve-3d;
}
.owl-carousel .owl-item .owl-lazy {
opacity: 0;
transition: opacity .4s ease;
}
.owl-carousel .owl-item img.owl-lazy {
transform-style: preserve-3d;
}
.owl-carousel .owl-wrapper {
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
}
.owl-carousel .owl-stage {
position: relative;
-ms-touch-action: pan-Y;
-moz-backface-visibility: hidden;
}
.owl-carousel .owl-stage:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
.owl-carousel .owl-stage-outer {
position: relative;
overflow: hidden;
-webkit-transform: translate3d(0, 0, 0);
}
.owl-carousel .owl-dots.disabled {
display: none;
}
.owl-carousel .owl-nav.disabled {
display: none;
}
.owl-carousel .owl-dot {
cursor: pointer;
cursor: hand;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.owl-carousel .owl-nav .owl-next {
cursor: pointer;
cursor: hand;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.owl-carousel .owl-nav .owl-prev {
cursor: pointer;
cursor: hand;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.owl-carousel .animated {
animation-duration: 1s;
animation-fill-mode: both;
}
.owl-carousel .owl-animated-in {
z-index: 0;
}
.owl-carousel .owl-animated-out {
z-index: 1;
}
.owl-carousel .fadeOut {
animation-name: fadeOut;
}
.owl-carousel .owl-video-wrapper {
position: relative;
height: 100%;
background: #000;
}
.owl-carousel .owl-video-play-icon {
position: absolute;
height: 80px;
width: 80px;
left: 50%;
top: 50%;
margin-left: -40px;
margin-top: -40px;
background: url(owl.video.play.png) no-repeat;
cursor: pointer;
z-index: 1;
-webkit-backface-visibility: hidden;
transition: transform .1s ease;
}
.owl-carousel .owl-video-play-icon:hover {
-ms-transform: scale(1.3, 1.3);
transform: scale(1.3, 1.3);
}
.owl-carousel .owl-video-playing .owl-video-play-icon {
display: none;
}
.owl-carousel .owl-video-playing .owl-video-tn {
display: none;
}
.owl-carousel .owl-video-tn {
opacity: 0;
height: 100%;
background-position: center center;
background-repeat: no-repeat;
background-size: contain;
transition: opacity .4s ease;
}
.owl-carousel .owl-video-frame {
position: relative;
z-index: 1;
height: 100%;
width: 100%;
}
.owl-carousel .card {
overflow: hidden !important;
}
.owl-dots {
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
text-align: center;
bottom: 5px;
width: 100%;
backface-visibility: hidden;
}
.no-js .owl-carousel {
display: block;
}
.owl-carousel.owl-loaded {
display: block;
}
.owl-carousel.owl-loading {
opacity: 0;
display: block;
}
.owl-carousel.owl-hidden {
opacity: 0;
}
.owl-carousel.owl-refresh .owl-item {
visibility: hidden;
}
.owl-carousel.owl-drag .owl-item {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.owl-carousel.owl-grab {
cursor: move;
cursor: grab;
}
.owl-carousel.owl-rtl {
direction: rtl;
}
.owl-carousel.owl-rtl .owl-item {
float: right;
}
.owl-height {
transition: all 250ms ease !important;
min-height: 500px;
height: auto !important;
height: 500px;
}
.owl-auto-height .owl-height {
transition: all 250ms ease-in-out !important;
}
.owl-dot {
-webkit-appearance: none;
appearance: none;
border: none !important;
overflow: hidden;
height: 14px;
transform: scale(0.8, 0.8);
transition: all 250ms ease;
border-radius: 50px;
display: inline-block;
background: rgba(139, 139, 139, 0.9);
margin-left: 3px;
margin-right: 3px;
}
.owl-dot.active {
transition: all 250ms ease;
background: #cacaca;
}
.owl-no-dots .owl-dots {
display: none !important;
}
.owl-no-dots .cover-content-bottom {
bottom: 0;
padding-bottom: 0;
}
.owl-nav {
position: absolute;
top: 50%;
z-index: 10;
left: 0;
right: 0;
}
.owl-next {
-webkit-appearance: none;
appearance: none;
background-color: transparent !important;
border: none !important;
width: 40px;
height: 50px;
position: absolute;
color: #FFF;
line-height: 50px;
text-align: center;
font-size: 30px;
margin-top: -25px;
right: 0;
}
.owl-prev {
-webkit-appearance: none;
appearance: none;
background-color: transparent !important;
border: none !important;
width: 40px;
height: 50px;
position: absolute;
color: #FFF;
line-height: 50px;
text-align: center;
font-size: 30px;
margin-top: -25px;
left: 0;
}
.owl-has-dots .owl-dots {
margin-top: 20px;
margin-bottom: 0;
}
.owl-has-dots-over .owl-dots {
margin-top: -40px;
margin-bottom: 10px;
}
.cover-slider {
touch-action: pan-x;
margin-bottom: 0;
}
.cover-slider .owl-dots {
z-index: 99;
margin-top: -27px;
transform: translateY(-110px) !important;
}
.cover-slider [data-height=cover] {
margin-bottom: 0 !important;
}
.next-slide {
color: #FFF;
width: 35px;
line-height: 35px;
text-align: center;
position: absolute;
margin-top: -10px;
top: 50%;
transform: translateY(-70%);
z-index: 99;
right: 15px;
}
.prev-slide {
color: #FFF;
width: 35px;
line-height: 35px;
text-align: center;
position: absolute;
margin-top: -10px;
top: 50%;
transform: translateY(-70%);
z-index: 99;
left: 15px;
}
.owl-dots-over .owl-dots {
transform: translateY(-60px);
margin-bottom: -10px;
}
.owl-dots-cover .owl-dots {
transform: translateY(-20px) !important;
margin-bottom: 3px;
}
.owl-dots-under .owl-dots {
transform: translateY(0px);
margin-bottom: 10px;
}
.owl-dots-small .owl-dots {
transform: translateY(-20px);
margin-bottom: 10px;
}
.owl-dots-no-footer .owl-dots {
transform: translateY(-18px) !important;
}
.double-slider {
touch-action: pan-x;
margin-left: -20px;
}
.slider-boxed {
margin-left: -20px;
}
/* Owl Custom Settings*/
.task-slider {
transform: translateX(-35px);
}
.task-slider .owl-stage-outer {
overflow: visible !important;
}
.story-slider .owl-stage-outer {
overflow: visible !important;
}
.story-slider {
margin-left: -20px;
}
.topic-slider h1 a {
color: #cacaca;
}
/*Owl Carousel Buttons*/
.owl-bottom-button {
position: fixed;
bottom: 0px;
left: 0px;
right: 0px;
z-index: 2;
}
================================================
FILE: webserver/static/images/icons/license.txt
================================================
https://www.iconfinder.com/iconsets/round-varieties
19 PNG icons by Creaticca Ltd - License: Creative Commons (Attribution 3.0 Unported)
================================================
FILE: webserver/static/images/undraw/_license_and_link.rtf
================================================
{\rtf1\ansi\ansicpg1252\cocoartf2512
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\froman\fcharset0 Times-Roman;\f2\fswiss\fcharset0 Helvetica-Bold;
}
{\colortbl;\red255\green255\blue255;\red0\green0\blue233;\red63\green63\blue63;\red255\green255\blue255;
}
{\*\expandedcolortbl;;\cssrgb\c0\c0\c93333;\cssrgb\c31373\c31373\c31373;\cssrgb\c100000\c100000\c100000;
}
\margl1440\margr1440\vieww25360\viewh18140\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs36 \cf0 \
Free Illustrations URL: {\field{\*\fldinst{HYPERLINK "https://undraw.co/illustrations"}}{\fldrslt
\f1\fs24 \cf2 \expnd0\expndtw0\kerning0
\ul \ulc2 \outl0\strokewidth0 \strokec2 https://undraw.co/illustrations}}\
License URL: {\field{\*\fldinst{HYPERLINK "https://undraw.co/license"}}{\fldrslt
\f1\fs24 \cf2 \expnd0\expndtw0\kerning0
\ul \ulc2 \outl0\strokewidth0 \strokec2 https://undraw.co/license}}\
\pard\pardeftab720\sa480\partightenfactor0
\f2\b\fs32 \cf3 \cb4 \expnd0\expndtw0\kerning0
\outl0\strokewidth0 \strokec3 Copyright\'a02020\'a0Katerina Limpitsouni\
\pard\pardeftab720\sl480\sa320\partightenfactor0
\f0\b0 \cf3 All images, assets and vectors published on unDraw can be used for free. You can use them for noncommercial and commercial purposes. You do not need to ask permission from or provide credit to the creator or unDraw.\
More precisely, unDraw grants you an nonexclusive, worldwide copyright license to download, copy, modify, distribute, perform, and use the assets provided from unDraw for free, including for commercial purposes, without permission from or attributing the creator or unDraw. This license does not include the right to compile assets, vectors or images from unDraw to replicate a similar or competing service, in any form or distribute the assets in packs. This extends to automated and non-automated ways to link, embed, scrape, search or download the assets included on the website without our consent.\
\pard\pardeftab720\sa480\partightenfactor0
\f2\b \cf3 Regarding brand logos that are included:\
\pard\pardeftab720\sl480\sa320\partightenfactor0
\f0\b0 \cf3 Are registered trademarks of their respected owners. Are included on a promotional basis and do not represent an association with unDraw or its users. Do not indicate any kind of endorsement of the trademark holder towards unDraw, nor vice versa. Are provided with the sole purpose to represent the actual brand/service/company that has registered the trademark and must not be used otherwise.\
}
================================================
FILE: webserver/static/js/aurora-configure.js
================================================
function fetch_config_data() {
ajax_send_data = {}
ajax_send_data["pixelcount_left"] = $('#aurora_configure_left').val()
ajax_send_data["pixelcount_right"] = $('#aurora_configure_right').val()
ajax_send_data["pixelcount_top"] = $('#aurora_configure_top').val()
ajax_send_data["pixelcount_bottom"] = $('#aurora_configure_bottom').val()
ajax_send_data["darkthreshhold"] = $('#aurora_config_darkthreshhold').val()
ajax_send_data["hdmi_gamma"] = $('#hdmi_gamma').val()
return ajax_send_data
}
$('#aurora_configure_save_button').on("click", function (event) {
ajax_send_data = fetch_config_data()
ajax_send_data["save"] = true
ajax_save_config = make_AJAX_Call("/update_LED_config", ajax_send_data)
if (ajax_save_config["status"] == "ok") {
reload_pixel_image();
create_snackbar("Pixel Configuration", "Successfully saved system config", "success")
}
});
//Stepper Add
$('.stepper-add').on('click',function(){
var num = +$(this).parent().find('input').val() + 1;
$(this).parent().find('input').val(num);
//return false;
});
$('.stepper-sub').on('click',function(){
var num = $(this).parent().find('input').val() - 1;
if(num >= 0){$(this).parent().find('input').val(num);}
//return false;
});
$('.stepper-add, .stepper-sub').on("click", function (event) {
ajax_send_data = fetch_config_data()
ajax_response = make_AJAX_Call("/update_LED_config", ajax_send_data);
if (ajax_response["status"] == "ok") {
reload_pixel_image();
}
})
$('#hdmi_hue, #hdmi_saturation,#hdmi_brightness,#hdmi_contrast,#hdmi_gamma').on("slideStop", function (event) {
val = $(this).val()
id = $(this).attr("id")
setHDMIValues();
})
function save_hdmi_image()
{
ajax_send_data = fetch_config_data()
ajax_send_data["save"] = true
ajax_response = make_AJAX_Call("/update_HDMI_config", ajax_send_data);
if (ajax_response["status"] == "ok") {
make_AJAX_Call("/screenshot/", {})
reload_hdmi_image();
}
}
function reloadImages() {
make_AJAX_Call("/screenshot/", {})
d = new Date();
$("#image_screenshot").attr("src", "/load_screenshot?" + d.getTime());
$("#image_pixels").attr("src", "/load_pixel_image?" + d.getTime());
secondsBeforeReload = 5;
}
function setHDMIValues()
{
ajax_send_data = fetch_config_data()
ajax_response = make_AJAX_Call("/update_HDMI_config", ajax_send_data);
if (ajax_response["status"] == "ok") {
make_AJAX_Call("/screenshot/", {})
reload_hdmi_image();
}
}
function reset_gamma(hue_gamma)
{
$('#hdmi_gamma').slider('setValue',hue_gamma)
setHDMIValues()
}
================================================
FILE: webserver/static/js/aurora-generic.js
================================================
currentAjaxRequest = null; // Stores our current ajax request so we can cancel it if we do another
function togglePower()
{
make_AJAX_Call("/toggleEnable",[],function() {
$('#powerToggle').toggleClass("color-theme")
})
}
function make_AJAX_Call(url, data_dict, callback_function = false) {
return_result = false;
async_state = false
if (callback_function) {
async_state = true
}
currentAjaxRequest = $.ajax({
type: "POST",
url: url,
data: JSON.stringify(data_dict),
contentType: 'application/json',
dataType: 'json',
async: async_state, //we wait for these!
success: function (data) {
if (data["status"] == "error") {
create_snackbar("Aurora Error", data["error"], "error")
}
if (callback_function) {
callback_function(data)
}
return_result = data
},
error: function (data) {
console.log("Error with AJAX reqest to " + url + " with ASync set to " + async_state + " returned the following:");
console.log(data);
return_result = data
},
beforeSend: function () {
if (currentAjaxRequest != null) {
currentAjaxRequest.abort();
}
},
});
//console.log("returning " + return_result["status"])
return return_result
}
function create_snackbar(heading, message, type) {
col = "bg-highlight"
if (type == "success") {
col = "bg-green-dark"
}
else if (type == "error") {
col = "bg-red-dark"
}
snackDivUniqueID = "aurora_snackbar"
snackDiv = $('
× ' + heading + ' ' + message + '
')
$('#' + snackDivUniqueID).remove(); // if the prev one exists lets get rid of it
$('body').prepend(snackDiv);
$('#' + snackDivUniqueID).toast('show');
return "okay done"
}
//These arent that 'generic', but its used on multiple pages so its going here.
function showExtensionDetails(name) {
if ($('#extension_details').is(':visible') == false) {
$('#extension_details').slideDown();
}
//The 'extensions' dict is loaded onto pages that have it
//TODO: this is hacky and should be properly loaded in
extDetails = extensions[name]
$('#ext_description').text(extDetails.Description)
$('#ext_author').text(extDetails.Author)
}
function loadExtension(extension_name = false) {
if (extension_name == false) {
extension_name = $('#aurora_extension_dropdown').val()
}
data = { 'extension_name': extension_name }
ajax_response = make_AJAX_Call("/update_extension", data)
console.log(ajax_response);
if (ajax_response["status"] == "ok") {
create_snackbar("Extension Load", "Successfully loaded extension", "success")
}
}
function reload_pixel_image() {
pixel_image_reload = make_AJAX_Call("/screenshot/", {})
//console.log(pixel_image_reload)
if (pixel_image_reload["status"] == "ok") {
d = new Date();
$("#pixel_image").attr("src", "/load_pixel_image?" + d.getTime());
}
else {
console.log(pixel_image_reload)
}
}
function reload_hdmi_image() {
pixel_image_reload = make_AJAX_Call("/screenshot/", {})
d = new Date();
$("#image_screenshot").attr("src", "/load_screenshot?" + d.getTime());
console.log("/load_screenshot?" + d.getTime())
}
================================================
FILE: webserver/static/js/aurora-index.js
================================================
function change_system_status()
{
$('#toggle_aurora_enabled').prop("disabled",true)
enabled_stats = $('#toggle_aurora_enabled').prop('checked');
data = {"enabled":enabled_stats}
system_status_call = make_AJAX_Call("/update_config",data,toast_system_status)
$('#toggle_aurora_enabled').prop("disabled",false)
}
function toast_system_status(system_status_call)
{
if(system_status_call["status"] == "ok")
{
if(system_status_call["message"])
{
create_snackbar("System Enabled Status",system_status_call["message"],"success")
}
else
{
create_snackbar("System Enabled Status","Successfully saved system config","success")
}
}
}
$('#aurora_extension_dropdown').on("change", function() { showExtensionDetails(this.value)})
$('#toggle_aurora_enabled').on('click',function(){ change_system_status() })
================================================
FILE: webserver/static/js/aurora-view.js
================================================
function change_system_status() {
$('#toggle_aurora_enabled').prop("disabled", true)
enabled_stats = $('#toggle_aurora_enabled').prop('checked');
data = { "enabled": enabled_stats }
system_status_call = make_AJAX_Call("/update_config", data, toast_system_status)
$('#toggle_aurora_enabled').prop("disabled", false)
}
function toast_system_status(system_status_call) {
if (system_status_call["status"] == "ok") {
create_snackbar("System Enabled Status", "Successfully saved system config", "success")
}
}
$('#aurora_extension_dropdown').on("change", function () { showExtensionDetails(this.value) })
$('#toggle_aurora_enabled').on('click', function () { change_system_status() })
var secondsBeforeReload = 5;
function reloadImages() {
make_AJAX_Call("/screenshot/", {})
d = new Date();
$("#image_screenshot").attr("src", "/load_screenshot?" + d.getTime());
$("#image_pixels").attr("src", "/load_pixel_image?" + d.getTime());
secondsBeforeReload = 5;
}
function reloadCounter() {
if ($('#toggle_images_reload').prop("checked")) {
secondsBeforeReload--
$('#reloadTime').text("(reloading in " + secondsBeforeReload + "s)")
if (secondsBeforeReload == 0) {
reloadImages();
}
}
}
var reloadTimer = setInterval(reloadCounter, 1000);
================================================
FILE: webserver/static/js/custom.js
================================================
$(window).on('load',function(){
$('.menu').css('display','block');
$('#preloader').addClass('preloader-hide');
})
$(document).ready(function(){
'use strict'
/*Global Settings*/
var isAJAX = false; //Enables or disable AJAX page transitions and loading.
var isDevMode = false; // Enables development mode. Clean cache & Stops BG & Highlights from changing defaults and adds reload button for PWA refresh
/*PWA Settings*/
var pwaEnabled = true; // activate the PWA and all settings below
var pwaNoCache = true; // always keep the cache clear to serve the freshest possible content
var pwaRemind = 1; // how many days after the user rejects / clicks maybe later to re-show the install pwa window. set 0 to always.
/*Menu Extender Global Function*/
$.fn.showMenu = function() {$(this).addClass('menu-active'); $('#footer-bar').addClass('footer-menu-hidden');setTimeout(function(){$('.menu-hider').addClass('menu-active');},250);};
$.fn.hideMenu = function() {$(this).removeClass('menu-active'); $('#footer-bar').removeClass('footer-menu-hidden');$('.menu-hider').removeClass('menu-active');};
//ADD YOUR CUSTOM JAVASCRIPT CODES HERE!
//Do not put inside HTML files.
//The init_template() function will be triggered when pages open.
function init_template(){
$("#hdmi_hue, #hdmi_saturation,#hdmi_brightness,#hdmi_contrast,#hdmi_gamma").slider({
tooltip: 'always'
});
//Disable Page Jump on Empty Links.
$('a').on('click', function(){var attrs = $(this).attr('href'); if(attrs === '#'){return false;}});
//Adding Background for Gradient
if(!$('.menu-hider').length){$('#page').append('
================================================
FILE: webserver/templates/index.html
================================================
{% include 'header.html' %}
{% if configured == False %}
Not configured
Please configure your LEDs now
×
{% endif %}
Current Loaded extension
{%if current_extension_meta == False %}
No extension currently running.
{% endif %}{{current_extension_meta['Name']}}
{{current_extension_meta['Description']}}
{{current_extension_meta['Author']}}
Load Extension
Select an extension
{% for key,extension_meta in extensions_meta.items() %}
{{extension_meta['Name']}}
{% endfor %}
Extension Details
Please select an extension
Extension Author
{% include 'footer.html' %}
================================================
FILE: webserver/templates/menu-colors.html
================================================
Awesome
================================================
FILE: webserver/templates/menu-footer.html
================================================
AppKit
Built to match the design trends and give your page the awesome facelift it deserves.
================================================
FILE: webserver/templates/menu-share.html
================================================
================================================
FILE: webserver/templates/status.json
================================================
{
"enabled": {{enabled}},
"current_extension": "{{current_extension}}",
"current_extension_class": "{{current_extension_class}}",
"current_version": "{{current_version}}"
}
================================================
FILE: webserver/templates/view.html
================================================
{% include 'header.html' %}
Pixels (Currently: {{fps}} FPS)
NeoPixel View
Auto Reload (reloading in 5s)
HDMI View
Image
Pixel Image View
{% include 'footer.html' %}
================================================
FILE: webserver/templates/header.html
================================================