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 ================================================ [![Slack](https://img.shields.io/badge/slack-chat-green.svg)](https://join.slack.com/t/auroraambientlighting/shared_invite/zt-sib46ode-0rE3GqXFEcHd_H_y_nG~oA) ![Aurora Example](https://github.com/AndrewMohawk/Aurora/raw/master/github/Aurora_Ambient_Light_test_video.gif) # 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: ![Aurora Flow diagram](https://www.andrewmohawk.com/wp-content/uploads/2021/05/Aurora-Flow-Diagram.png) 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('